🛠 Dominar las Entradas/Salidas GPIO en M5Paper
Objetivos
Este tutorial tiene como objetivo comprender la interacción de bajo nivel con el M5Paper. Aprenderás a identificar los pines GPIO disponibles, configurar un botón físico como entrada digital y controlar una salida (o simular una) según el estado del botón. También exploraremos las especificidades de la pantalla e-Ink para evitar actualizaciones innecesarias.
Material Necesario
- Tarjeta M5Paper (ESP32-D0WDQ6-V3)
- Cable USB-C para programación y alimentación
- Ordenador con Arduino IDE instalado
- Soporte M5Stack instalado en Arduino IDE
- Un pequeño botón pulsador externo (opcional, de lo contrario usa los botones integrados del M5Paper)
Pasos
- Configuración del entorno: Abre Arduino IDE, ve a *Preferencias* y añade la URL del gestor de tarjetas M5Stack. Instala la tarjeta «M5Paper» a través del *Gestor de tarjetas*.
- Identificación de pines: El M5Paper tiene varios GPIOs accesibles. Los botones físicos (BTN_A, BTN_B, BTN_C) suelen estar en los pines GPIO 39, 38 y 37. Consulta el esquema oficial para confirmar las asignaciones de tu revisión.
- Escritura del código: Crea un nuevo boceto. Incluye la biblioteca
M5Paper.h. Ensetup(), inicializa la placa conM5.begin()y configura el pin del botón comoINPUT_PULLUP.
#include <M5Paper.h>
const int btnPin = 39; // Ejemplo para BTN_A
void setup() {
M5.begin();
pinMode(btnPin, INPUT_PULLUP);
M5.Display.print("Presiona el botón");
}
- Lógica de lectura: En
loop(), lee el estado del botón condigitalRead(). Ten en cuenta que conINPUT_PULLUP, el estado esLOWcuando se presiona. Añade un pequeño retraso (delay(50)) para evitar rebotes mecánicos.
void loop() {
if (digitalRead(btnPin) == LOW) {
M5.Display.print("¡Botón presionado!");
delay(500);
}
}
- Gestión de la pantalla e-Ink: La pantalla IT8951 es lenta. No llames a
M5.Display.update()en cada bucle. Usa el modo parcial si está disponible o limita las actualizaciones completas para preservar la batería.
Verificación
Carga el código en el M5Paper. Presiona el botón físico correspondiente. El texto en la pantalla debe cambiar. Si no ocurre nada, verifica el cableado o cambia el pin GPIO. Usa el monitor serie para depurar los valores de digitalRead.
Para ir más allá
Explora las interrupciones por hardware (attachInterrupt) para reaccionar instantáneamente a las pulsaciones sin consultar el pin continuamente, optimizando así el consumo de energía, crucial para aplicaciones IoT con batería.