boutons.ino

M5Stack Core (ESP32) — famille Basic / Gray (K001 / K002) · Fichier : boutons.ino · Langage : Arduino · Usage : Utiliser les trois boutons du boîtier

Les trois boutons câblés du boîtier (GPIO39/38/12) deviennent un menu : wasPressed pour l'événement, isHeld pour la fonction longue. M5.update() est le réflexe à ne pas oublier en tête de loop.

Matériel requis

Un M5Stack Core Basic/Gray (ESP32 dans un boîtier avec écran TFT 320×240, 3 boutons A/B/C, haut-parleur, micro SD, batterie 110 mAh). Aucun.

Branchement

Aucun câblage. Bouton C (GPIO12) est relié au strap GPIO12 du module : un appui maintenu au démarrage change le mode de flash.

Fonctionnement

La bibliothèque débounce et mémorise les fronts ; wasPressed ne renvoie vrai qu'une fois par appui. Power.sleep met le boîtier en veille, réveillable par bouton C. Dans l'Arduino IDE (paquet esp32), carte « M5Stack-Core-ESP32 » ; installez la bibliothèque « M5Stack » (ou M5Unified) via le gestionnaire, puis Téléverser.

Pour aller plus loin

Ajoutez un double-clic (wasDoubleClicked sur les versions récentes), ou faites défiler un graphique avec A/B.

boutons.ino

// Boutons A (39), B (38), C (12) — bibliotheque M5Stack.
#include <M5Stack.h>

int choix = 0;
const char *MENU[] = {"LED", "SON", "RESEAU", "BATTERIE"};

void setup() {
  M5.begin();
  M5.Lcd.setTextSize(2);
}

void loop() {
  M5.update();                          // rafraichit l'etat des boutons
  if (M5.BtnA.wasPressed()) choix = (choix + 3) % 4;   // precedent
  if (M5.BtnB.wasPressed()) choix = (choix + 1) % 4;   // suivant
  if (M5.BtnC.wasPressed()) {                          // selectionne
    M5.Lcd.fillScreen(TFT_BLACK);
    M5.Lcd.setCursor(10, 100);
    M5.Lcd.printf(">> %s <<", MENU[choix]);
    M5.Speaker.tone(880, 80);
  }
  if (M5.BtnA.isHeld() || M5.BtnB.isHeld() || M5.BtnC.isHeld()) {
    M5.Power.sleep();                   // maintenu = veille (retour C)
  }
  delay(20);
}

← Retour à la fiche