Praktiker Guide för Arduino som utförs på OIT (15 / 15 steg)
Steg 15: EXTRA LAB CIRC-06B
de nya sedlarna är eeggeeee, pausa. Det är redigerade koden nedan. Jag hade att säga att nu finns det 9 anteckningar, ange ordningen på anteckningar och lämna ett mellanrum för paus, på raden under jag hade att säga betor längden för varje not. Sedan sist jag var tvungen att bromsa hastigheten på låten genom att minska tempot.
/ * 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.
*
* Beräkning av tonerna är gjord efter den matematiska
* operation:
*
* timeHigh = period / 2 = 1 / (2 * toneFrequency)
*
* där beskrivs de olika tonerna 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 = 9. antalet anmärkningar
char noterar [] = "eeggeeee"; ett utrymme representerar en vila här är den del jag ändrade
int slår [] = {2, 2, 1, 1, 2, 2, 1, 1, 1}; DETTA ÄR DEN DEL JAG ÄNDRA
int tempo = 200. DETTA MINSKAR BILDA 300 SÅ ATT DET SPELAS UPP LÅNGSAMMARE
{Ogiltig playTone (int tonen, int längd)
för (länge jag = 0; jag < varaktighet * 1000L; 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); resten
} annat {
playNote (anteckningar [i], beats [i] * tempo);
}
paus mellan anteckningar
Delay(tempo / 2);
}
}