🛠 Lire un capteur analogique sur A0 (ADC 12 bits)
Objectifs
Lire un capteur analogique (potentiomètre ou capteur de lumière) sur A0 avec l'ADC 12 bits de l'ESP32-S3 (0-4095 pour 0-3,3 V), convertir la valeur en tension et comprendre le piège ADC2/Wi-Fi.
Matériel
- 1 × Arduino Nano ESP32
- 1 × potentiomètre 10 kΩ (patte 1 → 3,3 V, patte 2 → A0, patte 3 → GND)
- Attention : toute la carte est en 3,3 V, aucun signal ne doit dépasser 3,3 V sur une broche (et la carte n'a aucune broche 5 V)
Code complet
// A0..A7 : 8 entrées analogiques, ADC 12 bits, 3,3 V max (docs-db)
void setup {
Serial.begin(115200);
}
void loop {
int raw = analogRead(A0); // 0..4095
float mv = raw * (3300.0 / 4095.0); // tension en millivolts
Serial.printf("A0 = %d (%.0f mV)\n", raw, mv);
delay(200);
}
Vérification attendue
En tournant le potentiomètre, la valeur brute suit 0 → 4095 et la tension 0 → environ 3300 mV. Au repos, les valeurs restent stables (bruit de quelques unités seulement).
Erreurs fréquentes
- Piège ADC2/Wi-Fi : sur ESP32, les canaux ADC2 deviennent inutilisables (lecture 0 ou erratique) dès que le Wi-Fi est actif. >
- Alimenter le capteur en 5 V : dépassement de 3,3 V sur l'ADC ; la carte n'a d'ailleurs aucune broche 5 V.
- Attendre du 10 bits comme sur un AVR : ici c'est 12 bits (0-4095).
- Fils trop longs sans masse commune avec la carte : mesures qui sautent en permanence.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
connexion-wifi.inoArduinopoint-acces.inoArduinoble-capteur.inoArduinoneoled-rgb.inoArduinoadc-12bits.inoArduinopreferences.inoArduino