buzzer.ino
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);
}