🛠 Lire un capteur analogique (potentiomètre)
Objectifs
Lire un capteur analogique — ici un potentiomètre — sur une des 16 entrées analogiques de l'ATmega2560 (conversion 10 bits, valeurs 0 à 1023, référence 5 V par défaut, ajustable via la broche AREF et analogReference), puis commander la luminosité d'une LED par MLI (PWM). Rappel des ressources de la carte : 15 canaux PWM (broches 2 à 13 et 44 à 46) pilotés par analogWrite sur 0–255, et 54 broches numériques au total.
Matériel
- 1 × Arduino Mega ADK
- 1 × potentiomètre 10 kΩ : broche de gauche → 5 V, broche de droite → GND, curseur (broche du milieu) → A0
- 1 × LED + résistance 220 Ω sur la broche 9 (broche PWM valide)
- Câble USB type B
- Ne rien brancher sur la broche 7 (RST du MAX3421E)
Code complet
// mega-adk-capteur-analogique.ino — Board: "Arduino Mega ADK"
const byte ENTREE_ANA = A0; // 16 entrées analogiques, 10 bits : 0..1023
const byte LED_PWM = 9; // PWM : broches 2-13 et 44-46
void setup {
Serial.begin(9600);
pinMode(LED_PWM, OUTPUT);
analogReference(DEFAULT); // référence 5 V par défaut
}
void loop {
int brut = analogRead(ENTREE_ANA); // 0..1023
int valeurMoyenne = 0;
for (int i = 0; i < 8; i++) { // moyenne simple sur 8 échantillons
valeurMoyenne += analogRead(ENTREE_ANA);
delay(1);
}
valeurMoyenne /= 8;
byte consigne = map(valeurMoyenne, 0, 1023, 0, 255);
analogWrite(LED_PWM, consigne); // 0..255
Serial.print(F("brut=")); Serial.print(brut);
Serial.print(F(" moyenne="")); Serial.print(valeurMoyenne);
Serial.print(F(" pwm="")); Serial.println(consigne);
delay(100);
}
Vérification attendue
En tournant le potentiomètre, la valeur lue suit 0 → 1023 et la LED s'éteint progressivement puis s'intensifie. La moyenne sur 8 échantillons stabilise l'affichage série. Les paliers de la MLI 8 bits restent peu visibles à l'œil sur l'ATmega2560.
Erreurs fréquentes
- Potentiomètre dont les deux broches extrêmes ne sont pas reliées à 5 V et GND : lecture flottante ou bloquée à 0/1023.
- LED branchée sur une broche non PWM : analogWrite n'a aucun effet — vérifier la liste 2-13 et 44-46.
- Confusion des échelles 0-1023 (analogRead) et 0-255 (analogWrite) : sans map, la LED sature dès le premier quart de course.
- Entrée analogique laissée en l'air : la valeur « respire » toute seule, comportement normal d'une entrée haute impédance.
- Capteur réel (LDR, TMP36…) : vérifier l'échelle de tension ; ne jamais dépasser 5 V sur une broche, alimenter le capteur en 3,3 V si besoin — la broche 3V3 est limitée à 50 mA.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinoscan-hote-usb.inoArduinoadk-chat-android.inoArduinoadk-telemetrie.inoArduinohote-clavier-usb.inoArduino