Objetivos
- Usar el monitor serie (Serial.begin(115200)) como consola de depuración del M5Stack.
- Leer una entrada analógica en el conector Grove PORT.B (negro), conectado a G26/G36 — canales ADC1, utilizables incluso cuando el Wi-Fi está activo (a diferencia del ADC2).
- Mostrar el valor bruto (0-4095) tanto en el puerto serie como en la pantalla.
Material
- 1 M5Stack Core + cable USB-C.
- 1 sensor analógico Grove (potenciómetro, sensor de luz, etc.) en PORT.B, o simplemente un pin G36 conectado mediante un potenciómetro a 3,3 V y GND.
- Atención: lógica de 3,3 V — nunca inyectar 5 V en un pin analógico.
Código completo
#include <M5Unified.h>
const int PIN_CAPTEUR = 36; // PORT.B (Grove noir), ADC1_CH0
uint16_t moyenne {
uint32_t s = 0;
for (int i = 0; i < 16; i++) { s += analogRead(PIN_CAPTEUR); delay(2); }
return s / 16;
}
void setup {
Serial.begin(115200);
auto cfg = M5.config;
M5.begin(cfg);
analogReadResolution(12); // 0..4095
M5.Display.setTextSize(2);
Serial.println("Console serie M5Stack — 115200");
}
void loop {
uint16_t v = moyenne;
float mv = v * 3300.0f / 4095.0f; // ADC1 non linéaire en bout de plage
Serial.printf("brut=%u ~%u mV\n", v, (unsigned)mv);
M5.Display.fillRect(0, 40, 320, 60, TFT_BLACK);
M5.Display.setCursor(10, 45);
M5.Display.printf("ADC G36 : %u", v);
delay(250);
}
Verificación esperada
- El monitor serie (115200) muestra dos líneas nuevas por segundo con un valor bruto que cambia cuando se solicita al sensor (luz, potenciómetro).
- La pantalla muestra el mismo valor en caracteres grandes.
- A masa (pin desconectado o conectado a GND), el valor cae cerca de 0; cerca de 3,3 V supera los 3000.
Errores frecuentes
- Velocidad de serie incorrecta: el puente USB-serial (CP2104 o CH9102F) funciona a 115200; una velocidad diferente muestra ruido.
- Elegir un pin ADC2 (por ejemplo, G25, compartido con el altavoz): el ADC2 no está disponible en cuanto el Wi-Fi está funcionando, y G25 ya está ocupado por el altavoz.
- Esperar una precisión de codificador: el ADC del ESP32 clásico es no lineal; de ahí la media sobre 16 lecturas.
- Olvidar delay o vTaskDelay en loop: el watchdog y el Wi-Fi no toleran bien los bucles bloqueantes.
- Conectar 5 V a G36: el ESP32 funciona a un máximo de 3,3 V.