Stap 42: Arduino Uno R3
De Arduino Uno R3 leest een 4-cijferige binaire waarde van de Arduino Mega 2560 en speelt een audio-bestand de binaire waarde is gekoppeld. Dit is de stem van de C3PO droid. Verwijzen naar de elektrische tekeningen voor aansluiting informatie.
John Guarnero
September 2014
#include
#include
#include
#include
int inp6 = 0;
int inp7 = 0;
int inp8 = 0;
int inp9 = 0;
int TC_Value = 8;
int Last_TC = 0;
int Demonstration_Value = 0;
int Last_Demonstration_Value = 1;
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
uint8_t dirLevel; inspringing van niveau voor bestand/map namen
dir_t dirBuf; buffer voor de map leest
/*
* Het definiëren van macro om foutberichten in het flash-geheugen
*/
#define error(msg) error_P(PSTR(msg))
Functioneren van de definities (we definiëren hen hier, maar de code is hieronder)
leegte spelen (FatReader & dir);
SETUP
VOID Setup {}
Serial.begin(9600); Seriële bibliotheek 9600 bps voor foutopsporing instellen
putstring_nl ("\nWave test!"); zeggen dat we wakker!
putstring ("vrije RAM:"); Dit kan helpen met het opsporen van fouten, uit RAM lopend is slecht
Serial.println(FreeRam());
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!)
fout ("Card init. mislukt!"); Er ging iets mis, laat uitprinten waarom
}
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, dus kom uit
}
Als (deel == 5) {/ / als we uiteindelijk niet het vinden van een :(
fout ("geen geldige FAT-partitie!"); Zeggen wat er mis ging
}
Laat de gebruiker te vertellen over wat er gebeurd is
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)) {}
fout kan niet ("open root dir!"); Er ging iets mis,
}
//
putstring_nl ("bestanden gevonden (* = gefragmenteerd):");
Afdrukken van alle bestanden in alle mappen.
root.ls(LS_R | LS_FLAG_FRAGMENTED);
}
HELPERS
/*
* afdrukken foutbericht en stoppen
*/
VOID error_P (const char * str) {}
PgmPrint ("fout:");
SerialPrint_P(str);
sdErrorCheck();
while(1);
}
ongeldig sdErrorCheck(void) {}
Als (! card.errorCode()) keren;
PgmPrint ("\r\nSD I/O fout:");
Serial.Print(Card.ErrorCode(), HEX);
PgmPrint (",");
Serial.println(Card.errorData(), HEX);
while(1);
}
Start van de Loop
void loop
{
byte i;
inp6 = digitalRead(6); Binaire 1
inp7 = digitalRead(7); Binaire 2
inp8 = digitalRead(8); Binaire 4
inp9 = digitalRead(9); Binaire 8
Als (inp6 == HIGH & & inp7 == LOW & & inp8 == LOW & & inp9 == LOW) / / 1 2 4 8
{//Happy verjaardag Emily
Serial.println("1");
TC_Value = 1;
playcomplete("1.wav");
vertraging (1);
}
Als (inp6 == LOW & & inp7 == HIGH & & inp8 == LOW & & inp9 == LOW) / / 1 2 4 8
{//Happy verjaardag Kim
Serial.println("2");
TC_Value = 2;
playcomplete("2.wav");
vertraging (1);
}
Als (inp6 == HIGH & & inp7 == HIGH & & inp8 == LOW & & inp9 == LOW) / / 1 2 4 8
{//Happy verjaardag Megan
Serial.println("3");
TC_Value = 3;
playcomplete("3.wav");
vertraging (1);
}
Als (inp6 == LOW & & inp7 == LOW & & inp8 == HIGH & & inp9 == LOW) / / 1 2 4 8
{//Welcome op het Guarnero-huis
Serial.println("4");
TC_Value = 4;
playcomplete("4.wav");
vertraging (1);
}
Als (inp6 == HIGH & & inp7 == LOW & & inp8 == HIGH & & inp9 == LOW) / / 1 2 4 8
{//Happy Halloween
Serial.println("5");
TC_Value = 5;
playcomplete("5.wav");
vertraging (1);
}
Als (inp6 == LOW & & inp7 == HIGH & & inp8 == HIGH & & inp9 == LOW) / / 1 2 4 8
{//Happy verjaardag
Serial.println("6");
TC_Value = 6;
playcomplete("6.wav");
vertraging (1);
}
Als (inp6 == HIGH & & inp7 == HIGH & & inp8 == HIGH & & inp9 == LOW) / / 1 2 4 8
{//Say sommige grappen
Serial.println("7");
TC_Value = 7;
playcomplete("7.wav");
vertraging (1);
}
Als (inp6 == LOW & & inp7 == LOW & & inp8 == LOW & & inp9 == HIGH) / / 1 2 4 8
{//Kim Saint dialoogvenster & Kim R2D2 dialoogvenster
Serial.println("8");
TC_Value = 8;
playcomplete("8.wav");
vertraging (1);
}
Als (inp6 == HIGH & & inp7 == LOW & & inp8 == LOW & & inp9 == HIGH) / / 1 2 4 8
{//Happy Thanksgiving
Serial.println("9");
TC_Value = 9;
playcomplete("9.wav");
vertraging (1);
}
Als (inp6 == LOW & & inp7 == HIGH & & inp8 == LOW & & inp9 == HIGH) / / 1 2 4 8
{//Kims broodjes dialoogvenster
Serial.println("10");
TC_Value = 10;
playcomplete("10.wav");
vertraging (1);
}
Als (inp6 == HIGH & & inp7 == HIGH & & inp8 == LOW & & inp9 == HIGH) / / 1 2 4 8
{//Master John & Lost In Space
Serial.println("11");
TC_Value = 11;
playcomplete("11.wav");
vertraging (1);
}
Als (inp6 == LOW & & inp7 == LOW & & inp8 == HIGH & & inp9 == HIGH) / / 1 2 4 8
{//Merry kerst
Serial.println("12");
TC_Value = 12;
playcomplete("12.wav");
vertraging (1);
}
Last_TC = TC_Value;
Serial.println(Last_TC);
//
}
Einde van de lus
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 afspelen van audio
}
Audio wordt gedaan spelen
}
ongeldig playfile(char *name) {}
Zie als de Golf-object is momenteel bezig met iets
Als (wave.isplaying) {/ / audio afspelen al zo stoppen
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();
}