Arduino persoonlijke Soundtrack Hoodie (5 / 6 stap)

Stap 5: Code

Het grootste deel van de code is voor de WaveShield, gebaseerd op http://www.ladyada.net/make/waveshield/
Er zijn verschillende voorbeelden van de multi knop rond - ik gebruikte een mash-up op basis van Rayshobby blog http://rayshobby.net/?p=16 met een beetje van dit één, in gegooid.
Willekeurige selectie code voor de laatste knop is aangepast van www.arduino.cc/en/Tutorial/Blink & www.arduino.cc/en/Reference/Random.

#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include "WaveUtil.h"
#include "WaveHC.h"

int buttonPinR = 0;  Rechterarm knoppen op analoge pin 0
int buttonValueR = 0;
int buttonPinL = 1;  Linker arm knoppen op analoge pin 1
int buttonValueL = 0;

lange randChoose = 0; Initialiseren van willekeurige element
lange randNumber;

Kaart van de SdReader;    Dit object bevat de gegevens voor de kaart
FatVolume vol;    Dit houdt de informatie voor de partitie op de kaart
FatReader wortel;   Dit bevat de gegevens voor het bestandssysteem op de kaart
F FatReader;      Dit bevat de gegevens voor het bestand we aan het spelen bent

WaveHC Golf;      Dit is de enige Golf (audio) object, omdat we zullen slechts één filter tegelijk spelen

int wasplaying = 0;
int rVal;

deze handige functie geeft het aantal bytes in het RAM, momenteel gratis groot voor debugging!
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
Als (__brkval (int) == 0) {}
FREE_MEMORY = ((int) & free_memory)-((int) & __bss_end);
}
else {}
FREE_MEMORY = ((int) & free_memory)-((int) __brkval);
}
Return free_memory;
}

VOID sdErrorCheck(void)
{
Als (! card.errorCode()) keren;
putstring ("\n\rSD I/O fout:");
Serial.Print(Card.ErrorCode(), HEX);
putstring (",");
Serial.println(Card.errorData(), HEX);
while(1);
}

VOID Setup
{
Serial.begin(9600);
Serial.println ("Wave test!");
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (13, OUTPUT);

randomSeed (analogRead (1)); Setup random getal-generator

Als (! card.init(true)) {//play met 4 MHz spi als 8MHz niet voor u werkt
Als (! card.init()) {//play met 8 MHz spi (standaard sneller!)
putstring_nl ("Card init. mislukt!");  Er ging iets mis, laat uitprinten waarom
sdErrorCheck();
while(1);                            vervolgens 'stoppen' - niets doen!
}

inschakelen optimaliseren lees - sommige kaarten kunnen timeout. Uitschakelen als u problemen ondervindt
card.partialBlockRead(true);

Nu gaan we voor een FAT-partitie!
uint8_t deel;
voor (deel = 0; deel < 5; deel ++) {/ / Wij hebben maximaal 5 "slots" om in te kijken
Als (vol.init (kaart, deel))
breken;                             We vonden een, laat borgtocht
}
Als (deel == 5) {/ / als we uiteindelijk niet het vinden van een :(
putstring_nl ("geen geldige FAT-partitie!");
sdErrorCheck();      Er ging iets mis, laat uitprinten waarom
while(1);                            vervolgens 'stoppen' - niets doen!
}

Laat de gebruiker te vertellen over wat we gevonden
putstring ("Using partitie");
Serial.Print (deel, DEC);
putstring (", type is vet");
Serial.println(vol.fatType(),DEC);     FAT16 of FAT32?

Probeert te openen van de root directory
Als (! root.openRoot(vol)) {}
putstring_nl ("kan niet openen root dir!"); Er ging iets mis,
while(1);                             vervolgens 'stoppen' - niets doen!
}

Oef! Daar kregen we voorbij de harde delen.
putstring_nl("Ready!");

}
Knoppen gekalibreerd met een 10K Ohm weerstand op de 5v pin met een 9v batterij aangesloten op de stekker van de Arduino.
Gebruik de waarden van uw analoge Lees schets aan de beugel van de waarde die aan elke knop is toegewezen. Jou kan variëren van degene die hier zijn toegewezen.

Rechterarm knoppen op pin 0

void loop {}
buttonValueR = analogRead(buttonPinR);
Als (buttonValueR > 645 & & buttonValueR < 660) {}
playcomplete ("R1. WAV");
}
delay(25); Het is altijd goed om langzaam dingen neer een beetje bij het lezen van ingangen

Als (buttonValueR > 225 & & buttonValueR < 240) {}
playcomplete ("R2. WAV");
}

delay(25);

Als (buttonValueR > 165 & & buttonValueR < 185) {}
playcomplete ("R3. WAV");
}

delay(25);

