Usar un LDR suele ser un ejemplo muy básico a la hora de empezar con Arduino. Aglutina, en pocas líneas, todo lo que necesitas para empezar con fuerza en este mundillo.

Un fotorresistor o fotorresistencia es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente.1​ Puede también ser llamado fotoconductor, célula fotoeléctrica o resistor dependiente de la luz, cuyas siglas, LDR, se originan de su nombre en inglés light-dependent resistor. Su cuerpo está formado por una célula fotorreceptora y dos patillas. En la siguiente imagen se muestra su símbolo eléctrico.

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), que se actualiza cada 50 milisegundos, prácticamente a tiempo real. Además, dejamos configurado el puerto serie para ver, en 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:

  1. Arduino UNO (o compatible)
  2. Protoboard o Breadboard
  3. Diodo LED de 5mm y 20mA
  4. Resistencia de 220Ω (conectado al ánodo del LED)
  5. Resistencia de 10KΩ (conectado al LDR)
  6. Sensor de luz LDR
  7. Juego de cables
Cableado del ejemplo con el LED y LDR

Esquema del cableado para este ejemplo

Tras montar el circuito del sistema, procedemos a escribir el programa que cargaremos con el Software 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!