Usar un LDR para automatizar una tarea suele ser un ejemplo muy básico a la hora de empezar con Arduino. Esto es porque aglutina, en pocas líneas, todo lo que necesitas para empezar con fuerza en este mundillo de la electrónica amateur.
Qué es un LDR?
Un LDR (de su nombre en inglés Light-Dependent Resistor) no es más que un fotorresistor o fotorresistencia. Esto significa que es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente.
Un LDR puede también ser llamado fotoconductor, célula fotoeléctrica o resistor dependiente de la luz.
El cuerpo de un LDR está formado por una célula fotorreceptora y dos patillas o pines. En la siguiente imagen se muestra su símbolo eléctrico.
Ejemplo práctico con Arduino
En este ejemplo haremos un programa que enciende el LED 13 (el integrado en placa), lee un sensor de luz (un LDR) conectado al pin A5 y enciende un LED conectado al pin 3 con una intensidad inversamente proporcional a la intensidad que reporte el sensor (cuanta más luz ambiental, menos brilla el LED). Todo esto va a estar actualizándose cada 50 milisegundos, esto es, prácticamente a tiempo real. Además, vamos a dejar configurado el puerto serie para ver, desde el ordenador, el valor de entrada del sensor de luz (de 0 a 1023).
En este ejemplo ponemos en práctica los siguientes conceptos:
- Realizar un montaje básico
- Definir variables
- Escribir un pin en digital.
- Escribir un pin en analógico.
- Leer un sensor
- Abrir y leer un puerto serie
Bien, antes de comenzar, repasamos los materiales que vamos a necesitar para el montaje básico:
- Arduino UNO (o compatible)
- Protoboard o Breadboard
- Diodo LED de 5 mm y 20 mA
- Resistencia de 220 Ω (conectado al ánodo del LED)
- Resistencia de 10 KΩ (conectado al LDR)
- Sensor de luz LDR
- Juego de cables
Tras montar el circuito del sistema, procedemos a escribir el programa que cargaremos con el IDE de Arduino. Para ello, puedes copiar y pegar el siguiente ejemplo:
int analogPin = 3;
int digitalPin = 13;
int delayTime = 50;
int ldrPin = A5;
void setup() {
Serial.begin(9600);
pinMode(analogPin, OUTPUT);
}
void loop() {
int power = 255 - analogRead(ldrPin) / (1023 / 255);
analogWrite(analogPin, power);
digitalWrite(digitalPin, HIGH);
delay(delayTime);
Serial.println(analogRead(ldrPin));
}
Como vemos, el programa se divide en 3 partes. En la primera definimos las variables, en la segunda configuramos el programa y en la tercera ejecutamos el bucle que es en sí mismo el programa.
¡Disfrutad!