Podcast: Descargar (29.0MB)
En este capitulo vamos a ver una técnica para aumentar salidas digitales en Arduino. Cuando realizamos proyectos de Arduino, se nos puede dar el caso que necesitamos más salidas digitales de las que nuestra placa de Arduino tiene y se nos presenta el problema de coger otra placa con más salidas o de alguna forma aumentar esas salidas digitales.
Pero antes de continuar tenemos dos cosas que celebrar en programarfacil, la primera es que ya tenemos nuestro primer curso disponible para todos vosotros, «Aprende a programar con Arduino», entra en nuestro campus y echa un vistazo, si tienes alguna duda puedes utilizar los canales que siempre tenemos habilitados para ti , a través del formulario de contacto, en Twitter (@programarfacilc) o en Facebook.
Este curso esta orientado para gente que se quiera iniciar en la programación y en Arduino. Aprenderemos a programar con lenguajes visuales ya que la curva de aprendizaje es prácticamente plana. Olvídate de la frustración de aprender con lenguajes complejos, donde la sintaxis nos puede jugar una mala pasada y hacer que abandonemos antes de tiempo. En este curso hemos preparado dos juegos (Tres en raya y Twister) para que disfrutes mientras aprendes. Y para los más valientes tendremos retos al final de cada modulo.
La segunda razón de celebración es que dentro de unas semanas cumplimos nuestro primer año publicando este podcast y queremos celebrarlo con todos vosotros. Nos gustaría que nos enviarais mensajes de vuestras impresiones sobre este primer año de programa. Mensajes que queráis compartir con nosotros y con el resto de los oyentes. Lo podéis hacer de dos formar en redes sociales con el hashtag #AniversarioPF o a través del email info@programarfacil.com. Podéis enviar mensajes de texto y también mensajes de audio. Si enviáis mensajes de Audio no olvidéis presentaros. Gracias a todos por estar con nosotros este año y dentro de unas semanas lo celebraremos.
Cuando estamos realizando un circuito o un proyecto, nos planteamos la utilización de los pines digitales para conectar, LEDs, pulsadores o cualquier elemento eléctrico capaz de interactuar con una señal digital. En muchas ocasiones nos puede ocurrir dos cosas, que no tengamos pines suficientes, por lo tanto deberíamos de tener una placa con más pines I/O, o que utilicemos todos los pines disponibles, esto suele ser un peligro ya que es aconsejable dejar siempre algún pin libre para el futuro. En estas dos ocasiones podemos utilizar técnicas o métodos como los que vamos a explicar hoy aquí.
Lo primero es conocer los pines digitales I/O que tiene nuestro Arduino, aquí te dejo una tabla con los modelos más comunes:
MODELO | PINES I/O |
---|---|
Arduino UNO | 14 |
Arduino 101 | 14 |
Arduino MEGA | 54 |
Arduino MKR1000 | 8 |
Todas las características de las placas las tenéis disponibles en el segundo PDF que os enviamos a los que os que estáis suscritos a nuestra lista de distribución. Y si no estas suscrito, ya tienes una razón más para hacerlo y recibirás varios PDFs con mucha información sobre Arduino.
Técnica Charlieplexing
Se trata de una técnica creada por Charlie Allen que sirve para controlar una matriz de LEDs con el mínimo número de salidas digitales. Esta técnica se basa en el comportamiento como diodo de los LEDs.
No olvides que un LED (Light Emiting Diode) es un diodo que emite luz. La particularidad de los diodos es que solo permiten el flujo de corriente desde el ánodo al cátodo, en sentido contrario no fluye la corriente.
Utilizando esta característica particular de los diodos y los estados HIGH y LOW de los pines digitales, podemos llegar a controlar una matriz de LEDs para que solo se encienda uno a la vez.
Debemos hacer las conexiones pertienentes entre los componentes eléctricos y jugar con el modo INPUT de los pines digitales. Este modo permite que un pin digital se ponga en alta impedancia, lo que significa que tendremos una resistencia de 10.000.000 Ω. Si aplicas la Ley de Ohm para calcular la intensidad en el pin con esta resistencia y un voltaje de 5V, comprobarás que el resultado es 0.0000005 A, una intensidad prácticamente despreciable.
Todo esto hace que ese pin se comporte como si estuviera al aire. Puedes ver un artículo muy extenso donde se habla de esta técnica con ejemplos de circuitos y de código.
Un ejemplo donde se utiliza Charlieplexing es en los cubos de LEDs, míralo en este vídeo.
Shift Register o registros de desplazamiento
Con estos chips vamos a poder aumentar a partir de 3 salidas digitales en 8 salidas digitales y no solo vamos a poder controlar LEDs sino cualquier elemento que queramos conectar a una salida digital. En particular os hablamos del chip 74HC595 cuyo valor es inferior a 1€ y suele estar en cualquier kit de iniciación de Arduino.
Estos chips se pueden poner en serie para seguir aumentando el número de salidas digitales y siempre a partir de 3 salidas digitales de nuestra placa de Arduino. Por ejemplo, si queremos en una placa Arduino UNO con 14 salidas digitales tener las 54 salidas que tenemos en la placa de Arduino MEGA necesitaremos 54 / 8 = 6,75 ≅ 7 chips.
Estas tres salidas de Arduino irán a tres entradas del chip y cada una tendrá una función, una sera la señal de reloj, otra sera los datos que queremos enviar y la tercera la utilizamos como disparador, para pasar los datos a las 8 salidas del chip.
Para facilitar el uso de este tipos de chips tenemos una función nativa en Arduino. shiftOut que realiza una comunicación síncrona con el chip. En esta función le enviamos la señal de reloj y los datos que al final son las salidas que queremos que entes activas o no (HIGH o LOW) en las salidas del chip.
Para el que quiera profundizar un poco más sobre este chip y esta función, aquí tenéis un articulo donde lo explica con detalle.
Existen otros chips que hacen funciones parecidas. Tenemos el 74F675A que muy parecido al anterior pero nos saca 16 salidas digitales. Aunque la diferencia de precio también es mayor. Sale más barato comprar dos de los anteriores que uno de estos.
Hay otro chip que realiza la función «contraria», aumentar las entradas digitales que es el 74HC165 pero ya dedicaremos otro programa o articulo para contároslo.
Como ejemplo de uso el más típico es el de las luces del coche fantástico pero con 8 LEDs y con múltiples posibilidades como encender las luces de las posiciones pares o impares, solo las n primeras… lo que tu imaginación quiera.
El recurso del día
Proyecto creado por personas pertenecientes al MIT Media Lab y parte de los fundadores del Squid Labs. En este sitio web encontrarás miles de proyectos orientados al mundo Maker y al DIY (Doit Yourself). La gente puede compartir libremente sus proyectos y su trabajo creando una comunidad de grandes personas y oportunidades. Probablemente, una fuente de inspiración, que te puede ayudar y orientar a conseguir tus objetivos.
Muchas gracias a todos por los comentarios y valoraciones que nos hacéis en iVoox, iTunes y en Spreaker, nos dan mucho ánimo para seguir con este proyecto.