🛠 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.

Objetivos

Montar un sensor analógico real (LDR en divisor de tensión), calibrar un umbral en condiciones reales con el Monitor serie y evitar la oscilación alrededor del umbral gracias a la histéresis. Nivel intermedio: pasamos de «leer» a «interpretar».

Material

Código completo

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

Verificación esperada

El Monitor serie (115200) muestra un valor estable que sube cuando acercas la lámpara y baja cuando tapas el LDR con la mano. El LED indicador se enciende por debajo de ~300 y solo se apaga por encima de ~400: entre ambos valores, no hay cambio de estado — la histéresis funciona.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales