🛠 Thermomètre de lumière : LDR, seuils et hystérésis

Arduino UNO R3 · intermediaire · Schéma : IMG-uno-r3-intermediaire-1-capteur-lumiere-ldr.svg — pont diviseur LDR + résistance 10 kΩ entre 5 V et GND, point milieu vers A1, LED témoin sur pin 12.

Objectifs

Monter un vrai capteur analogique (photodépendance LDR en pont diviseur), calibrer un seuil en conditions réelles avec le Moniteur série, et éviter l'oscillation autour du seuil grâce à l'hystérésis. Niveau intermédiaire : on passe de « lire » à « interpréter ».

Matériel

Code complet

// LDR sur A1 (pont diviseur avec 10 k), LED témoin sur pin 12.
const uint8_t LDR = A1;
const uint8_t TEMOIN = 12;

// Hystérésis : deux seuils distincts pour éviter le clignotement.
const int SEUIL_OBSCURITE = 300;   // en dessous : nuit
const int SEUIL_JOUR      = 400;   // au-dessus : jour
bool nuit = false;

void setup {
  pinMode(TEMOIN, OUTPUT);
  Serial.begin(115200);
}

void loop {
  int v = analogRead(LDR);          // 0 = noir, 1023 = pleine lumière (selon montage)

  if (!nuit && v < SEUIL_OBSCURITE) {
    nuit = true;
    Serial.print(F("Nuit -> ")); Serial.println(v);
  } else if (nuit && v > SEUIL_JOUR) {
    nuit = false;
    Serial.print(F("Jour -> ")); Serial.println(v);
  }

  digitalWrite(TEMOIN, nuit ? HIGH : LOW);
  Serial.print(F("ldr=")); Serial.println(v);
  delay(100);
}

Vérification attendue

Le Moniteur série (115200) affiche une valeur stable qui monte quand vous approchez la lampe et baisse quand vous bouchez la LDR de la main. La LED témoin s'allume en dessous de ~300 et ne s'éteint qu'au-dessus de ~400 : entre les deux, aucun changement d'état — l'hystérésis fonctionne.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels