buzzer-melodie.ino
tone() génère un carré à la fréquence demandée sur la broche du buzzer ; deux tableaux décrivent notes (Hz) et durées (temps musicaux). Un buzzer passif (piézo sans oscillateur) est requis pour jouer des mélodies.
Matériel requis
Une Arduino Duemilanove (ATmega168 ou 328P, 16 MHz, 5 V) avec son câble mini-USB-B ; le port série apparaît après installation du driver FTDI. 1 buzzer passif 5 V.
Branchement
Broche + du buzzer sur la broche 8, broche − sur GND.
Fonctionnement
Chaque note est jouée 90 % du temps alloué, le reste formant le silence entre les notes — c'est ce qui rend la mélodie lisible. Dans l'Arduino IDE, choisissez « Arduino Duemilanove » (ou « Diecimila » pour les très vieilles cartes) et le port FTDI, puis Téléverser. L'ATmega168 n'a que 14 Ko pour le sketch.
Pour aller plus loin
Ajoutez un bouton pour changer de mélodie, ou un potentiomètre pour le 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);
}