toughc5-touch-ui-dashboard.ino

Kit de desarrollo IoT resistente a la intemperie M5Stack ToughC5 (ESP32-C5) · Archivo : toughc5-touch-ui-dashboard.ino · Lenguaje : Arduino C++ · Uso : Créer une interface utilisateur tactile personnalisée pour afficher l'état système et les entrées GPIO.

Interfaz gráfica táctil con retroalimentación visual y de audio a través del zumbador pasivo.

Usa la biblioteca M5GFX para un renderizado optimizado en la pantalla ILI9342C. El táctil capacitivo detecta coordenadas X/Y. El zumbador proporciona retroalimentación háptica de audio. Adecuado para paneles de control industriales.

toughc5-touch-ui-dashboard.ino

#include <M5ToughC5.h>
#include <M5GFX.h>

M5Canvas canvas(&M5.Display);

void drawButton(int x, int y, int w, int h, uint16_t color, const char* text, bool pressed) {
  canvas.fillRect(x, y, w, h, pressed ? DARKGREY : color);
  canvas.drawRect(x, y, w, h, WHITE);
  canvas.setTextColor(WHITE);
  canvas.setTextDatum(TL_DATUM);
  canvas.drawString(text, x + 5, y + 5);
}

void setup() {
  M5.begin();
  canvas.setColorDepth(16);
  canvas.createSprite(M5.Display.width(), M5.Display.height());
  canvas.fillScreen(BLACK);
}

void loop() {
  canvas.fillScreen(BLACK);
  
  // Header
  canvas.setTextColor(WHITE);
  canvas.drawString("System Status", 10, 10);
  
  // Simulated Data
  canvas.drawString("Temp: 24.5 C", 10, 40);
  canvas.drawString("Hum: 45 %", 10, 60);
  
  // Touchable Area
  bool isPressed = M5.Touch.isPressed();
  drawButton(10, 100, 100, 40, BLUE, "BTN 1", isPressed);
  
  if (isPressed) {
    auto touch = M5.Touch.getDetail();
    if (touch.x > 10 && touch.x < 110 && touch.y > 100 && touch.y < 140) {
      M5.Speaker.tone(1000, 50); // Feedback sonore via buzzer
      canvas.drawString("Pressed!", 120, 115);
    }
  }
  
  canvas.pushSprite(0, 0);
  delay(50);
}

← Volver a la ficha