Als (buttonValueR > 325 & & buttonValueR < 345) {}
playcomplete ("R4. WAV");
}

delay(25);

Als (buttonValueR > 495 & & buttonValueR < 515) {}
playcomplete ("R5. WAV");
}

Linker arm knoppen op pin 1

buttonValueL = analogRead(buttonPinL);
Als (buttonValueL > 645 & & buttonValueL < 660) {}
playcomplete ("L1. WAV");
}
delay(25);

Als (buttonValueL > 225 & & buttonValueL < 245) {}
playcomplete ("L2. WAV");
}

delay(25);

Als (buttonValueL > 165 & & buttonValueL < 185) {}
playcomplete ("L3. WAV");
}

delay(25);

Als (buttonValueL > 325 & & buttonValueL < 350) {}
playcomplete ("L4. WAV");
}

delay(25);

Het geluid effect afgespeeld wanneer de laatste toets op de linker arm randomize

Als (buttonValueL > 495 & & buttonValueL < 515) {}
randChoose = willekeurige (1, 20); genereren van een keuze tussen 1 en 20
schakelaar (randChoose)
{
Case 1:
playcomplete ("RAND1. WAV");
breken;
Case 2:
playcomplete ("RAND2. WAV");
breken;
Case 3:
playcomplete ("RAND3. WAV");
breken;
Case 4:
playcomplete ("RAND4. WAV");
breken;
Case 5:
playcomplete ("RAND5. WAV");
breken;
Case 6:
playcomplete ("RAND6. WAV");
breken;
Case 7:
playcomplete ("RAND7. WAV");
breken;
zaak 8:
playcomplete ("RAND8. WAV");
breken;
Case 9:
playcomplete ("RAND9. WAV");
breken;
zaak 10:
playcomplete ("RAND10. WAV");
breken;
zaak 11:
playcomplete ("RAND11. WAV");
breken;
zaak 12:
playcomplete ("RAND12. WAV");
breken;
zaak 13:
playcomplete ("RAND13. WAV");
breken;
geval 14:
playcomplete ("RAND14. WAV");
breken;
Case 15:
playcomplete ("RAND15. WAV");
breken;
case 16:
playcomplete ("RAND16. WAV");
breken;
koffer 17:
playcomplete ("RAND17. WAV");
breken;
Case 18:
playcomplete ("RAND18. WAV");
breken;
Case 19:
playcomplete ("RAND19. WAV");
breken;
Case 20:
playcomplete ("RAND20. WAV");
breken;
}
delay(25);

}
}

Speelt een volledige bestand van begin tot eind met geen pauze.
ongeldig playcomplete(char *name) {}
Bel onze helper vinden en spelen deze naam
playfile(name);
terwijl (wave.isplaying) {}
niets te doen tijdens het spelen van haar
}
nu zijn gedaan afspelen
}

ongeldig playfile(char *name) {}
Zie als de Golf-object is momenteel bezig met iets
Als (wave.isplaying) {/ / al het spelen van iets, dus stoppen met het!
Wave.stop(); Stop ermee
}
kijken in de root directory en open het bestand
Als (! f.open (root, naam)) {}
putstring kon niet ("open bestand"); Serial.Print(name); terugkeer;
}
OK lees het bestand en zet hem in een golf-object
Als (! wave.create(f)) {}
putstring_nl ("niet een geldig WAV"); terugkeer;
}

OK tijd om te spelen! Start het afspelen
Wave.Play();
}

Gerelateerde Artikelen

Speaker Tee: A Reality [Beta]

Speaker Tee: A Reality [Beta]

%%%%%%%%%%%%%%%%%%%Dus, April dwazen is gekomen en gegaan en ThinkGeek de dwaze lijn van producten heeft al een goede lach. Maar een van de producten trof me als iets volkomen mogelijk en cool. Dat was de Persoonlijke Soundtrack T-Shirt, dus heb ik b
Stille Annoyatron

Stille Annoyatron

je zou denken dat een stille versie van ThinkGeek van Annoyatron zou zinloos zijn. Maar je zou verkeerd, want het is eigenlijk een geheel nieuwe manier te voeren psychologische oorlogsvoering op uw officemates. Gewoon aansluiten op hun computer micro
Arduino LilyPad Duck dynastie Hoodie met geluids- en LED-verlichting

Arduino LilyPad Duck dynastie Hoodie met geluids- en LED-verlichting

maakte ik een eend dynastie thema hoodie met een LilyPad Arduino met 3 schakelaars van de sensor van de rits te activeren van 3 verschillende acties/programma's op de achterkant van de hoodie. De rits is de sleutel tot het activeren van deze schakelo
Persoonlijke Black Box - Arduino Mega ultieme GPS-schild + LSM303

Persoonlijke Black Box - Arduino Mega ultieme GPS-schild + LSM303

persoonlijke Black Box gebruiken:-Arduino Mega 2560- Ultieme GPS datalogger schild- Triple-axis versnellingsmeter + Magnetometer (LSM303)Ik leerde al snel na de vele moeilijkheden met behulp van de gps-shield met een Arduino Uno, dat ik was ver boven
Slimme persoonlijke Thermometer met Arduino

Slimme persoonlijke Thermometer met Arduino

Dit instructable is opgesteld als onderdeel van onze opdracht voor TfCD (technologie voor conceptontwerp) cursus bij TU Delft. De volgende instructable wordt bereid door:Bo Koperdraat: 4209567Karthik Mahadevan: 4501578In dit instructable leert u hoe
Persoonlijke Arduino Quiz

Persoonlijke Arduino Quiz

Deze Arduino-Quiz is de kale elektronica die nodig is om een awesome, draagbare quiz! In dit Instructable leert u hoe kabellengte tot dit uitstekende educatieve project. Geen behuizing is opgenomen, omdat ik wil dat je om te denken van een koele behu
Hoe een Android telefoon rechtstreeks verbinden met een Arduino (USB OTG) (Via een persoonlijke Massager)

Hoe een Android telefoon rechtstreeks verbinden met een Arduino (USB OTG) (Via een persoonlijke Massager)

IntroductieDit project wordt gebracht aan u door Comingle.io, de Open-Source Sex Toybedrijf. We zijn de lancering van een gloednieuwe crowdfunding campagne athttp://igg.me/at/mod voor de financiering van de massa-productie van een nieuwe volledig hac
Arduino gecontroleerd persoonlijke ventilator met Ping Sensor / ATtiny2313

Arduino gecontroleerd persoonlijke ventilator met Ping Sensor / ATtiny2313

Wat doet dit?Dit is een ventilator die automatisch komt op als ik ga zitten op mijn werkbank en uitschakelen wanneer ik verlaat.Het maakt gebruik van een Ultrasone afstandssensor, of ook wel genoemd een "Ping" sensor voor detectie.Een ATtiny2313
Persoonlijke beveiligingssysteem met behulp van Arduino

Persoonlijke beveiligingssysteem met behulp van Arduino

Hier is gewoon een eenvoudige gids over het maken van uw eigen mini "security system" met behulp van een Arduino. Dit is gewoon een leuke project, neem dan eigenlijk niet beroepen op dit apparaat om je huis te beveiligen! Dit ontwerp maakt gebru
Persoonlijke weerstation arduino Hebreeuws

Persoonlijke weerstation arduino Hebreeuws

הרעיון בפרויקט זה הוא ליצור שילוב של נתוני מזג אוויר המגיעים מלוח ארדוינו הנמצא בבית, ומהאינטרנט, ולאפשר למשתמש הן חיווי הנובע מהנתונים והן ביצוע פעולות פשוטות כמו הדלקה וכיבוי של תאורה מקומית (או כל מכשיר אחר המחובר לשקע הנשלט על ידי הלוח או מופעל ב
Ambilight systeem voor elke input aangesloten op uw TV. WS2812B Arduino UNO Raspberry Pi

Ambilight systeem voor elke input aangesloten op uw TV. WS2812B Arduino UNO Raspberry Pi

Ik heb altijd al wilde ambilight toevoegen aan mijn TV. Het ziet er zo cool! Ik eindelijk deed en ik was niet teleurgesteld!Ik heb veel video's en veel tutorials over het maken van een Ambilight-systeem voor uw TV, maar ik heb nooit gevonden een voll
Automatisch sproeisysteem systeem met capacitieve sonde en Arduino op de goedkope (en ik bedoel het)

Automatisch sproeisysteem systeem met capacitieve sonde en Arduino op de goedkope (en ik bedoel het)

Disclaimer: Ik ben geen ingenieur elektronica, dus kan ik niet garantie voor het ontwerp (veel minder voor uw implementatie bieden). Ik weet alleen de gepresenteerde oplossing werkte voor mij voor ten minste ongeveer 5-6 maanden (dus ik kan niet zelf
Arduino IoT weer klok

Arduino IoT weer klok

In dit Instructable bouwen we een klok die ook binnen en buiten de klimatologische omstandigheden toont.Ik gebruikte om een koele kleine klok die, naast het vertellend de tijd, ook de temperatuur in het huis, de datum en de buitentemperatuur via een
De NerdClock: Een RGB-Binary Clock [Arduino Software]

De NerdClock: Een RGB-Binary Clock [Arduino Software]

IntroductieBinaire klokken zijn een werkelijk koele manier om aan te tonen van de tijd op een mysterieuze manier. En voor degenen die niet weten hoe om te lezen dat soort klok is een eenvoudige, maar effectieve manier omhoog uw nerdiness niveau hemel