buzzer-melodie.ino

Arduino Portenta H7 · Archivo : buzzer-melodie.ino · Lenguaje : Arduino · Uso : Jouer une mélodie sur buzzer passif avec tone()

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 &note : 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.

← Volver a la ficha