buzzer.ino

M5StickC Plus2 (M5Stack) — kit vestible "stick" con ESP32-PICO-V3-02 (SKU K016-P2) · Archivo : buzzer.ino · Lenguaje : Arduino · Uso : Jouer de la musique avec le buzzer passif

El zumbador pasivo del stick (G2) toca la frecuencia que le des: dos tablas de notas/duraciones y la escala sale por el agujero de la carcasa. El retorno sonoro de una alarma cabe en una línea.

Hardware necesario

Un M5StickC Plus2 (ESP32-PICO-V3-02, pantalla de 135×240, botones A/B/C, zumbador pasivo en G2, IR + LED rojo en G19, IMU MPU6886, micrófono, batería de 200 mAh). Ninguno.

Cableado

Sin cableado; el zumbador va soldado a G2 dentro de la carcasa. Volumen limitado por el tamaño del zumbador: pegue la oreja al agujero.

Funcionamiento

M5.Spk.tone(freq, ms) configura un timer en onda cuadrada en G2; la llamada bloquea la duración pedida. El retardo de 20 ms entre notas separa los ataques. En el Arduino IDE (paquete esp32), placa « M5StickCPlus2 »; biblioteca « M5StickCPlus2 » o M5Unified. En la v2 sin PMIC, mantenga el botón C más de 2 s para encender; HOLD (G4) mantiene la alimentación.

Para ir más lejos

Un termómetro musical (frecuencia = temperatura), o un código Morse completo con dos duraciones.

buzzer.ino

// Buzzer passif sur G2 — M5Unified gere le timer.
#include <M5Unified.h>

const uint16_t NOTES[] = {392, 392, 523, 523, 659, 659, 523,   // sol sol do do mi mi do
                          494, 494, 587, 587, 698, 698, 587};
const uint16_t DUREES[] = {220, 220, 220, 220, 220, 220, 440,
                           220, 220, 220, 220, 220, 220, 440};
const int NB = sizeof(NOTES) / sizeof(uint16_t);

void setup() {
  auto cfg = M5.config();
  M5.begin(cfg);
  M5.Spk.begin();
  M5.Display.setRotation(1);
  M5.Display.setTextSize(2);
  M5.Display.drawString("Bouton A = musique", 10, 50, 2);
}

void loop() {
  M5.update();
  if (M5.BtnA.wasPressed()) {
    for (int i = 0; i < NB; i++) {
      M5.Spk.tone(NOTES[i], DUREES[i]);
      M5.Display.drawChar(110, 90, 'o', TFT_BLACK, TFT_YELLOW, 4);
      delay(DUREES[i] + 20);
    }
  }
  delay(10);
}

← Volver a la ficha