m5paper_it8951_touch_scroll-6.ino

M5Paper: Kit de desarrollo IoT con pantalla táctil e-Ink · Archivo : m5paper_it8951_touch_scroll-6.ino · Lenguaje : C++ · Uso : Afficher un long texte sur l'écran e-Ink et gérer le défilement tactile via le capteur GT911.

Demuestra la interacción táctil capacitiva en la pantalla e-ink para desplazarse por contenido textual sin refrescar toda la página en cada paso.

Utiliza la biblioteca M5Paper. El controlador IT8951 maneja actualizaciones parciales para ahorrar energía. El GT911 detecta gestos táctiles. Asegúrese de que el modo táctil esté habilitado en M5.begin().

m5paper_it8951_touch_scroll-6.ino

#include <M5Paper.h>

// Définition des variables pour la gestion du défilement
int scrollOffset = 0;
const int lineHeight = 30;
const int totalLines = 20;
String displayText = "LIGNE 1\nLIGNE 2\nLIGNE 3\nLIGNE 4\nLIGNE 5\nLIGNE 6\nLIGNE 7\nLIGNE 8\nLIGNE 9\nLIGNE 10\nLIGNE 11\nLIGNE 12\nLIGNE 13\nLIGNE 14\nLIGNE 15\nLIGNE 16\nLIGNE 17\nLIGNE 18\nLIGNE 19\nLIGNE 20\nFIN";

void setup() {
  M5.begin(true, false, true); // Init Serial, I2C (Touch), LED (non utilisé ici)
  M5.Display.init();
  M5.Display.setRotation(1); // Paysage
  M5.Display.fillScreen(GREY);
  drawScreen();
}

void loop() {
  M5.update();
  if (M5.Touch.changed()) {
    TouchPoint_t pos = M5.Touch.getPressPoint();
    // Défilement simple : touche gauche = haut, touche droite = bas
    if (pos.x < M5.Display.width() / 2) {
        scrollOffset = max(0, scrollOffset - lineHeight);
    } else {
        scrollOffset = min(totalLines * lineHeight, scrollOffset + lineHeight);
    }
    drawScreen();
    M5.Display.update(); // Rafraîchissement partiel
  }
  delay(50);
}

void drawScreen() {
  M5.Display.fillScreen(WHITE);
  int y = 10 - scrollOffset;
  int lineNum = 0;
  
  // Affichage des lignes visibles
  for (int i = 0; i < totalLines; i++) {
    int currentY = y + i * lineHeight;
    if (currentY > -lineHeight && currentY < M5.Display.height()) {
       M5.Display.setCursor(10, currentY);
       M5.Display.setTextColor(BLACK, WHITE);
       M5.Display.print(String("Ligne ") + (i+1));
    }
  }
  M5.Display.setTextColor(GREY);
  M5.Display.setCursor(10, M5.Display.height() - 20);
  M5.Display.print("Touchez Gauche/Droite pour defiler");
}

← Volver a la ficha