26. Arduino entradas y salidas

Published: June 15, 2015, 5:27 a.m.

Primer capítulo de la serie que os iremos presentando donde veremos como crear un proyecto con Arduino y tecnología web, en este capítulo, Arduino entradas y salidas, os explicaremos como podemos conectar dispositivos al Arduino a través de las entradas y salidas.

Pero como siempre ya sabéis, si queréis contactar con nosotros lo podéis hacer a través del formulario de contacto o de Twitter @programarfacilc. También tenéis una lista de distribución a vuestra disposición para que os suscribáis.

En el Arduino UNO existen entradas y salidas analógicas (6) y digitales (16). Por un lado las analógicas son utilizadas, generalmente, para dispositivos de entrada y nos permiten leer un rango de valores. En cambio las digitales pueden tener a la entrada o a la salida 0V o 5V, esto nos indica que ese pin está en estado alto (High) o bajo (Low).

Entradas/salidas digitales

Se trata de pines donde el usuario puede activar (poner tensión) o desactivar (quitar tensión). Es similar a escribir 0 y 1, como ya hemos dicho 0V y 5V respectivamente.

Los pines 0 (Serial In RX) y 1(Serial Out TX), puerto serie, se usan para comunicación entre dispositivos. La característica principal de los puertos serie es que envían la información bit a bit, enviando un bit cada vez. La versión avanzada de este puerto sería el paralelo que nos permite enviar información en paralelo. Para que se pueda entender imaginaros un tanque lleno de agua, si de ese tanque sacamos un grifo para llenar botellas una a una éste sería nuestro puerto serie, ahora bien, si de ese tanque sacamos cuatro grifos para llenar cuatro botellas a la vez, este sería el ejemplo de un puerto paralelo. En ordenadores, el puerto serie, se usa y se sigue usando para conectar un ordenador con módems, ratones, teclados y muchos más periféricos. En el caso concreto del Arduino UNO, el puerto 0 (RX) sería el puerto serie de entrada y el puerto 1 (TX) sería el puerto serie de salida.

Los pines 2 y 3 nos permiten interrumpir el funcionamiento del bucle "loop". Ya hablaremos de este bucle más adelante en otro artículo, pero quedaros con la idea de que es lo que se ejecuta continuamente dentro del código de Arduino. Imaginaros que queremos leer un sensor cada segundo. No hace falta escribir el código infinitas veces, en Arduino existe este bloque que repite todo lo que se encuentre dentro de él indefinidamente. Estos pines paran precisamente ese bucle y obligan a ejecutar un código asignado a cada pin.

Los pines 3, 5, 6, 9, 10 y 11 que están marcados con el símbolo ˜, son entradas y salidas especiales ya que aunque son digitales y se pueden utilizar como tal, también se pueden utilizar para la comunicación PWM (Pulse-Width Modulation) modulación por ancho de pulsos. Se trata de una técnica que nos permite transferir información o energía a un dispositivo con una señal cuadrada. Como ya hemos dicho, los pines digitales solo atienden a dos estados, bajo (0V) y alto (5V). Si somos capaces de cambiar el estado alto y bajo controlando el tiempo que está en alto y el tiempo que está en bajo, conseguimos tener una onda cuadrada donde el tiempo que esté en estado alto (5V) será el ancho de pulso. La relación que existe entre estos dos tiempos se llama ciclo de trabajo y se expresa en tanto por ciento (%). Nos indica el tiempo que la señal está en alto en comparación con la que está en bajo. Lo podemos ver con el siguiente ejemplo.

pwm

En Arduino existe una función que permite utilizar estos puertos, se llama analogWrite. No podemos utilizar cualquier rango de valores, esta función solo admite valores entre 0 y 255 (8 bits). Por lo tanto y con el ejemplo de ciclos de trabajo que tenemos arriba, podemos definir una tabla donde nos diga el valor correspondiente para introducir en la función analogWrite y la salida en volitios que tendríamos.

Ciclo trabajo (%)analogWrite (0 - 255)Salida (Voltios)
000
25641.25
501272.5
751913.75
1002555
Si por ejemplo tenemos conectado un led a alguna de estas salidas es fácil imaginar que pasará, cuando esté al 25%, el led tendrá una intensidad del 25 % y así sucesivamente.

