🛠 Lire un capteur analogique (potentiomètre)
Objectifs
Découvrir l'ADC 10 bits de l'ATmega328P sur la Pro Mini : la carte expose les entrées A0-A5 sur la rangée de picots, et la dernière révision SparkFun casse même les canaux supplémentaires ADC6/ADC7 (au-delà des 6 canaux de l'Uno). Point crucial propre à la Pro Mini : la référence de l'ADC est VCC, donc 5 V sur le modèle 5 V/16 MHz mais 3,3 V sur le modèle 3,3 V/8 MHz — la conversion en volts dépend de votre carte. On câble un potentiomètre en diviseur de tension sur A0 et on affiche valeur brute et millivolts.
Matériel
- 1 × Arduino Pro Mini (notez votre modèle : la pleine échelle de l'ADC vaut VCC, 5 V ou 3,3 V)
- 1 × potentiomètre 10 kΩ (ou capteur analogique : LDR + résistance, capteur de flexion…)
- 3 × câbles ; alimentation 3,3 V ou 5 V de la carte selon le modèle (jamais plus : l'ADC accepte 0-VCC maximum)
- Adaptateur FTDI/CP2102 pour le moniteur série
Code complet
// Lecture analogique 10 bits sur A0 — pleine echelle = VCC
const uint8_t CAPTEUR = A0;
const uint32_t FULLSCALE_MV = 5000; // 3300 pour le modèle 3,3 V/8 MHz
uint32_t derniere = 0;
void setup {
Serial.begin(57600); // A0 en entrée implicite pour analogRead
}
void loop {
if (millis - derniere >= 50) { // 20 affichages/s
derniere = millis;
int brut = analogRead(CAPTEUR); // 0..1023
uint32_t mv = (uint32_t)brut * FULLSCALE_MV / 1024UL;
Serial.print(brut);
Serial.print(F(" -> "));
Serial.print(mv);
Serial.println(F(" mV"));
}
}
Vérification attendue
En tournant le potentiomètre, la valeur brute suit 0 (curseur côté masse) à 1023 (curseur côté VCC) et les millivolts suivent 0-VCC. 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. Sur le modèle 3,3 V, passez FULLSCALE_MV à 3300 : sinon la tension affichée est fausse de +50 %.
Erreurs fréquentes
- Oublier que la pleine échelle vaut VCC : sur le modèle 3,3 V, convertir avec 5000 mV surestime toute mesure ; l'ADC n'a pas de référence interne fixe comme d'autres cartes.
- Mesurer plus que VCC 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 de la Pro Mini : 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.
- Confondre A4/A5 avec des entrées libres : ce sont aussi SDA/SCL de l'I²C — parfait plus tard, mais à ne pas câbler en analogique si l'I²C tourne.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-poussoir.inoArduinopwm-fade.inoArduinocapteur-lumiere-ldr.inoArduinoservo-balayage.inoArduinoruban-neopixel.inoArduino