🛠 Lire un capteur analogique (potentiomètre)
Objectifs
Découvrir l'ADC 10 bits du ATmega328P : le Nano classique dispose de 8 entrées analogiques (A0-A7, dont A6/A7 spécifiques au format Nano) qui convertissent 0-5 V en valeurs 0-1023. On câble un potentiomètre en diviseur de tension sur A0 et on affiche la valeur sur le moniteur série et le traceur série.
Matériel
- 1 × Arduino Nano classique (ATmega328P, ADC 10 bits, 8 entrées analogiques)
- 1 × potentiomètre 10 kΩ (ou capteur analogique : LDR + résistance, capteur de flexion…)
- 3 × câbles ; alimentation 5 V de la carte (jamais plus : l'ADC accepte 0-5 V maximum)
Code complet
// Lecture analogique 10 bits sur A0
const uint8_t CAPTEUR = A0;
uint32_t derniere = 0;
void setup {
Serial.begin(9600); // A0 en entrée implicite pour analogRead
}
void loop {
if (millis - derniere >= 50) { // 20 affichages/s
derniere = millis;
int brut = analogRead(CAPTEUR); // 0..1023
float tension = brut * (5.0 / 1023.0); // conversion en volts
Serial.print(brut);
Serial.print(F(" -> "));
Serial.print(tension);
Serial.println(F(" V"));
}
}
Vérification attendue
En tournant le potentiomètre, la valeur brute suit 0 (curseur côté masse) à 1023 (curseur côté 5 V) et la tension affichée suit 0,00-5,00 V. Le traceur série dessine une droite continue. Les valeurs au repos sont stables à ±1 près, preuve d'un bon contact de la masse.
Erreurs fréquentes
- Mesurer plus de 5 V sur l'entrée : l'ADC est limité à Vcc ; au-delà on risque d'endommager la broche (utiliser un diviseur pour 12 V).
- Oublier de relier la masse du capteur à la masse du Nano : la lecture dérive et oscille sans raison.
- Attendre 0-5 V en analogRead : la fonction renvoie 0-1023, pas des volts ; la conversion manuelle est nécessaire.
- Câbler le curseur sur 5 V et les deux autres broches ensemble : la valeur ne bouge plus, le diviseur est court-circuité.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
buzzer-melodie.inoArduinoservo-sweep.inoArduinoultrason-hcsr04.inoArduinolcd-i2c.inoArduinoeeprom-contre.inoArduinosommeil-watchdog.inoArduino