entree-analogique.ino
El ADC de 12 bits del H7 ofrece dieciséis veces la resolución de los Uno clásicos. La ventana deslizante de 16 medidas da tensiones estables para un sensor industrial 0-3,3 V o un divisor de batería.
Hardware
Un Arduino Portenta H7 (módulo ST STM32H747 doble núcleo Cortex-M7 @ 480 MHz + M4 @ 240 MHz, 8 MB SDRAM, conector high-density), alimentado por USB-C o 5 V. 1 potenciómetro de 10 kΩ para probar (o sensor 0-3,3 V).
Cableado
Cursor a A0, extremos a 3V3 y GND. Entrada estrictamente ≤ 3,3 V (los pines ADC no toleran 5 V).
Funcionamiento
analogReadResolution(12) explota toda la conversión; el promedio por software divide el ruido por 4. Referencia de conversión 3,3 V.
Ejecución
Arduino IDE con el core « Arduino Mbed OS Portenta Boards »: elige « Portenta H7 » (núcleo M7), el puerto USB-C y Subir. El selector M7/M4 del modo DFU permite cargar también el núcleo M4.
Variantes
Muestrear con DMA (API Mbed ADC) para un flujo rápido, o fijar una referencia externa para precisión.
entree-analogique.ino
// ADC 12 bits (0..4095) sur A0 avec moyenne glissante.
const int CANAL = A0;
const int NB = 16;
uint16_t fenetre[NB];
int idx = 0;
bool plein = false;
unsigned long t0 = 0;
void setup() {
analogReadResolution(12);
Serial.begin(9600);
}
void loop() {
if (millis() - t0 < 100) return;
t0 = millis();
fenetre[idx] = analogRead(CANAL);
idx = (idx + 1) % NB;
if (idx == 0) plein = true;
int n = plein ? NB : idx;
if (!n) return;
uint32_t somme = 0;
for (int i = 0; i < n; i++) somme += fenetre[i];
uint32_t moyenne = somme / n;
float tension = moyenne * 3.3f / 4095.0f;
Serial.printf("brut=%lu U=%.3f V\n", moyenne, tension);
}