buzzer-melodie.ino
tone() generates a square wave at the requested frequency on the buzzer pin; two arrays hold notes (Hz) and durations (beats). A passive piezo (no onboard oscillator) is required for melodies.
Hardware required
An Arduino Leonardo (ATmega32U4, 16 MHz, 5 V) with native USB: the board can pose as a keyboard or a mouse. 1 passive 5 V buzzer.
Wiring
Buzzer + to pin 8, − to GND.
How it works
Each note plays for 90% of its slot, the remainder forming the gap between notes — that is what makes the melody readable. In the Arduino IDE, select « Arduino Leonardo » and the port, then Upload. Caution: a sketch that sleeps too fast can « lose » the USB port; hold RESET for 12 s to wipe the bootloader.
Going further
Add a button to switch melodies, or a potentiometer for 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);
}