🛠 Lire un capteur analogique avec le SAADC 12 bits
Objetivos
Configurar el convertidor analógico-digital del nRF52840 (SAADC, 6 pines de 12 bits en la Feather) para leer un potenciómetro, convertir el valor a milivoltios y comprender la lógica de 3,3 V. Al final, también sabrás leer el divisor de tensión de la batería para monitorizar una LiPo.
Material
- 1× Adafruit Feather nRF52840 Express
- 1× potenciómetro de 10 kΩ (o sensor analógico de 3,3 V)
- Cables jumper + cable micro-USB con datos
Código completo
// nrf52840-capteur-analogique-saadc.ino
const uint8_t SENSOR_PIN = A0;
// Diviseur batterie : sur les Feather nRF52840, le diviseur VIN est cablé sur
// une broche analogique ; la revue D du schema a une soie-ecrosee D5 la ou
// devrait figurer A6.
// >
// le schema officiel Adafruit (github.com/adafruit/Adafruit-nRF52-Bluefruit-Feather-PCB).
void setup {
Serial.begin(115200);
analogReadResolution(12); // 0..4095 sur SAADC 12 bits
analogReference(AR_INTERNAL_3_6); // reference interne 3,6 V
}
void loop {
uint16_t raw = analogRead(SENSOR_PIN);
float mv = raw * 3600.0f / 4095.0f;
Serial.print("raw="); Serial.print(raw);
Serial.print(" ~"); Serial.print(mv, 0); Serial.println(" mV");
delay(100);
}
Verificación esperada
Al girar el potenciómetro, el valor raw sigue de 0→4095 y los milivoltios de 0→3300 aproximadamente (recorrido limitado por la alimentación de 3,3 V). Los valores son estables en reposo (±2 LSB); con el dedo sobre el cursor, aparece un ligero ruido normal.
Errores frecuentes
- Alimentar el sensor a 5 V: la lógica de la Feather es de 3,3 V, nunca superar los 3,3 V en un pin ADC.
- Olvidar
analogReadResolution(12): por defecto, Arduino emula 10 bits y pierdes la precisión nativa del SAADC. - Masa no común entre el sensor y la placa: lectura que se desvía o permanece en 0.
- Confundir los pines ADC: solo 6 pines son analógicos en la Feather; verifica el esquema de pines antes de cablear.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython