melodie.ino
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);
}
}
}