/*
Ho riorganizzato il codice dividendolo in quattro funzioni principali:
- playMainTheme(): Suona il tema principale iniziale
- playBridge(): Suona la parte di transizione
- playVariation(): Suona una variazione del tema principale
- playFinale(): Suona la parte finale
Ogni funzione è responsabile di una sezione specifica della melodia.
Nel loop() principale, queste funzioni vengono chiamate in sequenza con brevi pause tra una sezione e l'altra.
Ho anche aggiunto più note alla definizione iniziale e alcuni nuovi valori per la durata delle note (come halfNote).
Puoi facilmente modificare:
- La durata delle note cambiando i valori delle costanti all'inizio
- Le pause tra le sezioni modificando i delay() nel loop()
- Il pin del buzzer cambiando buzzerPin
*/
// Pin del buzzer
const int buzzerPin = 27;
// Definizione delle note
#define NOTE_E5 659
#define NOTE_DS5 622
#define NOTE_E4 330
#define NOTE_DS4 311
#define NOTE_B4 494
#define NOTE_D5 587
#define NOTE_C5 523
#define NOTE_A4 440
#define NOTE_C4 262
#define NOTE_G4 392
#define NOTE_F4 349
#define NOTE_A3 220
// Durata delle note
const int quarterNote = 200*4; //semininima
const int eighthNote = 100*4; //croma
const int sixteenthNote = 50*4; // semicroma
const int halfNote = 400*4; // minima
void setup() {
pinMode(buzzerPin, OUTPUT);
}
// Prima parte della melodia (tema principale)
void playMainTheme() {
// Prima misura
tone(buzzerPin, NOTE_E5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_DS5, sixteenthNote);
delay(sixteenthNote);
// Seconda misura
tone(buzzerPin, NOTE_E5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_DS5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_E5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_B4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_D5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_C5, sixteenthNote);
delay(sixteenthNote);
// Terza misura
tone(buzzerPin, NOTE_A4, quarterNote);
delay(quarterNote);
}
// Seconda parte della melodia (bridge)
void playBridge() {
tone(buzzerPin, NOTE_C4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_E4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_A4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_B4, quarterNote);
delay(quarterNote);
tone(buzzerPin, NOTE_E4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_G4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_B4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_C5, quarterNote);
delay(quarterNote);
}
// Terza parte della melodia (variazione)
void playVariation() {
tone(buzzerPin, NOTE_E5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_E4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_E5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_DS5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_E5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_DS5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_E5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_DS5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_E5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_B4, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_D5, sixteenthNote);
delay(sixteenthNote);
tone(buzzerPin, NOTE_C5, sixteenthNote);
delay(sixteenthNote);
}
// Quarta parte della melodia (finale)
void playFinale() {
tone(buzzerPin, NOTE_A4, eighthNote);
delay(eighthNote);
tone(buzzerPin, NOTE_C4, eighthNote);
delay(eighthNote);
tone(buzzerPin, NOTE_E4, eighthNote);
delay(eighthNote);
tone(buzzerPin, NOTE_A4, halfNote);
delay(halfNote);
}
void loop() {
// Suona la composizione completa
playMainTheme();
delay(100);
playBridge();
delay(100);
playVariation();
delay(100);
playFinale();
// Pausa prima di ripetere
delay(1000);
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
led1:A
led1:C
led2:A
led2:C
r1:1
r1:2
r2:1
r2:2
bz1:1
bz1:2
bz2:1
bz2:2