¿Cómo usar un sensor LDR con Arduino?

¿Cómo usar un sensor LDR con Arduino?

¿Cómo usar un sensor LDR con Arduino?

El fin de este nuevo tutorial es aprender a utilizar un sensor LDR (Light-Dependent Resistor) junto a nuestro Arduino. Al finalizarlo, habremos creado un medidor de intensidad de luz ambiente haciendo uso de LEDs como indicadores y nuestro sensor LDR.
En primer lugar... ¿Qué es un sensor LDR? Se trata de un sensor que actúa como una resistencia variable en función de la luz que capta. A mayor intensidad de luz, menor resistencia: el sensor ofrece una resistencia de 1M ohm en la oscuridad, al rededor de 10k ohm en exposición de luz ambiente, hasta menos de 1k ohm expuesto a la luz del sol.
Otro concepto que debemos conocer es la diferencia entre pines digitales y pines analógicos. Hasta hora hemos utilizado únicamente pines digitales, los cuales pueden determinar como entrada o salida sólo dos valores lógicos de acuerdo a su voltaje: 1 o 0 (HIGH o LOW en el código, respectivamente). En cambio, los pines analógicos convierten el voltaje de entrada (entre 0v y 5v) a un valor digital que varía entre 0 y 1023. Según el valor en el cual se encuentre, podremos decir que hay más luz o menos luz, se está ejerciendo más fuera o menos, etc dependiendo del tipo de sensor que tengamos conectado al pin analógico.

Durante el desarrollo utilizaremos los siguientes componentes:

  1. Placa Arduino UNO
  2. Sensor LDR
  3. 3 LEDs
  4. 3 Resistencias 220ohm
  5. 1 Resistencia 10K ohm
  6. Breadboard
  7. Jumper cables
Componentes tutorial LDR con Arduino
Componentes tutorial LDR con Arduino

El circuito constará de dos partes, la que contiene a los LEDs, que será similar al circuito realizado en nuestro primer tutorial, y una segunda sección, la cual contendrá al sensor LDR. Para comprender bien como funciona y está formada la segunda parte del circuito, tendrán conocer el concepto de Divisor de Voltaje. En nuestro sitio poseemos una explicación clara y completa para que comprendan de qué se trata, para qué se usa y cómo funciona un divisor de voltaje. A continuación el esquema del circuito:

Diagrama sensor LDR con Arduino
Diagrama sensor LDR con Arduino

Obviaremos la parte del circuito que se encarga de conectar los LEDs a los pines digitales 2, 3 y 4, la cuál ya fue explicada en tutoriales previos (este y este) y pasaremos a la parte que más nos importa, ¿cómo conectar el sensor LDR? Como dijimos en la introducción, el LDR actúa como una resistencia variable. Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir la tensión de salida del mismo. Para ello utilizaremos un divisor de tensión, colocando el punto de lectura para Vout entre ambas resistencias. De esta forma:

V_{out} = \frac{R_{2}}{R_{1} + R_{2}} . V_{in}

Dónde Vout es el voltaje leído por el PIN analógico de Arduino y será convertido a un valor digital, Vin es el voltaje de entrada (5v), R2 será el valor de la resistencia fija colocada (10k ohm) y R1 es el valor resistivo del sensor LDR. A medida que el valor del sensor LDR varía, obtendremos una fracción mayor o menor del voltaje de entrada Vin.

Ahora que hemos visto el circuito, podemos pasar al código, que es bastante sencillo:

Una vez subido el sketch a nuestro Arduino, podemos verlo en funcionamiento:

Sensor LDR con Arduino
Sensor LDR con Arduino
Sensor LDR con Arduino

Fotos del circuito terminado:

Circuito finalizado: sensor LDR con Arduino
Circuito finalizado: LDR con Arduino

Botones y variables con Arduino

Botones y variables con Arduino

Usando botones y variables con Arduino

En este nuevo tutorial vamos a comenzar a utilizar botones para ingresar datos y variables para controlar estados. Al final del tutorial habremos elaborado un circuito que permitirá controlar 3 LEDs diferentes, haciendo uso de dos botones.

Durante el desarrollo utilizaremos los siguientes componentes:

  1. Placa Arduino UNO
  2. 3 LEDs
  3. 3 Resistencias 220ohm
  4. 2 Resistencias 10K
  5. 2 Push Buttons
  6. Breadboard
  7. Jumper cables
Botones y variables con Arduino: componentes
Botones y variables con Arduino: componentes

Utilizar botones push con arduino tiene un desafío: tendremos que hacer uso de un circuito electrónico denominado Resistencia Pull-Down, el cuál podrán encontrar detallado aquí o aquí.

