buzzer-melodie.ino

Arduino Nano (Classic, ATmega328P) · Fichier : buzzer-melodie.ino · Langage : Arduino · Usage : Jouer une mélodie sur un buzzer piézo

Un buzzer passif branché sur la broche 9 chante un air connu grâce à tone(), qui génère le carré nécessaire en matériel sur l'ATmega328P du Nano. La mélodie est une simple table fréquences/durées, extensible à l'infini.

Matériel requis

Un Arduino Nano classique (ATmega328P à 16 MHz, brochage DIL 30 broches sur breadboard, USB mini-B, logique 5 V, broche RESET en bas à gauche). Arduino Nano, buzzer piézo passif 5 V (pas buzzer actif !), broche 9.

Câblage

Fil (+) du buzzer sur D9, fil (-) sur GND. Les buzzers actifs sonnent sur simple tension : inutile pour les mélodies.

Fonctionnement

tone() configure le timer 1 ou 2 pour produire la fréquence sur la broche ; noTone() arrête l'oscillation. La table en mémoire flash (const) garde le programme compact.

Exécution

Dans l'IDE Arduino, sélectionnez la carte Arduino Nano et le processeur ATmega328P, choisissez le port série puis téléversez. L'alimentation 5 V de la carte convient aux capteurs 5 V ; sinon utiliser le 3,3 V des broches adaptées.

Variantes

Ajoutez un bouton pour déclencher la mélodie, jouez sur plusieurs broches pour un duo, ou lisez des notes depuis un capteur de lumière.

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
}

← Retour à la fiche