🛠 Lire un capteur analogique sur le convertisseur 10 bits
Objectifs
Lire un capteur analogique (potentiomètre) sur l'entrée A0, comprendre le convertisseur analogique-numérique 10 bits (0 à 1023) du ATmega32U4, et commander une LED en PWM sur une des 7 broches PWM (3, 5, 6, 9, 10, 11, 13).
Matériel
- 1 Arduino Micro
- 1 potentiomètre 10 kΩ (extrémités sur 5V et GND, curseur sur A0)
- 1 LED + résistance 220 à 470 Ω sur la broche 9
- Câble micro-USB
Code complet
// Potentiometre sur A0 -> LED PWM sur broche 9.
// ADC 32U4 : 10 bits (0..1023) ; analogWrite : 8 bits (0..255), donc >> 2.
const uint8_t KNOB = A0;
const uint8_t LED = 9; // broche PWM : 3,5,6,9,10,11 ou 13
void setup {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop {
int brut = analogRead(KNOB); // 0..1023
analogWrite(LED, brut >> 2); // 0..255
Serial.println(brut);
delay(10);
}
Vérification attendue
En tournant le potentiomètre, la valeur affichée passe de 0 à 1023 et la LED s'allume progressivement. À mi-course, on lit environ 512.
Erreurs fréquentes
- Appliquer une valeur 0-1023 à analogWrite : les valeurs au-delà de 255 sont tronquées, la LED reste pleine. Penser à diviser par 4 (>> 2).
- Mettre la LED sur une broche non PWM (par exemple 4) : pas de variation, la LED clignote seulement.
- Confondre A0 avec la broche numérique 0 : la broche 0 est l'RX de Serial1 (UART TTL).
- Besoin de plus de canaux : A6 à A11 sont partagés avec les broches numériques 4, 6, 8, 9, 10, 12 (12 canaux au total, contre 6 sur Uno).
Autres tutoriels pour cette carte
- Faire clignoter la LED embarquée (et comprendre les LED TX/RX)
- Lire un bouton avec une résistance de pull-up interne
- Transformer le Micro en clavier USB (HID) avec bouton de sécurité
- Pont Serial vers Serial1 : passerelle USB vers TTL
- Piloter un servo moteur avec le PWM et un potentiomètre
- Sortir des sentiers : registres AVR et interruption externe
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino