Arduino "Entradas y Salidas"



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 bajo (Low) o alto (High).

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), puertos 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 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 maestro (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 Master o 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 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.
Fuentes
arduino.cc
programarfacil.com
bq electronics

Comentarios

Entradas populares de este blog

Arduino "Tipos de Placas"

Programación con Bloques

Internet de las Cosas