buzzer-melodie.ino
Una melodía de prueba para el zumbador pasivo: tone() del core Mbed se apoya en un temporizador hardware, así la frecuencia sigue siendo exacta sea cual sea la carga del M7. La tabla de notas se reproduce en secuencia no crítica.
Hardware
Un Arduino Portenta H7 (módulo ST STM32H747 doble núcleo Cortex-M7 @ 480 MHz + M4 @ 240 MHz, 8 MB SDRAM, conector high-density), alimentado por USB-C o 5 V. 1 zumbador pasivo de 3,3-5 V.
Cableado
Zumbador entre D6 y GND. Un zumbador activo (pitido integrado) no permite variar la frecuencia.
Funcionamiento
tone() configura un temporizador para producir la señal cuadrada a la frecuencia pedida; el bucle lee la tabla (frecuencia, duración) nota a nota.
Ejecución
Arduino IDE con el core « Arduino Mbed OS Portenta Boards »: elige « Portenta H7 » (núcleo M7), el puerto USB-C y Subir. El selector M7/M4 del modo DFU permite cargar también el núcleo M4.
Variantes
Guardar la melodía en PROGMEM/flash, o dispararla desde el M4 por RPC como señal de evento.
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.