capteur-lumiere-ldr.ino

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

Una resistencia dependiente de la luz (LDR) montada como divisor de tensión en A0 mide la luminosidad ambiente. Cuando el valor baja del umbral, el LED 13 se enciende: una miniatura de luz automática de pasillo.

Hardware

Un Arduino Uno R3 (ATmega328P, 5 V, 16 MHz) alimentado por USB o jack de 7-12 V. 1 LDR (fotorresistencia) + 1 resistencia fija de 10 kΩ + 1 LED + resistencia de 330 Ω.

Cableado

LDR entre 5V y A0, resistencia de 10 kΩ entre A0 y GND (divisor). LED + 330 Ω en el pin 13 hacia GND.

Funcionamiento

analogRead() convierte la tensión del divisor (0-1023). En la oscuridad la LDR resiste mucho, A0 cae hacia GND y el valor baja. El promedio de 8 muestras estabiliza la medida.

Ejecución

En el Arduino IDE, elige la placa « Arduino Uno » y el puerto serie correspondiente y pulsa Subir. Abre el monitor serie a 9600 baudios para seguir los mensajes.

Variantes

Intercambia la LDR y la resistencia para una lectura creciente con la luz, o sustituye el LED por un relé para controlar iluminación real de 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"));
    }
  }
}

← Volver a la ficha