adc-12-bits.ino
La Due convierte a 12 bits bajo 3,3 V: cuatro veces más pasos que un AVR. Una media móvil de 16 muestras limpia el ruido y la tensión se devuelve en voltios.
Hardware necesario
Un Arduino Due (AT91SAM3X8E, ARM Cortex-M3 a 84 MHz) conectado por USB a su puerto « Programming ». Ojo: lógica de 3,3 V, nunca 5 V en los pines. 1 potenciómetro de 10 kΩ (o sensor analógico 0-3,3 V).
Cableado
Extremos del potenciómetro a 3,3 V/GND — nunca 5 V en una Due —, cursor a A0.
Funcionamiento
analogReadResolution(12) sube el ADC a 4096 pasos; un anillo de 16 valores suaviza antes de convertir a voltios. En el Arduino IDE, elija « Arduino Due (Programming Port) » y Subir; el monitor serie va a la velocidad fijada en el código.
Para ir más lejos
Dispare la adquisición con un timer TC para muestreo regular, o filtre por mediana contra picos.
adc-12-bits.ino
// ADC 12 bits (0..4095) sur A0, moyenne glissante sur 16 mesures.
const int N = 16;
long valeurs[N];
int idx = 0;
long somme = 0;
void setup() {
analogReadResolution(12); // 0..4095 au lieu de 0..1023
Serial.begin(115200);
}
void loop() {
somme -= valeurs[idx];
valeurs[idx] = analogRead(A0);
somme += valeurs[idx];
idx = (idx + 1) % N;
float tension = (somme / (float)N) * 3.3 / 4095.0;
Serial.print(somme / N);
Serial.print(F(" -> "));
Serial.println(tension, 3);
delay(100);
}