Primera versión: usando un botón como un pulsador para encender / apagar un led

diagrama-button-led_bb
Botones y variables con Arduino: esquema circuito

En la parte izquierda de la breadboard se puede observar el circuito que involucra al botón, con su correspondiente resistencia Pull-Down para "estabilizar" los datos recibidos por el microcontrolador. El lado derecho, observamos una configuración de un LED con una resistencia de 220ohms, idéntica a la utilizada en nuestro primer tutorial.

Por si no tuvieron tiempo / ganas de ingresar a nuestra explicación de Resistencias Pull Down, les dejo un pequeño resumen de la motivación del circuito para que no se salven de entenderlo 😀
Imagínense el circuito sin la resistencia, se vería de la siguiente forma:

button-sin-pull-down_bb
Botones y variables con Arduino: Botón sin Pull Down

En este caso, si presionamos el botón los 5v fluirán hacia el PIN 3 de nuestro Arduino (el cual debe estar configurado como INPUT) y se leerá un 1 digital. El problema surge cuando se suelta el botón y el circuito no esta cerrado. En ese caso, la porción de circuito que va desde el botón hacia el PIN 3, puede verse afectado a ruido eléctrico que haga que el microcontrolador reciba a través de este PIN, voltajes que provoquen que lecturas errónes de 1 o 0 lógicos, lo cual se denomina PIN "flotante". Para evitar esta situación es que se utiliza la resistencia Pull Down. Como se ve en el primer esquema, en caso de estar el circuito abierto (ver esquema de botón para entender que patas se encuentran siempre en contacto y cuales no de un push button), el PIN 3 es conectado a GND (ground) a través de la resistencia de 10K ohm. Esto provocará que el valor que ingresa al microcontrolador a través del PIN sea de 0v, es decir un 0 lógico. Cuando el botón es pulsado, la corriente ingresa y se "bifurca" entre la entrada del PIN y la resistencia, para luego terminar en GND. Lo importante aquí, es que al PIN llegarán los 5v, por lo que la lectura será de un 1 lógico. En resumen, las resistencias pull-down se utilizan para evitar tener lecturas erróneas.

Volviendo al circuito correcto, aquí les dejo fotografías de como quedaría el circuito implementado:

Botones y variables con Arduino: circuito terminado
Botones y variables con Arduino: circuito terminado

Solamente nos falta el código para poder controlar el circuito desarrollado, manos a la obra:

Proyecto completo: controlar múltiples LEDs con dos botones.

Ahora que tenemos en claro el concepto de resistencias pull-down, manejo de estados de botones usando variables en el código de Arduino y el uso de LEDs, vamos a realizar algo un poco más complejo: con dos botones, controlaremos 3 LEDs. Con uno de los botones, iremos prendiendo LEDs hacia la derecha, y con el otro, apagando hacia la izquierda.
El mayor desafio de este programa estará en el código, debido a que a nivel "circuiteria", bastará con replicar lo realizado en el ejemplo anterior. Sin más, aquí está el esquema:

multi-button-led_bb

Y aquí la fotografía del circuito:

Botones y variables con Arduino: circuito terminado
Botones y variables con Arduino: circuito terminado

Ahora que tenemos el circuito, tenemos que realizar la parte difícil del ejercicio, el código 😀

Presten particular atención a la última línea de código "delay(200)". Si no colocan esta línea, el tiempo que se demora en presionar y soltar el botón, será demasiado largo, en comparación con el tiempo que demora cada iteración, provocando que presionando sólo una vez el botón, el estado pase inmediatamente a valer 3, quedando solamente el LED rojo prendido.

"Hello World" de Arduino: Blink!

"Hello World" de Arduino: Blink!

Blink, un LED parpadeante con Arduino!

