buzzer-melodie.ino
Un buzzer pasivo en el pin 9 canta un aire conocido gracias a tone(), que genera la señal cuadrada necesaria en hardware sobre el ATmega328P del Nano. La melodía es una simple tabla frecuencias/duraciones, extensible sin fin.
Hardware
Un Arduino Nano clásico (ATmega328P a 16 MHz, formato DIL de 30 patillas para breadboard, USB mini-B, lógica de 5 V, pin RESET abajo a la izquierda). Arduino Nano, buzzer piezo pasivo de 5 V (no activo!), pin 9.
Cableado
Hilo (+) del buzzer a D9, hilo (-) a GND. Los buzzers activos suenan con simple tensión: inútiles para melodías.
Funcionamiento
tone() configura el timer 1 o 2 para producir la frecuencia en el pin; noTone() detiene la oscilación. La tabla en flash (const) mantiene compacto el programa.
Ejecución
En el IDE de Arduino, selecciona la placa Arduino Nano y el procesador ATmega328P, elige el puerto serie y carga. El rail de 5 V de la placa conviene a sensores de 5 V; si no, usa 3,3 V en pines compatibles.
Variantes
Añade un botón para disparar la melodía, toca en varios pines para un dúo o lee notas de un sensor de luz.
buzzer-melodie.ino
// Melodie sur buzzer passif avec tone()/noTone() (Arduino Nano).
// Le Nano (ATmega328P) genere le carre sur n'importe quelle broche.
const int BUZZER = 9;
// note : frequence Hz, duree ms (0 = silence de meme duree)
const uint16_t MELODIE[][2] = {
{262, 300}, {330, 300}, {392, 300}, {523, 600},
{392, 300}, {523, 300}, {659, 900},
{0, 400},
};
const int N = sizeof(MELODIE) / sizeof(MELODIE[0]);
void setup() {
pinMode(BUZZER, OUTPUT);
}
void loop() {
for (int i = 0; i < N; i++) {
uint16_t freq = MELODIE[i][0];
uint16_t duree = MELODIE[i][1];
if (freq > 0) tone(BUZZER, freq);
else noTone(BUZZER);
delay(duree);
}
noTone(BUZZER);
delay(2000); // pause avant reprise
}