adc-filtre.ino
El convertidor analógico del Nano Every sigue siendo de 10 bits pero gana referencias internas de 1,024/2,048 V, valiosas para señales pequeñas. Este filtro exponencial suaviza el potenciómetro sin búfer y solo saca si el valor se mueve de verdad.
Hardware
Un Arduino Nano Every (ATmega4809 a 20 MHz, mismo formato que el Nano, USB micro-B, chip UART separado, pines de 5 V, compatibilidad directa con el Nano clásico). Nano Every, fuente analógica 0-5 V en A0 (potenciómetro para probar).
Cableado
Señal en A0, GND común; nunca superes VCC (5 V) en un pin del 4809.
Funcionamiento
La media exponencial (alpha=0.1) pondera cada lectura: constante de tiempo ~200 ms a 50 Hz. El umbral de 2 puntos evita llenar el monitor con ruido de fondo.
Ejecución
Instala el paquete Arduino megaAVR Boards en el IDE, selecciona Arduino Nano Every y carga. El Serial USB está separado del Serial1 de hardware (pines RX/TX): el código serie clásico funciona tal cual.
Variantes
Pon analogReference(INTERNAL) para un sensor 0-1 V sin amplificador, o sube ALPHA si la reactividad prima sobre el ruido.
adc-filtre.ino
// ADC du 4809 : 10 bits comme le 328P, mais reference configurable.
// Filtre exponentiel + seuil de changement pour le moniteur serie.
const int CANAL = A0;
const float ALPHA = 0.1; // poids de la nouvelle mesure
float valeur = 0;
bool init = false;
unsigned long dernier = 0;
void setup() {
Serial.begin(115200);
analogReadResolution(10); // 0..1023 (par defaut sur Every)
analogReference(DEFAULT); // 5 V ; INTERNAL = 1.024 V ou 2.048 V
}
void loop() {
if (millis() - dernier < 20) return; // 50 Hz
dernier = millis();
float brut = analogRead(CANAL);
if (!init) { valeur = brut; init = true; }
// moyenne exponentielle : reactivite sans buffer de 16 mesures
valeur = valeur * (1 - ALPHA) + brut * ALPHA;
static float derniereSortie = -10;
if (abs(valeur - derniereSortie) >= 2) { // mort d'affichage
derniereSortie = valeur;
Serial.print(F("brut="));
Serial.print(valeur, 1);
Serial.print(F(" V="));
Serial.println(valeur * (5.0 / 1023.0), 3);
}
}