Quizás el ejemplo básico equivalente al "Hello World" (https://es.wikipedia.org/wiki/Hola_mundo) de cualquier lenguaje de programación en Arduino es "Blink", un led parpadeante con Arduino. En tutorial de Arduino simplemente en hacer parpadear un led haciendo uso de nuestra placa Arduino. En este caso utilizaremos una placa Arduino UNO R3.

Durante el desarrollo utilizaremos los siguientes componentes:

  1. Placa Arduino UNO
  2. LED
  3. Resistencia 220ohm
  4. Breadboard
  5. Jumper cables

Previamente deberán haber descargado e instalado el entorno de desarrollo de Arduino (IDE), en caso de no haberlo hecho, pueden aprender a hacerlo aquí.

Componentes Ejemplo Blink

Primera implementación: utilizando el LED del pin 13 de Arduino UNO.

En una primera implementación utilizaremos el led integrado que la placa Arduino UNO posee en su pin digital número 13en lugar de uno externo a la placa. Para esta primera implementación no será necesario ningún esquema. Bastará solamente con subir nuestro sketch a la placa, conectandola por USB a nuestra PC (acá podés ver como hacerlo). El código es el siguiente:

Una vez ingresado el código en nuestra IDE, bastará con conectar por USB nuestro arduino, subir el sketch y admirar nuestro primer ejemplo funcionando. Sencillo, verdad?
El resultado:

led-interno-2
led-interno-1

Una versión más interesante: utilizando un LED externo.

En esta nueva versión haremos uso del LED externo, la resistencia de 220ohm, la breadboard y los jumper cables. A continuación el esquema del circuito que debemos realizar:

Diagrama Blink

El código será exactamente el mismo que el realizado para el ejemplo sin el led exterior, ya que el pin utilizado para alimentar al led será el mismo que el que habíamos declarado previamente. Desde nuestro Arduino UNO vemos que salen dos cables, uno desde el PIN número 13, que será quien le indique al LED que debe prenderse o apagarse, según el voltage que circule a través del mismo (HIGH / LOW). Entre el cable rojo saliente del PIN 13 y el LED, vemos que se interpone una resistencia, esto se debe a que los PINs envían 5v, valor que no es soportado por el LED (voltajes soportados por LEDs). Para disminuir el voltaje recibido por el LED utilizamos la resistencia de 220ohm, aunque otras de mayor valor podrán funcionar, disminuyendo el brillo emitido por el LED. En caso de no colocar una resistencia entre el LED y el PIN de nuestro Arduino dañaremos el LED. La resistencia estará conectada en su otro extremo al ánodo (+) de nuestro LED.

El cable negro que se observa en el diagrama parte del pin GND (Ground: https://en.wikipedia.org/wiki/Ground_(electricity)#Electronics) de nuestro Arduino y se conecta a la tira horizontal de nuestro breadboard, para luego conectarse al cátodo (-) de nuestro diodo LED.

Conectando nuevamente nuestro Arduino a la PC o fuente de alimentación externa, podremos ver como ahora tanto el LED integrado de Arduino, como nuestro LED externo comienzan a parpadear. A continuación las fotos de nuestro LED parpadeante finalizado:

led_externo-1
led_externo-2

Instalación del Entorno de Desarrollo de Arduino

Instalación del Entorno de Desarrollo de Arduino

Instalación del Entorno de Desarrollo de Arduino (IDE)

Bienvenidos a esta primer guía que les servirá de ayuda durante la descarga e instalación del entorno de desarrollo de Arduino. Podrán encontrar los archivos descargables para su sistema operativo de preferencia en el sitio de Arduino: www.arduino.cc (https://www.arduino.cc/en/Main/Software), dentro de la sección de descargas. Allí deberán elegir la versión que corresponde al Sistema Operativo de preferencia. La IDE se encuentra disponible para Windows, Mac OS X y Linux.

 

Entorno de desarrollo de Arduino: página de descargas
Entorno de desarrollo de Arduino: página de descargas

Una vez descargada la versión del software correspondiente a su equipo, deben proceder a instalarla como cualquier otro programa. Una vez instalada, podrán conectar su placa Arduino mediante el cable USB a la pc. Probablemente tengan que seleccionar el puerto serie que corresponde, y están listos para comenzar a disfrutar de este maravilloso mundo 😀

Para verificar que todo haya funcionado tal como lo esperado, pueden ejecutar el famoso ejemplo "Blink" el cual consiste en hacer parpadear el LED integrado de la placa Arduino UNO. Para ello, deben dirigirse a File > Examples > 01. Basics > Blink. Una vez abierto el Sketch de ejemplo, teniendo la placa Arduino conectada por USB, podrán proceder a verificar la sintaxis del código con el botón que posee como ícono un tic, si todo está bien, podrán subirlo haciendo uso del botón que posee la flecha apuntando hacia la derecha. Una vez realizados estos pasos, podrán ver el LED en el PIN 13 de nuestro arduino parpadeando. Ya estamos listos para llegar hasta donde nuestra imaginación nos permita!

PD: En caso que utilicen Ubuntu / Mate o alguna distribución que utilice apt como manejador de paquetes, podrán instalar la IDE de Arduino de la siguiente manera, sin necesidad de descargar el programa desde la página web:

sudo apt-get update && sudo apt-get install arduino arduino-core

Entorno de Desarrollo Arduino
Entorno de Desarrollo Arduino