analogique-12-bits.ino
Los ADC de Teensy llegan a 12 bits (0-4095) frente a 10 en los Arduino clásicos. Este sketch combina el promedio hardware (analogReadAveraging) y una ventana deslizante por software para una tensión muy estable de una LDR o un potenciómetro.
Hardware
Un Teensy 4.0 (NXP i.MX RT1062, Cortex-M7 @ 600 MHz, lógica de 3,3 V) alimentado por USB. 1 potenciómetro de 10 kΩ (o divisor con LDR) entre 3,3 V y GND, cursor a A0.
Cableado
Cursor del potenciómetro a A0, extremos a 3,3 V y GND. Nunca superar 3,3 V en una entrada analógica Teensy.
Funcionamiento
analogReadResolution(12) eleva la conversión a 4095 pasos; analogReadAveraging(8) ya promedia en hardware. La ventana deslizante de 16 valores suaviza picos residuales.
Ejecución
Con Teensyduino en el Arduino IDE, elige « Teensy 4.0 », Subir y confirma en el Teensy Loader. Los pines son de 3,3 V; el 4.0 es compatible en pines con el 3.2.
Variantes
Pasa a 13/14 bits según la placa (más lento), o muestrea de forma continua con el ADC DMA para audio.
analogique-12-bits.ino
// ADC 12 bits (0..4095) avec moyenne glissante sur A0.
const int CANAL = A0;
const int NB = 16; // taille de la fenetre glissante
uint16_t echantillons[NB];
int index = 0;
bool plein = false;
unsigned long derniereMesure = 0;
void setup() {
analogReadResolution(12); // 12 bits sur les Teensy (defaut 10)
analogReadAveraging(8); // moyenne materielle sur 8 echantillons
Serial.begin(9600);
}
void loop() {
if (millis() - derniereMesure < 100) return;
derniereMesure = millis();
echantillons[index] = analogRead(CANAL);
index = (index + 1) % NB;
if (index == 0) plein = true;
int n = plein ? NB : index;
if (n == 0) return;
long somme = 0;
for (int i = 0; i < n; i++) somme += echantillons[i];
long moyenne = somme / n;
float tension = moyenne * 3.3 / 4095.0; // entree max 3,3 V
Serial.print(F("brut=")); Serial.print(moyenne);
Serial.print(F(" -> ")); Serial.print(tension, 3);
Serial.println(F(" V"));
}