En el tema de electrónica básica y robótica, hemos diseñado un dispositivo que es capaz de encender y apagar luces en función de la cantidad de luz de la habitación.
En este proyecto, vamos a utilizar un LDR para simular una hipotética compensación lumínica de 3 niveles, es decir, a través de una resistencia que varia su valor dependiendo de la luz recibida, aprovecharemos dicha variación para hacer un programa que nos encienda o apague una serie de LED dependiendo de si hay más luz o menos luz.
En este proyecto, vamos a utilizar un LDR para simular una hipotética compensación lumínica de 3 niveles, es decir, a través de una resistencia que varia su valor dependiendo de la luz recibida, aprovecharemos dicha variación para hacer un programa que nos encienda o apague una serie de LED dependiendo de si hay más luz o menos luz.
Además
le hemos implementado un potenciómetro para ajustar el nivel crítico mínimo de
luz que queremos soportar, a partir del cual se activará nuestro circuito y
empezará a aumentar la luz del lugar progresivamente.
Para el montaje electrónico del circuito necesitamos los siguientes componentes:
Para el montaje electrónico del circuito necesitamos los siguientes componentes:
- 1 x Arduino
Uno
- 1 x Protoboard
- 1 x LDR
- 1 x Potenciómetro 10kΩ
- 3 x Diodos
LED
- 3 x Resistencias 220Ω
- 1 x Resistencia 1KΩ
- 1 x
Juego de Cables
Seguimos el siguiente esquema de conexionado:
La placa de hardware libre "Arduino Uno" la programaremos con el siguiente código:
int valorLDR = 0;
int pinLed1 = 12;
int pinLed2 = 11;
int pinLed3 = 10;
int pinLDR = 0;
void setup()
{
pinMode(pinLed1, OUTPUT);
pinMode(pinLed2, OUTPUT);
pinMode(pinLed3, OUTPUT);
analogReference(EXTERNAL);
}
void loop()
{
valorLDR = analogRead(pinLDR);
if(valorLDR >= 1023)
{
digitalWrite(pinLed1, LOW);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
}
else if(valorLDR >= 823)
{
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, LOW);
digitalWrite(pinLed3, LOW);
}
else if(valorLDR >= 623)
{
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, LOW);
}
else
{
digitalWrite(pinLed1, HIGH);
digitalWrite(pinLed2, HIGH);
digitalWrite(pinLed3, HIGH);
}
}