boutons.ino

M5StickC Plus2 (M5Stack) — kit portable « stick » ESP32-PICO-V3-02 (SKU K016-P2) · Fichier : boutons.ino · Langage : Arduino · Usage : Exploiter les boutons A, B et C du stick

wasPressed pour le clic, wasHold(1000) pour l'appui long : M5Unified fournit la sémantique complète des boutons, anti-rebond inclus. Le bouton C éteint l'écran sans couper la charge — le geste autonomie.

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. A sur G38, B sur G37, C (Power) sur G35. Le HOLD G4 doit rester haut en batterie (maintenu par le firmware).

Fonctionnement

Les objets bouton mémorisent fronts et durées ; wasHold(ms) ne se déclenche qu'au-delà de la durée. setBrightness(0) coupe le rétroéclairage, le ESP32 continue de tourner. 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

Double-clic par mesure d'intervalle entre wasPressed, ou menu contextuel au clic long.

boutons.ino

// A (G38, flanc), B (G37, bas), C (G35, sous l'ecran = Power).
#include <M5Unified.h>

int page = 0;

void setup() {
  auto cfg = M5.config();
  M5.begin(cfg);
  M5.Display.setRotation(1);
  M5.Display.setTextSize(2);
}

void loop() {
  M5.update();
  if (M5.BtnA.wasPressed())  page = (page + 1) % 3;   // appui court
  if (M5.BtnA.wasHold(1000)) page = (page + 2) % 3;   // appui long
  if (M5.BtnB.wasPressed())  M5.Spk.tone(660, 60);

  M5.Display.fillScreen(TFT_BLACK);
  M5.Display.setCursor(6, 20);
  M5.Display.printf("Page %d\n", page);
  M5.Display.setTextSize(1);
  M5.Display.setCursor(6, 60);
  M5.Display.printf("A court=%d long=%d B=%d\n",
                    M5.BtnA.wasPressed(), M5.BtnA.wasHold(1000),
                    M5.BtnB.isPressed());
  // Bouton C = Power : eteint l'ecran puis le HOLD laisse la charge
  if (M5.BtnC.wasPressed()) M5.Display.setBrightness(
      M5.Display.getBrightness() > 0 ? 0 : 128);
  delay(50);
}

← Retour à la fiche