¿Qué es Arduino?
Se le llama Arduino a cuatro cosas que están relacionadas entre
si. En primer lugar, se le llama Arduino a la empresa de hardware
libre que produce las placas que integran circuitos impresos y
microcontroladores.
Arduino es además el entorno de programación (IDE) en el cual
programaremos nuestras creaciones.
También se llama Arduino la comunidad de usuarios que sostiene
el proyecto.
Y finalmente Arduino también se le dice a las placas
La empresa produce diferentes placas
Arduino para diversas necesidades
según el tamaño de los proyectos.
Cada placa Arduino tiene distintas
posibilidades de conectarse con otros
componentes y diferentes
capacidades de procesamiento.
Nosotros, trabajaremos con las placas
Arduino Uno.
Cuando hablamos de una placa Arduino estamos frente a un sistema de entrada - procesamiento - salida.
Tiene la capacidad de ingresar información del entorno a través de sensores, comprender y procesar esa
información (esa es la parte que debemos programar nosotros) y luego realizar un trabajo sobre ese
mismo entorno por medio de actuadores. Es decir que se dan las tres etapas de entrada, procesamiento
y salida.
Hagamos una comparación de estos tres conceptos con el cuerpo humano: los sensores son como
nuestros sentidos… se encargan de recibir la información del entorno (luces, sonidos, distancias…) El
Arduino sería nuestro cerebro, el cual procesa la información que recibe de los sentidos. Y los
actuadores vienen a ser las respuestas que da el cuerpo como respuesta a la información recibida.
A continuación veremos cada una de las partes que componen a una placa de Arduino para que puedas
familiarizarte antes que nada con su ubicación.
ENTRADA USB
Se usa para alimentar y cargar programas a nuestro Arduino. También es esencial para la comunicación
con el IDE Arduino, mediante las instrucciones [Link](), [Link]()...
ALIMENTACIÓN 9V
Por medio de un cable de corriente eléctrica, y su respectivo adaptador, podemos alimentar a nuestro
Arduino con una bateria, en este caso, de 9v.
Nota: No uses fuentes de alimentación superiores a 20v ya que pueden dañar la placa. La tensión
recomendada es entre 7v y 12v.
PINES DIGITALES / PWM
Estos pines van del 0 al 13 y se pueden utilizar tanto para entradas digitales (por ejemplo, si se oprime
un botón) como parsalidas digitales (como encender un LED). Se usan a través de las funciones
digitalWrite() y digitalRead().
Notarás que cinco de estos pines digitales (3, 6, 9, 10 y 11 respectivamente) están señalados con una
pequeña onda (~). Esto significa que son PWM (permiten una salida semi analógica), por lo que pueden
usarse con la función analogWrite().
MICROCONTROLADOR ATMEGA 328
Sobre él vamos a programar. Este microncontrolador es el cerebro de nuestro Arduino.
PINES ANALÓGICOS
Estos pines van de A0 a A5 y pueden leer la señal de un sensor analógico (como ser un sensor infrarrojo)
y convertirlo en un valor digital que podemos leer. Se usan a través de analogRead().
PIN ENCENDIDO
Son los suministros de cinco voltios (5V) y tres punto tres voltios (3.3V) de potencia.
PIN GND
GND es la abreviatura de "tierra", GROUND en Inglés. Hay varios pines GND en el Arduino, cualquiera de
ellos puede ser utilizado para conectar a tierra el circuito.
PIN 13 - LED INTEGRADO
Es el único componente que actúa como dispositivo de salida incorporado a la placa Arduino. Este led es
muy útil para la depuración.
BOTÓN RESET
Al presionar este botón se conectará temporalmente el pin de reset a tierra, logrando que se reinicie
cualquier código cargado en el Arduino. Esto puede ser muy útil si el código no se repite, pero quieres
que se ejecute varias veces para realizar pruebas.
LED ENCENDIDO
Este LED debe encenderse cada vez que se conecte la placa Arduino a una toma eléctrica. Si esta luz no
se enciende, hay una alta probabilidad de que algo anda mal.
LED RX/TX
Estos LEDs nos darán algunas indicaciones visuales siempre que nuestro Arduino esté recibiendo o
transmitiendo datos (por ejemplo, la carga de un nuevo programa).
GLOSARIO DE PROGRAMACIÓN ARDUINO
analogRead (pin); // lee el voltaje del ‘pin’ de tipo analógico
analogWrite (pin, VALOR); // escribe un pseudo valor analógico de 0 a 255 en pines PWM
break; // fuerza el quiebre o salida de una función; normalmente se utiliza dentro de ‘switch’
Byte // introduce variables de tipo ‘byte’, es decir, que trabajan con números enteros cortos de 8 bits.
Su rango es de 0 a 255.
case // sirve para enumerar los casos posibles dentro de ‘switch’
constrain (x, a, b); // fuerza a ‘x’ a permanecer entre los límites de ‘a’ y ‘b’
default: // establece un caso por defecto dentro de ‘switch’ para que la programación siga este camino
en caso de no coincidir con las condiciones de ninguno de los casos detallados.
delay (ms); // define un tiempo de demora o retardo. 1000 ms = 1 seg
digitalRead (pin); // lee el estado del ‘pin’
digitalWrite (pin, LOW ó HIGH); // escribe un estado ‘LOW’ o ‘HIGH’ en ‘pin’
FALSE // valor constante, significa ‘falso’
Float // introduce variables de tipo ‘flotante’, es decir, que trabajan con números decimales.
for (inicialización; condición; expresión){...} // bucle que se repite determinada cantidad de veces
HIGH // valor constante, significa ‘alto’, equivalente a ‘255’
if (CONDICIÓN){...} // ejecuta las siguientes instrucciones si la condición es ‘TRUE’
if (CONDICIÓN){...} else {...} // si la condición es ‘TRUE’ ejecuta sus instrucciones. Sino (’else’) le indica
que haga otra cosa
#include <...> // sirve para incluir librerías dentro de nuestros programas
INPUT // valor constante, significa ‘entrada’
Int // introduce variables de tipo ‘entero’, es decir, que trabajan con números enteros 16 bits. Su rango
es de 32767 a -32768
Long // introduce variables de tipo ‘largo’, es decir, que trabajan con números enteros de 32 bits. Su
rango es de -2147483648 hasta 2147483647
LOW // valor constante, significa ‘bajo’, equivalente a ‘0’
map (valor, a1, a2, b1, b2); // a un ‘valor’ dentro de los rangos ‘a1’ y ‘a2’ le asigna su equivalente dentro
del rango comprendido entre ‘b1’ y ‘b2’
max (x,y); // al comparar entre dos valores, el programa se queda con el de mayor valor
min (x,y); // al comparar entre dos valores, el programa se queda con el de menor valor
OUTPUT // valor constante, significa ‘salida’
pinMode (pin, INPUT); // configura el ‘pin’ como entrada
pinMode (pin, OUTPUT); // configura el ‘pin’ como salida
pulseIn (pin, VALOR); // lee un pulso (’HIGH o ‘LOW’) que ingresa por un determinado pin y entrega
como resultado el tiempo en microsegundos que duró dicho pulso
[Link] (9600); // abre el puerto serie y fija la velocidad de transmisión de datos
[Link] (dato, tipo de dato); // imprime un valor en el puerto serie
[Link] (dato, tipo de dato); // imprime un valor en el puerto serie e incluye un salto de línea para
facilitar la lectura.
[Link] (dato, tipo de dato); // lee la información que se encuentra en el puerto serie
switch (variable) { case... // controla el flujo del programa permitiéndonos especificar diferentes
instrucciones (’case’) que serán ejecutadas en base a una condición
TRUE // valor constante, significa ‘verdadero’
void // sirve para ejecutar una rutina, no devuelve valores
void loop // sirve para contener el programa de nuestro robot, que se reproducirá cíclicamente
void setup // sirve para recoger la configuración de nuestro programa
while (CONDICIÓN){...} // bucle que se repite mientras dure la ‘condición’
PALABRAS RESERVADAS DEL IDE DE ARDUINO
Estas palabras claves son constantes, variables y funciones que se definen en el lenguaje de
programación de Arduino. Las mismas están reservadas por el programa y no se deben usar en
nombres de variables para evitar un mal funcionamiento.