/*
JoJo's Bizarre Adventure Inspired Melody with LED Rhythm
Connect a piezo buzzer or speaker to pin 11 or select a new pin.
Connect two LEDs to pins 12 and 13 with appropriate resistors.
*/
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
#define NOTE_A5 880
#define NOTE_B5 988
#define NOTE_C6 1047
#define REST 0
int tempo = 120;
int buzzer = 18;
int led1 = 12;
int led2 = 13;
int melody[] = {
NOTE_C4, 8, NOTE_E4, 8, NOTE_G4, 8, NOTE_C5, 4, NOTE_B4, 8, NOTE_G4, 8, // Measure 1
NOTE_A4, 8, NOTE_C5, 8, NOTE_D5, 4, NOTE_C5, 8, NOTE_A4, 8, NOTE_G4, 8, // Measure 2
NOTE_G4, 8, NOTE_B4, 8, NOTE_C5, 4, NOTE_E5, 8, NOTE_D5, 8, NOTE_C5, 8, // Measure 3
NOTE_B4, 8, NOTE_A4, 8, NOTE_G4, 4, REST, 4, // Measure 4
NOTE_F4, 8, NOTE_A4, 8, NOTE_C5, 8, NOTE_F5, 4, NOTE_E5, 8, NOTE_C5, 8, // Measure 5
NOTE_D5, 8, NOTE_F5, 8, NOTE_G5, 4, NOTE_F5, 8, NOTE_D5, 8, NOTE_C5, 8, // Measure 6
NOTE_E4, 8, NOTE_G4, 8, NOTE_B4, 4, NOTE_D5, 8, NOTE_C5, 8, NOTE_B4, 8, // Measure 7
NOTE_A4, 8, NOTE_G4, 8, NOTE_F4, 4, REST, 4, // Measure 8
NOTE_E4, 8, NOTE_G4, 8, NOTE_C5, 8, NOTE_E5, 4, NOTE_D5, 8, NOTE_B4, 8, // Measure 9
NOTE_C5, 8, NOTE_E5, 8, NOTE_G5, 4, NOTE_F5, 8, NOTE_E5, 8, NOTE_D5, 8, // Measure 10
NOTE_C5, 8, NOTE_A4, 8, NOTE_G4, 4, NOTE_F4, 8, NOTE_E4, 8, NOTE_D4, 8, // Measure 11
NOTE_C4, 8, NOTE_G4, 8, NOTE_C5, 4, REST, 4 // Measure 12
};
int notes = sizeof(melody) / sizeof(melody[0]) / 2;
int wholenote = (60000 * 4) / tempo;
int divider = 0, noteDuration = 0;
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
for (int thisNote = 0; thisNote < notes * 2; thisNote = thisNote + 2) {
divider = melody[thisNote + 1];
if (divider > 0) {
noteDuration = (wholenote) / divider;
} else if (divider < 0) {
noteDuration = (wholenote) / abs(divider);
noteDuration *= 1.5;
}
tone(buzzer, melody[thisNote], noteDuration * 0.9);
// Blink LEDs in rhythm with the melody
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(noteDuration * 0.45);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(noteDuration * 0.45);
noTone(buzzer);
}
}
void loop() {
// no need to repeat the melody.
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4