m5paper_it8951_touch_scroll-6.ino

M5Paper : Kit de développement IoT à écran e-Ink tactile · Fichier : m5paper_it8951_touch_scroll-6.ino · Langage : C++ · Usage : Afficher un long texte sur l'écran e-Ink et gérer le défilement tactile via le capteur GT911.

Démontre l'interaction tactile capacitive sur l'écran e-ink pour faire défiler du contenu textuel sans rafraîchir toute la page à chaque étape.

Utilise la bibliothèque M5Paper. Le pilote IT8951 gère l'affichage partiel pour économiser l'énergie. Le GT911 détecte les gestes tactiles. Assurez-vous que le mode tactile est activé dans 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");
}

← Retour à la fiche