Arduino Tutorial Bundle.: Arduino experimenterande Kit:. (ARDX) (8 / 13 steg)
Steg 8:.: musik:. -(Pieze Element) - CIRC06
Vad vi gör:
Till denna punkt har vi kontrollerat ljus, rörelse och elektroner, kan tackla sund nästa. Men ljud är en analog fenomen, hur kommer våra digitala Arduino klara? Vi kommer återigen lita på dess otrolig fart som låter det efterlikna analoga beteende. Det gör fäster vi ett piezoelement vid en av Arduino's digital stift. Ett piezoelement gör ett klickande ljud varje gång det är pulsade med ström. Om vi puls det på rätt frekvens (till exempel 440 gånger en sekund att göra Obs mitten A) dessa klick kommer att köras tillsammans för att skapa anteckningar. Kan får experimentera med det och få din Arduino spelar "Twinkle Twinkle Little Star".
(du kan också hämta bladet bakbord layout från botten av detta steg)
Delarna:
- CIRC-06 bakbord blad
- 2 stift huvud (x4)
- Piezoelement (x1)
- Wire
Kretsen och ansluta allt:
En liten Video av allt att vara inkopplad
Koden: - Fil > Sketchbook > exempel > digitala > Melody
/ * Melodi * (läpp) 2005 D. Cuartielles för K3 ** detta exempel används en piezo speaker för att spela melodier. Den skickar * en fyrkantsvåg av lämplig frekvens till piezo, * generera motsvarande tonen. ** Vid beräkningen av tonerna är gjord efter den * matematisk operation: ** timeHigh = period / 2 = 1 / (2 * toneFrequency) ** där de olika tonerna beskrivs som i tabellen: ** Observera frekvensen antika timeHigh * c 261 Hz 3830 1915 * d 294 Hz 3400 1700 * e 329 Hz 3038 1519 * f 349 Hz 2864 1432 * g 392 Hz 2550 1275 * en 440 Hz 2272 1136 * b 493 Hz 2028 1014 * C 523 Hz 1912 956 ** http://www.arduino.cc/en/Tutorial/Melody * / int speakerPin = 9; int längd = 15. antalet noteschar noterar [] = "ccggaagffeeddc"; ett utrymme representerar en restint beats [] = {1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4}; int tempo = 300; makulera playTone (int tonen, int längd) {för (länge jag = 0; jag < varaktighet * 1000 L; i += tonen * 2) {digitalWrite (speakerPin, hög); delayMicroseconds(tone); digitalWrite (speakerPin, låg); delayMicroseconds(tone);}} void playNote (char note, int varaktighet) {char namn [] = {'c', 'd ","e","f","g","a","b","C"}; int toner [] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956}; / / spela tonen motsvarar tonens namn för (int jag = 0; jag < 8; i ++) {om (namn [i] == OBS) {playTone (toner [i], varaktighet);}}} void setup() {pinMode (speakerPin, produktionen);} void loop() {för (int jag = 0; jag < längd; i ++) {om (anteckningar [i] == "") {fördröjning (beats [i] * tempo); / / Vila} annat {playNote (anteckningar [i], beats [i] * tempo);} / / paus mellan anteckningar delay(tempo / 2);}}
Inte fungerar?
- Inget ljud - med tanke på storleken och formen av Piezoelementet är det lätt att missa de rätt hål på en skärbräda. Prova att dubbel kontrollera dess placering.
- Can't tror medan the Melody är Playing. -Bara dra upp Piezoelementet samtidigt som du tror, ladda upp dina program sedan koppla in den igen.
- Trött på Twinkle Twinkle Little Star? -Koden är skriven så du kan enkelt lägga till dina egna låtar, kolla in koden nedan för att komma igång.
Att göra det bättre:
Leker med hastighet:
Tidpunkten för varje not beräknas utifrån variabler, som sådan vi kan justera ljudet av varje not eller tidpunkten. Om du vill ändra hastigheten på melodin måste du ändra endast en linje.
int tempo = 300; ---> int tempo = (nya #)
Ändra till ett större antal bromsa melodin, eller ett mindre antal att snabba upp.
Tuning noterna:
Om du är orolig för anteckningar som tune lite ur kan detta fastställas också. Anteckningar har beräknats baserat på en formel i blocket kommentar längst upp i programmet. Men för att ställa in enskilda noter justera bara deras värden i matrisen toner [] uppåt eller nedåt tills de låter rätt. (varje not motsvaras av sitt namn i den namn [] (array dvs. c = 1915)
char namn [] = {'c', 'd ","e","f","g","a","b","C"}; int toner [] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956};
Komponera din egen melodier:
Programmet är förinställd att spela "Twinkle Twinkle Little Star" men som den är programmerad gör ändra låten lätt. Varje låt är definierad i en int och två matriser, int längden definierar antalet anteckningar, den första matris anteckningar [] definierar varje not och den andra slår [] definierar hur länge varje not spelas. Några exempel:
Twinkle Twinkle Little Star
int längd = 15. char noterar [] = "ccggaagffeeddc"; int slår [] = {1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4};
Grattis på födelsedagen (första raden)
int längd = 13. char noterar [] = "ccdcfeccdcgf"; int slår [] = {1,1,1,1,1,2,1,1,1,1,1,2,4}.