Arduino Simon Says (3 / 4 steg)
Steg 3: Skiss mods
http://code.Google.com/p/Rogue-Code/wiki/ToneLibraryDocumentation
I grunden är hur ljud fungerar biblioteket skapar en fyrkantsvåg angivna frekvensen. Du definierar vad anteckningar du vill spelas i början av skissen. Du måste också ange hur länge varje not kommer att spelas. Bilden visar vad konstaterar biblioteket är kunna generera.
I detta fall definiera vi ett par låtar, starttune [] och [not]. Vi också definiera varaktigheten för varje melodi som varaktighet [] och Företagsvaraktighet 2 []. Starttune [] tune är mexikanska hatten dans melodin och Obs [] låten är avgift melodin.
int starttune [] = {NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_C4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4, NOTE_F4, NOTE_G4};
int Företagsvaraktighet 2 [] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100, 200, 100, 500};
int Observera [] = {NOTE_C4, NOTE_C4, NOTE_G4, NOTE_C5, NOTE_G4, NOTE_C5};
int längd [] = {100, 100, 100, 300, 100, 300};
Du kan ändra anteckningar och längd gånger skapa oavsett bit av musik du vill ha spelat. Längd gånger jag spelade med tills de lät rätt för mig. Men 100 uppgår till en 1/8 not, längd 200 är en fjärdedelsnot, 300 är i grunden en prickad fjärdedelsnot, 400 a halv anteckning och 500 en prickig halv anteckning. Enheten spelar genom tonerna ganska fort men du kan kontrollera hastigheten genom att placera en fördröjning i en slinga som spelar melodin. Om du ändrar antalet anteckningar används i någon av låtarna måste du uppdatera avsnittet där melodin spelas.
Att spela dessa låtar vi hoppa ner till detta avsnitt.
för (int thisNote = 0; thisNote < 13; thisNote ++) {
spela nästa anteckning:
speakerpin.Play(starttune[thisNote]);
Håll anteckningen:
om (thisNote == 0 || thisNote == 2 || thisNote == 4 || thisNote == 6)
{
digitalWrite (ledpin [0], hög);
}
om (thisNote == 1 || thisNote == 3 || thisNote == 5 || thisNote == 7 || thisNote == 9 || thisNote == 11)
{
digitalWrite (ledpin [1], hög);
}
om (thisNote == 8 || thisNote == 12)
{
digitalWrite (ledpin [2], hög);
}
om (thisNote == 10)
{
digitalWrite (ledpin [3], hög);
}
Delay(duration2[thisNote]);
stopp för nästa anteckning:
speakerpin.stop();
digitalWrite (ledpin [0], låg);
digitalWrite (ledpin [1], låg);
digitalWrite (ledpin [2], låg);
digitalWrite (ledpin [3], låg);
Delay(25);
}
Vi använder ett For() uttalande för att köra en slinga genom den melodi som vi vill spela. I den "för (int thisNote = 0; thisNote < 13. thisNote ++) {"linje nummer 13 referes till antalet sedlar i tonerna. Koden börjar vid den första noten och genererar tonen för den angivna tid. Samtidigt dess göra att koden är belysning är en motsvarande LED beroende på vad notera det i sekvensen. Så kan du gå in och ändra vilken LED upplysta under vad Observera för att göra lampor dansa som du tycker passar. Förseningen placerade efter vändningen bort lysdioderna styr tempot i musiken. I detta fall när 13 anteckningen har spelats flyttas.
Huvuddelen av skissen (void loop()) är där programmet läser slumpmässigt genererat matrisen och startar blinkar Lysdioderna och spela en anteckning. Alla anteckningar du omdefiniera det behöver dubbleras i de ogiltiga input() så samma ton spelas tillbaka när du trycker på knapparna.
Tonen spelas när du missar sekvensen jag höll som en enkel 2 Obs ton som loopas ett par gånger. Hittar du i avsnittet void fail() i skissen.