buzzer-melodie.ino
tone() genera una onda cuadrada a la frecuencia pedida en el pin del zumbador; dos arrays guardan notas (Hz) y duraciones (tiempos). Se necesita un zumbador pasivo (sin oscilador) para melodías.
Hardware necesario
Un Arduino Mega 2560 (ATmega2560, 16 MHz, 5 V): 54 E/S digitales, 15 PWM, 16 entradas analógicas, 4 UART por hardware. 1 zumbador pasivo de 5 V.
Cableado
Born + del zumbador al pin 8, − a GND.
Funcionamiento
Cada nota suena el 90% de su tiempo; el resto forma el silencio entre notas, lo que hace legible la melodía. En el Arduino IDE, elija « Arduino Mega 2560 » y el puerto, y suba. PWM en 2-13 y 44-46; UART1=18/19, UART2=16/17, UART3=14/15; SPI en 50-53.
Para ir más lejos
Añada un botón para cambiar de melodía o un potenciómetro para el tempo.
buzzer-melodie.ino
// Melodie sur buzzer passif : tableaux notes/durees.
const int BUZZER = 8;
const int MELODIE[] = {262, 330, 392, 523, 392, 330, 262}; // do mi sol do...
const int DUREES[] = {4, 4, 4, 2, 4, 4, 2}; // en temps
void setup() {
Serial.begin(9600);
}
void loop() {
int tempo = 1000 / 4;
for (size_t i = 0; i < sizeof(MELODIE) / sizeof(MELODIE[0]); i++) {
int ms = tempo * 4 / DUREES[i];
tone(BUZZER, MELODIE[i], ms * 9 / 10); // 90% de la note, puis silence
delay(ms);
}
delay(1000);
}