🛠 Lire un capteur analogique avec l’ADC 10 bits
Objectifs
Utiliser le convertisseur analogique-numérique de l'ATmega2560 : la Mega 2560 possède 16 entrées analogiques (A0 à A15) avec une résolution de 10 bits, soit des valeurs entières de 0 à 1023 pour une tension de référence par défaut de 5 V. Vous apprendrez à lire un capteur, convertir la valeur en tension, et comprendre le rôle de la broche AREF.
Matériel
- 1 × Arduino Mega 2560 + câble USB
- 1 × potentiomètre 10 kΩ (simulant tout capteur analogique : LDR, capteur de flexion, etc.)
- Plaque d'essai et câbles
Branchez les deux extrémités du potentiomètre sur 5 V et GND, et le curseur (patte du milieu) sur A0. La référence analogique peut être modifiée via la broche AREF et la fonction analogReference — ne jamais appliquer une tension externe sur AREF sans lire la documentation préalablement.
Code complet
// Lecture ADC 10 bits — Arduino Mega 2560
const uint8_t CAPTEUR = A0; // 16 entrées : A0..A15
uint32_t t0 = 0;
void setup {
Serial.begin(115200);
}
void loop {
if (millis - t0 >= 100) { // 10 affichages / s
t0 = millis;
uint16_t brut = analogRead(CAPTEUR); // 0..1023
float tension = brut * (5.0 / 1023.0); // 0..5 V
Serial.print(F("brut=")); Serial.print(brut);
Serial.print(F(" tension=")); Serial.print(tension, 2);
Serial.println(F(" V"));
}
}
Vérification attendue
En tournant le potentiomètre, la valeur brute passe de 0 à 1023 et la tension de 0,00 à 5,00 V dans le moniteur série à 115200 bauds. Une mesure au multimètre entre A0 et GND doit confirmer la tension affichée (à la précision près de l'ADC 10 bits : 5 V / 1024 ≈ 4,9 mV par pas).
Erreurs fréquentes
- Appliquer plus de 5 V sur une entrée analogique : risque de dommage permanent (logique 5 V).
- Confondre les échelles :
analogReadrenvoie 0–1023, pas 0–5 ni 0–255 ; pour piloter une sortie PWM (analogWrite, 0–255), pensez à diviser par 4. - Entrée non connectée : la valeur « danse » parce que l'entrée flotte.
- Oublier que les 16 entrées A0–A15 partagent l'unique ADC : la lecture est séquentielle, ce qui compte dans les mesures rapides.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinodouble-servo.inoArduinopont-uart.inoArduinopwm-respiration.inoArduinopotentiometre-plotter.inoArduino