🛠 Lire un capteur analogique avec le SAADC 12 bits
Objectifs
Configurer le convertisseur analogique-numérique du nRF52840 (SAADC, 6 broches 12 bits sur la Feather) pour lire un potentiomètre, convertir la valeur en millivolts et comprendre la logique 3,3 V. À la fin, vous saurez aussi lire le diviseur de tension batterie pour surveiller un LiPo.
Matériel
- 1× Adafruit Feather nRF52840 Express
- 1× potentiomètre 10 kΩ (ou capteur analogique 3,3 V)
- Câbles jumper + câble micro-USB à données
Code complet
// 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 schéma a une soie-ecrosee D5 la ou
// devrait figurer A6.
// >
// le schéma 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);
}
Vérification attendue
En tournant le potentiomètre, la valeur raw suit 0→4095 et les millivolts 0→3300 environ (course limitée par l'alimentation 3,3 V). Les valeurs sont stables au repos (±2 LSB) ; avec le doigt sur le curseur, un léger bruit normal apparaît.
Erreurs fréquentes
- Alimenter le capteur en 5 V : la logique Feather est en 3,3 V, ne jamais dépasser 3,3 V sur une broche ADC.
- Oublier
analogReadResolution(12): par défaut l'Arduino émule 10 bits et vous perdez la précision native du SAADC. - Masse non commune entre le capteur et la carte : lecture qui dérive ou reste à 0.
- Confondre broches ADC : seules 6 broches sont analogiques sur la Feather ; vérifier le brochage avant de câbler.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
neopixel_pulsation.pyPythonled_bouton.pyPythonentrees_num.pyPythonanalogique_lumiere.pyPythonservo_pwm.pyPythonscanner_i2c.pyPython