🛠 Réagir aux boutons A et B
Objectifs
Lire les trois boutons de la M5StickC Plus2 : A = G37 (face), B = G39 (flanc), C = G35 (aussi bouton d'alimentation/source de réveil). Compter les appuis, réinitialiser avec B, et comprendre pourquoi C est un bouton à manipuler avec précaution.
Matériel
- 1× M5StickC Plus2 (v2)
- Câble USB-C + driver CH9102
- Arduino IDE (paquet esp32) ou PlatformIO, bibliothèque M5Unified
Code complet
// Boutons A/B/C — broches INPUT ONLY G37/G39/G35 (jamais en sortie !)
#include <M5Unified.h>
uint32_t compteur = 0;
void setup {
auto cfg = M5.config;
M5.begin(cfg);
M5.Display.setRotation(1);
M5.Display.fillScreen(TFT_BLACK);
// M5Unified configure les broches en entrée avec pull-up interne
// (en écriture directe : pinMode(37, INPUT_PULLUP), etc.)
}
void loop {
M5.update;
if (M5.BtnA.wasPressed) { // bouton A = G37
compteur++;
M5.Speaker.tone(2093, 80); // bip court : buzzer passif sur G2 (PWM)
}
if (M5.BtnB.wasPressed) { // bouton B = G39
compteur = 0;
M5.Speaker.tone(440, 80);
}
if (M5.BtnC.wasPressed) { // C = G35 = aussi la touche power !
M5.Display.fillScreen(TFT_BLACK); // appui long > 6 s = extinction (sans USB)
}
M5.Display.setCursor(20, 50);
M5.Display.setTextSize(4);
M5.Display.setTextColor(TFT_YELLOW, TFT_BLACK);
M5.Display.printf("%-6lu", (unsigned long)compteur);
vTaskDelay(10 / portTICK_PERIOD_MS);
}
Vérification attendue
Chaque appui sur A incrémente le grand compteur jaune et fait « bip » le buzzer passif (G2, sortie tonalité PWM uniquement). B remet le compteur à zéro. Un appui court sur C efface l'écran ; le maintenir plus de 6 secondes sans USB éteint complètement l'appareil.
Erreurs fréquentes
- Traiter G37/G39/G35 en sortie : ce sont des broches input-only, aucun courant ne peut en sortir.
- Confondre appui court et appui long sur C : au-delà de 6 s sans USB, la machine s'éteint (avec USB, l'écran s'éteint seulement — l'alimentation reste active, d'où les « ça ne s'éteint pas / la batterie se vide sur chargeur »).
- Oublier
M5.update: leswasPressedne se déclenchent jamais. - Lire les boutons en
digitalReadsansINPUT_PULLUP: état flottant et appuis fantômes. - Les boutons sont minuscules (repro d'ergonomie connu) : prévoir des temps de rebond, M5Unified les filtre déjà.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
hello-stick.inoArduinoboutons.inoArduinobuzzer.inoArduinoinclinometre.inoArduinohorloge.inoArduinoir-tv.inoArduino