// Pines de los LEDs
int leds[] = {2, 3, 4, 5, 6, 7, 8, 9};
// Pin del buzzer
int buzzer = 10;
// Notas de la canción "Feliz Cumpleaños"
int melody[] = {
262, 262, 294, 262, 349, 330, // Cumpleaños feliz,
262, 262, 294, 262, 392, 349, // cumpleaños feliz,
262, 262, 523, 440, 349, 330, 294, // te deseamos todos,
466, 466, 440, 349, 392, 349 // cumpleaños feliz.
};
// Duraciones de las notas (4 = negra, 8 = corchea, etc.)
int noteDurations[] = {
4, 8, 4, 4, 4, 2, // Cumpleaños feliz,
4, 8, 4, 4, 4, 2, // cumpleaños feliz,
4, 8, 4, 4, 4, 8, 4, // te deseamos todos,
4, 8, 4, 4, 4, 2 // cumpleaños feliz.
};
void setup() {
// Configurar los pines de los LEDs como salida
for (int i = 0; i < 8; i++) {
pinMode(leds[i], OUTPUT);
}
// Configurar el pin del buzzer como salida
pinMode(buzzer, OUTPUT);
}
void loop() {
for (int thisNote = 0; thisNote < 25; thisNote++) {
// Duración de la nota
int noteDuration = 1000 / noteDurations[thisNote];
// Tocar la nota en el buzzer
tone(buzzer, melody[thisNote], noteDuration);
// Encender los LEDs secuencialmente
digitalWrite(leds[thisNote % 8], HIGH);
// Pausar la duración de la nota + 30% extra para el espacio entre notas
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// Apagar todos los LEDs
for (int i = 0; i < 8; i++) {
digitalWrite(leds[i], LOW);
}
// Pausa entre las notas
noTone(buzzer);
}
}