melodie.ino

Arduino GIGA R1 · Fichier : melodie.ino · Langage : Arduino · Usage : Retour sonore avec un buzzer passif

tone() sur la GIGA s'appuie sur un timer matériel : le buzzer joue la mélodie pendant que le M7 fait autre chose. Le retour sonore d'une machine d'atelier est à trois fils.

Matériel requis

Une carte Arduino Giga R1 (STM32H747 double cœur M7 480 MHz + M4, 76 E/S, 2 DAC, FDCAN) alimentée par USB-C ou 5-24 V. 1 buzzer passif 3,3 V (broche + GND) ou piézo.

Branchement

+ du buzzer sur D9, − sur GND. Un buzzer actif (oscillateur intégré) ne joue qu'un seul son : prendre du passif.

Fonctionnement

tone(pin, freq, durée) configure le timer en sortie carrée et s'arrête seul ; le delay suivant laisse la note respirer. Plusieurs timers = polyphonie possible. Dans l'Arduino IDE, installez la plateforme « Arduino Zephyr-based Boards » (ou Mbed), choisissez « Arduino Giga R1 », puis Téléverser. Logique 3,3 V.

Pour aller plus loin

Bip d'alerte CAN (trame d'erreur = son grave), ou mémo musical piloté par l'ADC.

melodie.ino

// Buzzer passif entre D9 et GND — tone() du core GIGA.
const int BUZZER = D9;

struct Note { int freq; int ms; };
Note air[] = {
  {659, 300}, {659, 300}, {659, 300}, {523, 900},   // mi mi mi do
  {659, 600}, {784, 30},  {392, 600},  {523, 600},
};
const int NB = sizeof(air) / sizeof(Note);

void setup() {
  pinMode(BUZZER, OUTPUT);
  Serial.begin(115200);
  Serial.println("Appui bouton D2 = musique");
  pinMode(D2, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(D2) == LOW) {
    for (int i = 0; i < NB; i++) {
      tone(BUZZER, air[i].freq, air[i].ms);
      delay(air[i].ms + 30);
    }
  }
}

← Retour à la fiche