Saltar al contenido principal

Código básico para leer la luz

Con el divisor conectado a A0.

1. Leer la luz​

#define LDR A0

void setup() {
Serial.begin(9600);
}

void loop() {
int luz = analogRead(LDR); // más luz = valor más alto
Serial.println(luz);
delay(100);
}

Tapa la LDR con el dedo y acércale una linterna mientras miras el Serial Plotter. Apunta los valores que salen con luz y a oscuras: los necesitas para el siguiente paso.

2. Encender un LED al oscurecer​

Usamos el LED de la placa (pin 13). Cuando la luz baja de un umbral, se enciende.

#define LDR A0
#define LED 13
const int UMBRAL = 300; // ajústalo con tus lecturas

void setup() {
pinMode(LED, OUTPUT);
}

void loop() {
int luz = analogRead(LDR);
digitalWrite(LED, luz < UMBRAL ? HIGH : LOW);
delay(50);
}

3. Sin parpadeos en el límite​

Si la luz está justo en el umbral, el LED tiembla entre encendido y apagado. Se evita con dos umbrales (histéresis): uno para encender y otro, algo más alto, para apagar.

const int ENCENDER = 280;
const int APAGAR = 340;
bool encendido = false;

void loop() {
int luz = analogRead(A0);

if (!encendido && luz < ENCENDER) encendido = true;
if (encendido && luz > APAGAR) encendido = false;

digitalWrite(13, encendido);
delay(50);
}

La histéresis es un truco que usarás con muchos sensores: temperatura, distancia, nivel de batería.

¿Y ahora qué?​

Con dos LDR y dos motores puedes montar un robot que persigue la luz: compara las dos lecturas y gira hacia la mayor.