boutons.ino

M5Stack Core (ESP32) — familia Basic / Gray (K001 / K002) · Archivo : boutons.ino · Lenguaje : Arduino · Uso : Utiliser les trois boutons du boîtier

Los tres botones cableados de la carcasa (GPIO39/38/12) se vuelven un menú: wasPressed para el evento, isHeld para la pulsación larga. M5.update() es el reflejo que no hay que olvidar al inicio de loop.

Hardware necesario

Un M5Stack Core Basic/Gray (ESP32 en carcasa con TFT de 320×240, botones A/B/C, altavoz, ranura microSD, batería de 110 mAh). Ninguno.

Cableado

Sin cableado. El botón C (GPIO12) está en el strap GPIO12 del módulo: mantenerlo al arrancar cambia el modo de programación.

Funcionamiento

La librería antirrebota y memoriza flancos; wasPressed devuelve true una vez por pulsación. Power.sleep pone la carcasa en reposo, despertable con el botón C. En el Arduino IDE (paquete esp32), placa « M5Stack-Core-ESP32 »; instale la biblioteca « M5Stack » (o M5Unified) desde el gestor y suba.

Para ir más lejos

Añada doble clic (wasDoubleClicked en versiones recientes) o haga desplazar un gráfico con 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);
}

← Volver a la ficha