buzzer-melodie.ino
Un zumbador piezoeléctrico pasivo toca el inicio de "Au clair de la lune". tone() genera una frecuencia exacta en un pin; la melodía se guarda en una tabla (nota, duración) como una partitura, fácil de ampliar.
Hardware
Un Arduino Uno R3 (ATmega328P, 5 V, 16 MHz) alimentado por USB o jack de 7-12 V. 1 zumbador pasivo (5 V): un zumbador activo solo emite un pitido fijo, sin tone().
Cableado
Hilo + del zumbador al pin 8, hilo - a GND. En AVR, tone() no usa los pines con temporizadores ocupados por Servo.
Funcionamiento
tone(pin, frecuencia, duración) configura un temporizador para producir la señal cuadrada de audio. La tabla de notas se lee secuencia a secuencia con un delay proporcional.
Ejecución
En el Arduino IDE, elige la placa « Arduino Uno » y el puerto serie correspondiente y pulsa Subir. Abre el monitor serie a 9600 baudios para seguir los mensajes.
Variantes
Añade un botón para disparar la melodía, o reproduce desde una tabla guardada en EEPROM/flash (PROGMEM) para ahorrar RAM.
buzzer-melodie.ino
// Melodie sur buzzer passif avec la fonction tone() et une table de notes.
const int BUZZER = 8; // broche tone() sur les AVR (pas 9/10 si Servo actif)
// Frequences (Hz) des notes d'une octave.
const int NOTE_DO = 262, NOTE_RE = 294, NOTE_MI = 330, NOTE_FA = 349,
NOTE_SOL = 392, NOTE_LA = 440, NOTE_SI = 494, NOTE_DO2 = 523;
// "Au clair de la lune" (debut) : note, duree en temps.
const int melody[][2] = {
{NOTE_DO, 1}, {NOTE_DO, 1}, {NOTE_DO, 1}, {NOTE_RE, 2},
{NOTE_MI, 1}, {NOTE_MI, 1}, {NOTE_RE, 2}, {NOTE_DO, 4},
{NOTE_RE, 1}, {NOTE_RE, 1}, {NOTE_RE, 2}, {NOTE_MI, 1},
{NOTE_SOL, 1}, {NOTE_MI, 1}, {NOTE_DO, 4},
};
void setup() {
Serial.begin(9600);
Serial.println(F("Lecture de la melodie..."));
}
void loop() {
const int TEMPS = 220; // ms par unite de duree
for (unsigned int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
int note = melody[i][0];
int duree = melody[i][1] * TEMPS;
tone(BUZZER, note, duree * 9 / 10); // petite pause entre les notes
delay(duree);
}
delay(3000); // pause avant repetition
}