buzzer-melodie.ino

Teensy 4.0 · Archivo : buzzer-melodie.ino · Lenguaje : Arduino · Uso : Mélodie sur buzzer avec tone() et table de notes

Una escala ascendente y luego descendente suena en un zumbador pasivo con tone(). La melodía vive en la flash (PROGMEM + pgm_read_near_int), costumbre sana que deja la RAM libre para el tratamiento de audio o sensores.

Hardware

Un Teensy 4.0 (NXP i.MX RT1062, Cortex-M7 @ 600 MHz, lógica de 3,3 V) alimentado por USB. 1 zumbador pasivo de 3,3-5 V.

Cableado

Zumbador entre el pin 16 y GND. En Teensy, tone() funciona en casi todos los pines sin conflictos de temporizador.

Funcionamiento

tone(pin, frecuencia, duración) configura un PWM de audio; leer la tabla desde la flash ahorra RAM. Un 0 en la tabla marca una pausa.

Ejecución

Con Teensyduino en el Arduino IDE, elige « Teensy 4.0 », Subir y confirma en el Teensy Loader. Los pines son de 3,3 V; el 4.0 es compatible en pines con el 3.2.

Variantes

Pasa a la librería Audio del Teensy para mezclar varias voces sonoras, o toca una melodía recibida por MIDI USB.

buzzer-melodie.ino

// Melodie sur buzzer passif : tone() + table de notes en flash.
const int BUZZER = 16;

const int MELODIE[] PROGMEM = {
  523, 587, 659, 698, 784, 880, 988, 1046, // gamme montante (Hz)
  1046, 988, 880, 784, 698, 659, 587, 523, // gamme descendante
  0 // 0 = silence
};

void setup() {
  Serial.begin(9600);
  Serial.println(F("Melodie Teensy"));
}

void loop() {
  int n = sizeof(MELODIE) / sizeof(MELODIE[0]);
  for (int i = 0; i < n; i++) {
    int f = pgm_read_near_int(&MELODIE[i]); // lecture depuis la flash
    if (f == 0) {
      noTone(BUZZER);
      delay(300);
    } else {
      tone(BUZZER, f, 180); // 180 ms par note
      delay(200);
    }
  }
  delay(2000);
}

// Sur Teensy, tone() fonctionne sur a peu pres toutes les broches
// et ne gene pas les autres timers (contrairement aux AVR).

← Volver a la ficha