buzzer.ino
Le buzzer passif du stick (G2) joue les fréquences qu'on lui donne : deux tableaux notes/durées et la gamme sort par le trou du boîtier. Le retour sonore d'une alerte tient en une ligne.
Matériel requis
Un M5StickC Plus2 (ESP32-PICO-V3-02, écran 135×240, boutons A/B/C, buzzer passif G2, IR + LED rouge G19, IMU MPU6886, micro, batterie 200 mAh). Aucun.
Branchement
Aucun câblage ; buzzer soudé sur G2 dans le boîtier. Volume limité par la taille du buzzer — collez l'oreille au trou.
Fonctionnement
M5.Spk.tone(freq, ms) configure un timer en mode onde carrée sur G2 ; l'appel bloque la durée demandée. Le délai de 20 ms entre notes sépare les attaques. Dans l'Arduino IDE (paquet esp32), carte « M5StickCPlus2 » ; bibliothèque « M5StickCPlus2 » ou M5Unified. Sur la v2 sans PMIC, maintenez le bouton C > 2 s pour allumer ; HOLD (G4) maintient l'alimentation.
Pour aller plus loin
Un thermomètre musical (fréquence = température), ou un code Morse complet avec deux durées.
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);
}