🛠 Lire un capteur analogique sur A0-A7
Objectifs
Lire une tension analogique avec l'ADC 10 bits de l'ATmega4809. La Nano Every expose 8 entrées analogiques A0 à A7 sur son connecteur (la puce en expose 14 canaux au total), converties entre 0 et la tension de référence (5 V par défaut).
Matériel
- 1 × Arduino Nano Every
- 1 × potentiomètre 10 kΩ (ou capteur analogique : LDR + résistance, capteur de flexion…)
- 3 × fils de connexion
- Câble micro-USB
Code complet
// Lecture du potentiomètre sur A0 + allumage seuil sur LED 13
const uint8_t CAPTEUR = A0;
const uint16_t SEUIL = 512;
uint32_t derniereImpression = 0;
void setup {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
void loop {
uint16_t brut = analogRead(CAPTEUR); // 0..1023
float tension = brut * (5.0 / 1023.0); // 0.00..5.00 V
if (millis - derniereImpression >= 100) { // 10 Hz
derniereImpression = millis;
Serial.print("brut="); Serial.print(brut);
Serial.print(" U="); Serial.print(tension);
Serial.println(" V");
}
digitalWrite(LED_BUILTIN, brut > SEUIL ? HIGH : LOW);
}
Vérification attendue
Potentiomètre : curseur vers GND → lecture proche de 0 ; vers 5 V → proche de 1023. La LED 13 s'allume au-dessus de la moitié de la course. Le moniteur série affiche brut et tension à 10 Hz.
Erreurs fréquentes
- Lire une broche numérique en analogique : seules A0-A7 sont des entrées ADC côté connecteur.
- Attendre 1024 : l'ADC 10 bits va de 0 à 1023, d'où la division par 1023 et non 1024.
- Entrée non câblée : une broche ADC en l'air donne des valeurs qui dérivent — prévoyez toujours un chemin vers GND.
- Vitesse d'impression : imprimer à chaque
loopinonde le moniteur ; cadencez avecmilliscomme ci-dessus. - I²C sur cette carte n'est PAS sur A4/A5 par défaut (bus
Wiresur les broches dédiées SDA/SCL) : si vous reprenez un schéma de Nano classique, vérifiez bien ce point avant d'ajouter un capteur I²C.
Autres tutoriels pour cette carte
- Faire clignoter la LED builtin (broche 13)
- Lire un bouton avec résistance de pull-up interne
- Variateur lumineux en PWM (broches 3, 5, 6, 9, 10)
- Piloter un micro-servo avec la bibliothèque Servo
- Deux ports série : Serial (USB) et Serial1 (broches 0/1)
- Apprivoiser les registres modernes de l'ATmega4809 : le timer TCB
Exemples de code pour cette carte
multi-serie.inoArduinoadc-filtre.inoArduinointerrupt-bouton.inoArduinonvm-consignes.inoArduinosommeil-every.inoArduinowatchdog-secours.inoArduino