capteur-lumiere-ldr.ino
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"));
}
}
}