buzzer-melodie.ino
Une mélodie de test pour le buzzer passif : tone() du core Mbed s'appuie sur un timer matériel, la fréquence reste juste quelle que soit la charge du M7. La table de notes se joue en séquence non critique.
Matériel requis
Une Arduino Portenta H7 (module ST STM32H747 double cœur Cortex-M7 @ 480 MHz + M4 @ 240 MHz, 8 Mo SDRAM, connecteur haut-density), alimentée par USB-C ou 5 V. 1 buzzer passif 3,3-5 V.
Câblage
Buzzer entre D6 et GND. Un buzzer actif (bip intégré) ne permet pas de varier la fréquence.
Fonctionnement
tone() configure un timer pour produire le créneau à la fréquence demandée ; la boucle lit la table (fréquence, durée) note par note.
Exécution
Arduino IDE avec le core « Arduino Mbed OS Portenta Boards » : choisir « Portenta H7 » (cœur M7), le port USB-C puis Téléverser. Le sélecteur M7/M4 du mode DFU permet de charger aussi le cœur M4.
Variantes
Stocker la mélodie en PROGMEM/flash, ou la déclencher depuis le M4 par RPC comme signal d'événement.
buzzer-melodie.ino
// Melodie sur buzzer passif (D6) : table de notes en flash.
const int BUZZER = 6;
const int MELODIE[][2] = {
{523, 180}, {659, 180}, {784, 180}, {1046, 360},
{784, 180}, {659, 180}, {523, 360},
{0, 300},
{587, 180}, {698, 180}, {880, 360}, {0, 400},
};
void setup() {
Serial.begin(9600);
Serial.println("Melodie Portenta");
}
void loop() {
for (auto ¬e : MELODIE) {
if (note[0] == 0) noTone(BUZZER);
else tone(BUZZER, note[0]);
delay(note[1]);
}
delay(2500);
}
// tone() du core Mbed s'appuie sur un timer materiel : la
// frequence reste exacte meme a 240 MHz ou 480 MHz.