capteur-lumiere-ldr.ino
Une résistance dépendante de la lumière (LDR) montée en pont diviseur sur A0 permet de mesurer la luminosité ambiante. Quand la valeur passe sous le seuil, la LED 13 s'allume : un éclairage automatique de couloir en miniature.
Matériel requis
Une Arduino Pro Mini (ATmega328P, existe en 5 V/16 MHz et 3,3 V/8 MHz) reliée à un convertisseur USB-série (FTDI) ou un programmeur ICSP. 1 LDR (photorésistance) + 1 résistance fixe 10 kΩ + 1 LED + résistance 330 Ω.
Câblage
LDR entre 5V et A0, résistance 10 kΩ entre A0 et GND (diviseur). LED + 330 Ω sur la broche 13 vers GND.
Fonctionnement
analogRead() convertit la tension du diviseur (0-1023). Dans le noir la LDR résiste beaucoup, A0 tombe vers GND et la valeur baisse. La moyenne de 8 échantillons stabilise la mesure.
Exécution
Choisissez « Arduino Pro Mini » dans l'IDE (5 V/16 MHz ou 3,3 V/8 MHz selon votre modèle), le processeur ATmega328P, le bon port, puis Téléverser. Le convertisseur doit être câblé DTR-DTR, RX-TX, TX-RX, VCC-VCC, GND-GND.
Variantes
Inversez LDR et résistance pour une lecture croissante avec la lumière, ou remplacez la LED par un relais pour piloter un vrai éclairage 230 V.
capteur-lumiere-ldr.ino
// LDR en pont diviseur sur A0 : allumer une LED quand il fait sombre.
const int LDR = A0; // entree analogique 0..1023
const int LED = 13;
const int SEUIL = 500; // 0..1023, a ajuster selon la LDR et la lumiere
unsigned long derniereMesure = 0;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (millis() - derniereMesure >= 200) { // 5 mesures/s : evite le spam
derniereMesure = millis();
// Moyenne de 8 echantillons : filtre le bruit de l'ADC 10 bits.
long somme = 0;
for (int i = 0; i < 8; i++) {
somme += analogRead(LDR);
delayMicroseconds(100);
}
int valeur = somme / 8;
Serial.print(F("LDR = "));
Serial.print(valeur);
if (valeur < SEUIL) {
digitalWrite(LED, HIGH); // nuit : on eclaire
Serial.println(F(" -> OBSCURITE"));
} else {
digitalWrite(LED, LOW);
Serial.println(F(" -> jour"));
}
}
}