buzzer-melodie.ino

Arduino Duemilanove — Fiche carte · Fichier : buzzer-melodie.ino · Langage : Arduino · Usage : Jouer une mélodie sur un buzzer piézo avec tone()

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);
}

← Retour à la fiche