Jusqu'ici, tout était binaire : ON/OFF, appuyé/relâché. Le monde réel est analogique — la lumière varie graduellement, la distance est un nombre continu, la température change par fractions de degré. Cette phase fait passer l'ESP32 d'un détecteur binaire à un vrai système de perception.
Le potentiomètre ("pot") est une résistance variable qu'on tourne avec les doigts. C'est l'entrée analogique la plus simple : tu tournes, la valeur change.
Le concept clé — analogRead() :
L'ESP32 a un ADC (Analog-to-Digital Converter) 12 bits. Il convertit une tension (0V à 3.3V) en un nombre (0 à 4095). C'est 4096 niveaux de précision.
Le concept clé — map() :
int luminosite = map(valeurBrute, 0, 4095, 0, 255);
analogWrite(LED_PIN, luminosite);
Premier vrai capteur d'environnement. La LDR change de résistance selon la lumière ambiante.
Surprise matérielle : Mon kit n'avait pas une LDR brute mais un module "MH Sensor Series" avec 4 pins (VCC, GND, AO, DO). Pas besoin de résistance supplémentaire.
Bug — Signal inversé : Le module MH Sensor donne une valeur haute quand c'est sombre et basse quand c'est lumineux. Il a fallu inverser le mapping :
// Corrigé : min/max swappés
int pourcent = map(valeur, valeurMax, valeurMin, 0, 100);
Nouveaux concepts :
constrain() — borner une valeur entre un min et un maxLe composant le plus impressionnant — il a deux "yeux" (un émetteur et un récepteur ultrasons). Il mesure la distance en envoyant un ping sonore et en chronométrant l'écho.
La physique dans le code :
// Vitesse du son = 343 m/s = 0.0343 cm/µs
// Diviser par 2 : le son fait l'aller ET le retour
float distance = (duree * 0.0343) / 2.0;
Filtrage par médiane : La médiane de 3 lectures est plus robuste que la moyenne — une valeur aberrante (0 ou 999) est ignorée au lieu de fausser le résultat.
Le premier capteur numérique. Le DS18B20 a un petit processeur intégré qui envoie directement la température en °C via le protocole OneWire.
Nouvelles notions :
OneWire.h et DallasTemperature.hTenir la sonde entre les doigts fait monter la température de 25°C à 30°C !
Le projet combo qui utilise tous les capteurs en même temps : potentiomètre, LDR, ultrason, température, bouton, LED et buzzer. 8 pins occupés sur l'ESP32 !
Le système :
Bug de la LDR : L'alerte obscurité ne se déclenchait pas — la lumière ne descendait qu'à ~64% en couvrant le capteur, mais le seuil était à 20%. Solution : monter le seuil à 70% pour correspondre à l'environnement réel.
| Concept | Exercice | Application robot soccer |
|---|---|---|
analogRead / map |
3.1 | Lire joystick, capteurs IR |
| Calibration / lissage | 3.2 | Calibrer capteurs de ligne |
pulseIn / médiane |
3.3 | Mesure de distance fiable |
| Bibliothèques / OneWire | 3.4 | Bibliothèques moteurs, IMU |
| Multi-capteurs / fusion | 3.5 | Perception combinée |
Temps total : ~3 heures
Difficulté : Moyenne à difficile
Bugs mémorables : Signal LDR inversé + seuil d'obscurité trop bas
analogRead map calibration pulseIn OneWire multi-capteurs
En partant de zéro, en 3 sessions :
Le kit contient encore le servo moteur, l'écran LCD I2C, le clavier 4x4, et le capteur de mouvement PIR. La suite au prochain chapitre.