// nota, frequenza (Hz). #define Do4 261 #define Re4 294 #define Mi4 329 #define Fa4 349 #define Sol4 392 #define La4 440 #define Si4 493 #define Do5 523 // Una pausa è una nota con frequenza zero #define P 0 const int buttonPin = 2; // Il buzzer deve essere collegato a un pin PWM int speakerOut = 9; void setup() { pinMode(buttonPin, INPUT); pinMode(speakerOut, OUTPUT); } // melody[] è l'array con le varie note da suonare // beats[] è l'array con la durata di ciascuna nota da suonare in frazioni di semibreve int melody[] = { La4, La4, Si4, Do5, Do5, Si4, La4, Sol4, Fa4, Fa4, Sol4, La4, La4, Sol4, Sol4, P }; int beats[] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 8, 2, 1 }; int MAX_COUNT = sizeof(melody) / 2; // Calcoliamo la dimensione degli array //Tempo della nota semibreve in millesimi di secondo long tempo = 4000; // Pausa tra le note in milionesimi di secondo int pause = 1000; int tone_ = 0; int beat = 0; long duration = 0; int volume = 1023; void loop() { if (digitalRead(buttonPin) == LOW) { // Scorriamo tutte le note e le rispettive durate for (int i=0; i 0) { if (digitalRead(buttonPin) == HIGH) break; noTone(speakerOut); tone(speakerOut,tone_,duration); delay(duration); // Piccola pausa dopo la nota delayMicroseconds(pause); } else { delay(duration); } } } }