En este proyecto, se aprenderá a usar una fotocelda LDR como sensor de luz y con ello modificaremos el brillo de un LED de acuerdo a la intensidad lumínica del entorno.
Teoría acerca de la fotocelda: Una fotocelda o fotorresistor es un dispositivo cuya resistencia varía de acuerdo a la luz del entorno. Su valor de resistencia es muy baja cuando incide luz sobre su superficie y en la oscuridad su resistencia es alta.
Como la resistencia varía de acuerdo a la intensidad de luz, la fotocelda se considera como un sensor de luz análogo, por lo tanto se debe conectar a un pin para lectura análoga de la tarjeta Arduino.
Materiales
La conexión es sencilla: Una pata de la fotocelda va a fuente, que en este caso son 5V y la otra va a negativo a través de una resistencia de 10K. En esa misma pata del negativo, se conecta el cable hacia el pin de lectura del Arduino, así:
En este caso, la lectura análoga va desde 0V hasta 5V. La tarjeta Arduino lo interpreta como un rango entre 0 y 1023. Esto es con la configuración de la resistencia de 10K, pero se puede usar de otro valor, por ejemplo, de 1K.
Se va a usar un LED cuyo brillo aumentará conforme la fotocelda detecte que hay poca luz, y viceversa. Para eso se conecta a un pin PWM del Arduino.
En este proyecto es necesario el uso de la función map(), la cual mapea o acota los valores leídos (desde 0 hasta 1023) y los convierte en un rango entre 0 y 255, ya que estos últimos son los valores mínimos y máximos que se pueden aplicar vía PWM.
La función map() lleva estos parámetros en el siguiente orden:
Teoría acerca de la fotocelda: Una fotocelda o fotorresistor es un dispositivo cuya resistencia varía de acuerdo a la luz del entorno. Su valor de resistencia es muy baja cuando incide luz sobre su superficie y en la oscuridad su resistencia es alta.
Como la resistencia varía de acuerdo a la intensidad de luz, la fotocelda se considera como un sensor de luz análogo, por lo tanto se debe conectar a un pin para lectura análoga de la tarjeta Arduino.
Materiales
- 1 fotocelda LDR
- 1 resistencia de 10K ohm
- 1 resistencia de 220 ohm
- 1 LED de cualquier color
- Cables
- Protoboard o breadboard
- Arduino
La conexión es sencilla: Una pata de la fotocelda va a fuente, que en este caso son 5V y la otra va a negativo a través de una resistencia de 10K. En esa misma pata del negativo, se conecta el cable hacia el pin de lectura del Arduino, así:
En este caso, la lectura análoga va desde 0V hasta 5V. La tarjeta Arduino lo interpreta como un rango entre 0 y 1023. Esto es con la configuración de la resistencia de 10K, pero se puede usar de otro valor, por ejemplo, de 1K.
Se va a usar un LED cuyo brillo aumentará conforme la fotocelda detecte que hay poca luz, y viceversa. Para eso se conecta a un pin PWM del Arduino.
En este proyecto es necesario el uso de la función map(), la cual mapea o acota los valores leídos (desde 0 hasta 1023) y los convierte en un rango entre 0 y 255, ya que estos últimos son los valores mínimos y máximos que se pueden aplicar vía PWM.
La función map() lleva estos parámetros en el siguiente orden:
- El valor de lectura que se va a mapear o acotar
- Valor mínimo que se puede leer (en este caso es 0)
- Valor máximo que se puede leer (en este caso 1023)
- El valor mínimo del nuevo rango (en este caso 0)
- El valor máximo del nuevo rango (en este caso 255)
Como en este proyecto la intensidad de brillo del led es inversamente proporcional a la luz que incide sobre la fotocelda, el mapeo de valores no se hace desde 0 hasta 1023 sino desde 1023 hasta 0, es decir, se invierte.
Dicho esto, las conexiones quedan de la siguiente manera:
En este video se puede ver este proyecto en funcionamiento, el cual se recomienda probar en un lugar oscuro o con poca luminosidad:
El código del programa se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZVXhPYndrbXEzQ3c
Este comentario ha sido eliminado por el autor.
ResponderBorraresta vacio el arhivo.
ResponderBorrarcome mierda
ResponderBorrarint sensor_luz = A0;
ResponderBorrarint led_rojo = 9;
int valor_luz;
int brillo_led;
void setup() {
pinMode(sensor_luz,INPUT);
pinMode(led_rojo,OUTPUT);
}
void loop() {
valor_luz = 1023 - analogRead(A0);
brillo_led = map(valor_luz, 0, 1023, 0, 255);
analogWrite(led_rojo, brillo_led);
}
Este es el codigo
gracias
Borrar