capteur-lumiere-ldr.ino

Arduino UNO R3 · Fichier : capteur-lumiere-ldr.ino · Langage : Arduino · Usage : Mesurer la luminosité avec une LDR et allumer une LED dans le noir

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 Uno R3 (ATmega328P, 5 V, 16 MHz) alimentée par USB ou jack 7-12 V. 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

Dans l'Arduino IDE, choisissez la carte « Arduino Uno » et le port série correspondant, puis cliquez sur Téléverser. Ouvrez le moniteur série à 9600 bauds pour suivre les messages.

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"));
    }
  }
}

← Retour à la fiche