Los pines 10, 11, 12 y 13 son utilizados para conectar varios dispositivos entre sí, por ejemplo varios Arduinos. Son los pines SPI (Serial Peripheral Interface) ya que precisamente utilizan este estándar de comunicación, definido para comunicar circuitos integrados con comunicación serie a través de un bus de comunicación. El pin 10 es el SS (Slave Select) es el puerto esclavo (Slave). Permite seleccionar el Slave desde el Master o para que el Master active el Slave, si es el esclavo. El pin 11 es el MOSI (Master Output Slave Input). Se usa como entrada de datos del Master y la salida de datos del Slave. El pin 12 es el MISO (Master Input Slave Output) es el contrario del pin 11, permite entrada de datos del Master y salida de datos del Slave. Por último el pin 13 SCK (Select Clock) nos sirve de señal de reloj. Se trata de un pulso, como el visto en los pines PWM, que marca la sincronización entre los dispositivos conectados. Cada pulso de ese reloj se envía o se lee un bit.

Entradas/salidas analógicas

En el Arduino UNO tenemos 6 entradas analógicas que van marcadas con una A delante. Aunque pueden ser utilizadas como salida, su uso más común es la lectura de datos de dispositivos analógicos. Tiene una resolución de 10 bits lo que implica que tenemos 1024 valores diferentes, es decir, podemos leer un rango de tensiones desde 0V hasta 5V detectando cambios de voltaje de 0.004V (5/1024).

Los pines 4 y 5 soportan la comunicación I2C (Inter-Integrated Circuit), muy parecida al bus de comunicación SPI y sirve para conectar varios dispositivos. En este tipo de comunicación cada dispositivo tiene una dirección única y cada dispositivo puede funcionar como maestro (Master) o esclavo (Slave). El pin 4 es el SDA (Serial Data Line) y se utiliza para la transmisión de datos en serie. El pin 5 es el SCL (Serial Clock Line) suministra la señal de reloj para mantener a todos los dispositivos conectados sincronizados.

Otras entradas/salidas

Además de los pines digitales y analógicos ya explicados existen otros pines que nos dan diferentes funcionalidades.

GND (Ground) es la toma de tierra, 0V.
AREF (Analog Reference) es el pin que nos suministra la tensión para el rango máximo de los puertos analógicos, normalmente 5V.
Vin es la entrada de alimentación de la placa Arduino. Esta entrada no está protegida y por lo tanto hay que tener un especial cuidado con el voltaje que suministramos ya que podemos quemar la placa. Se recomienda una alimentación por USB en el periodo de pruebas.
5V y 3.3 V suministra una tensión de 5V y 3.3V respectivamente.
RESET sirve para resetear el Arduino si aplicamos la tensión máxima posible (IOREF). Reinicia el Arduino volviendo a ejecutar el Bootloader y el programa que tengamos cargado. Importante, esta función no borra el programa que tengamos cargado en la memoria del Arduino.
IOREF (Input Output Reference) es el pin que nos suministra la tensión para el estado alto de los pines digitales. Por norma general si conectamos el Arduino a 5V este pin nos dará 5V, en caso contrario serán 3.3V.
Pues hasta aquí el programa de hoy, hemos visto todo lo necesario para poder conectar a nuestro Arduino diferentes tipos de dispositivos. Os esperamos en el siguiente capítulo donde veremos más cosas interesantes sobre Arduino.

Recurso del día

123d.circuits.io

Os presentamos una aplicación on-line muy interesante. Se trata de una web donde podemos crear nuestros propios diseños con Arduino, se llama 123d circuits y es de la casa Autodesk, los creadores de Pixelr, la aplicación web de retoque fotográfico que ya comentamos el capítulo 9.

Además del laboratorio de electrónica donde prototipar, también puedes diseñar tu propia placa de circuito impreso PCB (Printed Circuit Board).

Lo mejor de todo es que es gratuito, tienes multitud de componentes y entre ellos un Arduino UNO y un Arduino Micro, resistencias, potenciómetros, servos, leds, protoboard, pulsadores y muchos componentes más, aunque tiene ciertas limitaciones. No nos permite usar sus modelos 3D para uso comercial, tenemos acceso a aplicaciones 3D de diseño, acceso ilimitado a los componentes básicos, acceso a 10 modelos premium, espacio de alojamiento ilimitado en la nube e ilimitados proyectos, tutoriales y acceso a foros.

Si quieres empezar con Arduino sin comprar uno, esta es la mejor opción para que te adentres en este mundo.

Muchas gracias por todos los comentarios y valoraciones que recibimos a través de las plataformas de podcast ivoox, iTunes y Spreaker.