Arduino
Arduino
Arduino
- La placa Arduino.
2. ¿Qué es Arduino?
Arduino es una placa o tarjeta controladora, con una serie de entradas y salidas, y que se programa a
través del ordenador mediante un lenguaje de programación. Veamos que elementos componen una
Arduino UNO:
A continuación, se va a explicar de forma muy resumida algunos conceptos básicos para poder
manejar la placa de ARDUINO. Si quieres profundizar puedes acudir a la página de referencia de
ARDUINO.
https://www.arduino.cc
• Los pines de alimentación son para alimentar los circuitos la placa de prototipos o breadboard o
protoboard:
- 3.3 V proporciona una tensión de 3,3 V, y una intensidad máxima de 50 mA.
- 5 V proporciona una tensión de 5 V, y una intensidad máxima de 300 mA.
- GND es la toma de tierra, o nivel 0 V de referencia.
- Vin proporciona la tensión máxima con la que esta alimentado Arduino.
• Valores de entrada y de salida: en función de como este siendo utilizado en pin, tendremos:
- Salida y entrada digital: los valores de salida pueden ser o 0 V (LOW) o 5 V (HIGH), y se
interpretara una entrada de entre 0 y 2 V como LOW y de entre 3 y 5 V como HIGH.
- Salida analógica: los valores de salida van desde 0 V a 5 V en un rango de 0 a 255 (precisión
de 8 bits) valores intermedios.
- Entrada analógica: los valores de entrada van desde 0 V a 5 V en un rango de 0 a 1023
(precisión de 10 bits) valores intermedios.
Para comenzar a trabajar con Arduino, necesitamos un IDE de programación, o, dicho en otras palabras,
un entorno donde poder programar. En este punto existen varias posibilidades, nosotros nos centraremos
en el IDE propuesto por los creadores de ARDUINO y en la plataforma web que nos permite trabajar en la
nube sin necesidad de instalar ningún software.
Una vez en ella, si es la primera vez que estamos instalando ARDUINO en nuestro sistema, debemos ir a
“Getting Started”, en donde nos deberemos descargar el plugin para conectar nuestra placa ARDUINO y
que la plataforma lo reconozco.
Una vez instalado el plugin, volvemos al menú anterior y seleccionamos “Arduino Web Editor”. Si no
tenemos cuenta, nos registramos y si ya la tenemos, simplemente nos debemos identificar.
En la captura mostrada anteriormente, debemos identificar algunos elementos significativos para poder
manejarnos correctamente en el entorno y poder así comprender el funcionamiento global de la
plataforma.
Tal y como se ha comentado anteriormente, un Sketch no es otra cosa sino un proyecto representado por
el código que se va a cargar en la placa ARDUINO. El sistema por defecto, cada vez que creamos uno
nuevo, le asigna un nombre que podemos modificar en cualqueir momento y nos añade el Esqueleto
básico de todo programa para ARDUINO.
En la parte superior, podemos seleccionar el puerto o la placa sobre la que queremos volcar el código.
Para ello, deberemos tener conectadada la placa y automáticamente el sistema la reconocerá gracias al
plugin instalado en los pasos anteriores.
El icono “OK”, verificará que el código está libre de errores y lo guadará, mientras que la flecha lo guardará
y lo subirá a la placa cuando esté conectada.
3.2.1 setup()
La funcion setup() se invoca una sola vez cuando el programa empieza. Se utiliza para inicializar los
modos de trabajo de los pins, o el puerto serie. Debe ser incluido en un programa aunque no haya
declaracion que ejecutar. Asi mismo se puede utilizar para establecer el estado inicial de las salidas
de la placa.
3.2.2. loop()
Despues de llamar a setup(), la funcion loop() hace precisamente lo que sugiere su nombre, se ejecuta
de forma ciclica, lo que posibilita que el programa este respondiendo continuamente ante los
eventos que se produzcan en la placa.
No hay mejor manera de aprender que practicando, por lo que a partir de este punto, iremos montando
pequeñas y sencillas prácticas, en donde se explicarán tanto los conceptos electrónicos, como los
conceptos de programación que vayamos viendo.
En esta entrada vamos a hacer nuestro primer programa en Arduino. Asumimos que tenemos una placa
Arduino UNO o similar y el IDE estándar de Arduino correctamente instalado, tal y como vimos al principio.
En primer lugar, conectamos nuestra placa Arduino mediante un cable USB A-B, del tipo que se
emplean habitualmente para conectar impresoras. De momento no hace falta la conexión de
alimentación o cable adicional, para realizar la programación es suficiente únicamente con el USB.
Para probar que hemos realizado todo correctamente y funciona, vamos a cargar un pequeño
ejemplo ya desarrollado, seleccionándolo del menú izquierda – Examples – 01.Basics- Blink
Lo primero que realiza este programa en la sección setup(), es identificar cual será el pin seleccionado
para mostrar la salida. En este caso, se elige LED_BUILTIN, que a sus efectos es el pin 13. Por tanto,
algo sucederá en el pin 13.
Ya en la sección loop(), la cual se repite continuamente, empleando digitalWrite(LED_BUILTIN,
HIGH), le asignamos al pin 13 un voltaje de 5V, es decir, lo encendemos. Mediante delay(1000),
esperamos un segundo para colocar el pin 13 a 0V, o lo que es lo mismo apagarlo. Como nos
encontramos dentro del loop(), este proceso se repetirá continuamente.
AMPLIACIÓN
Modifica el tiempo de parpadeo del LED 13 y haz que se encienda y apague cada 5 segundos . Esta prác-
tica no te llevará más de 5 minutos. También puede emplear otra forma de hacer declarando
variables.
En esta práctica veremos como encender un LED mediante las salidas digitales de Arduino. Para ello,
veremos el principio de funcionamiento y el esquema eléctrico necesario.
Por supuesto, también podemos usar el contenido de esta práctica para encender un LED con cualquier
otro autómata, o directamente conectándolo a tensión con una fuente de alimentación o batería. El
esquema eléctrico es el mismo, sin más que sustituir la salida de Arduino por vuestra fuente de tensión.
En algunos libros o páginas web veréis que, a veces, conectan directamente el LED a una salida digital o
analógica de Arduino. Aunque esto funciona (luego veremos porque) es una mala práctica. En general, los
LED deben conectarse siempre a través de una resistencia.
Para entender la importancia y el papel de esta resistencia, y poder calcular su valor, es necesario
entender cómo funciona un LED.
REGLA NEMOTÉCNICA
La patilla larga debe ser conectada al voltaje positivo (ánodo), y la corta al voltaje negativo (cátodo).
La otra consecuencia de la barrera de potencial es que, incluso conectando el dispositivo con la
polaridad correcta, a baja tensión los electrones siguen sin poder atravesar el dispositivo. Esto ocurre
hasta alcanzar un cierto valor de tensión que llamamos tensión de polarización directa (Vd), que
depende del tipo de diodo.
En cualquier caso, no conseguiremos hacer lucir el LED sin utilizar una resistencia de valor adecuado.
Hemos dicho que lo principal para hacer funcionar un LED es calcular el valor de la resistencia
necesaria. Para calcular el valor de tensión necesaria para alimentar un LED necesitamos conectar 3
parámetros
- La tensión de alimentación (Vcc)
- La tensión de polarización directa del LED (Vd)
- La corriente nominal del LED (In)
Calcula el valor de la resistencia es sencillo. Como hemos dicho, la tensión que soporta el LED es la
diferencia entre la tensión aplicada y la tensión de polarización directa del LED.
Aplicando la ley de Ohm, con el valor de la intensidad nominal del LED
Dado que las resistencias comerciales tienen valores normalizados, no encontraréis una resistencia
con el valor exacto que hayáis calculado. En este caso, elegiremos la resistencia normalizada
inmediatamente superior al valor calculado, para garantizar que la corriente es inferior a la nominal.
La tensión de alimentación Vcc es conocida para nosotros. En caso de aplicar una fuente de
alimentación o una batería, Vcc es la tensión nominal de la misma. En el caso de una salida digital o
analógica de Arduino, Vcc dependerá del modelo que estemos usando (5V o 3.3V) pero también es
conocido.
5𝑉−1,8𝑉
𝑅= = 160Ω
0,02𝐴
Después de toda la teoría mostrada en los apartados anteriores, la cual se resume a elegir
correctamente el valor de una resistencia para poder encender el LED, es hora de mostrar el esquema
electrónico básico que vamos a montar.
En este punto te enseñamos a representar el circuito en una herramienta que seguro os sonará, el
TinkerCAD. Mediante este entorno, podemos no sólo dibujar o representar el circuito, sino además
podemos simularlo haciendo uso de un lenguaje de programación por bloques.
Añade dos LED más de diferente color y crea un sistema alterno de luces para que se encien-
dan y apaguen de forma alterna como si se tratara de un semáforo. Recuerda los conceptos
visto en la teoría.
Encender y apagar un LED utilizando un botón pulsador que envié una señal que Arduino registre y decida
si enciende o apaga el LED. En esta práctica trabajaremos con el sistema de entradas digitales de
ARDUINO.
Un sistema mecatrónico tiene componentes de actuación y de medición. En la primera práctica el LED
puede ser visto como un actuador. Para ese caso particular la actuación que se vio fue la emisión de luz
a través del LED. En esta práctica se sumarán como medir acciones exteriores. Se emplea un botón
pulsador como elemento sensor, que nos indicará a través del tacto del dedo sobre el botón si este está
activado o no. La medición sobre el botón va enviar una señal Arduino la cual va a reconocer 1) si está
activado el botón se encenderá el LED, y 2) al soltar el dedo del pulsador, el LED se apaga.
NOTA
Antes de comenzar con el desarrollo del programa, se debe saber el valor de las resistencias que
vamos a emplear. En la anterior práctica te enseñamos como hacerlo. Sigue los mismos pasos para
obtener el valor de la resistencia.
Antes de comenzar la realización del montaje del circuito electrónico, se debe realizar el circuito en
el programa TinkerCad. Se debe tener en cuenta el conocimiento de cuál es el cátodo y ánodo del
LED. Se coloca el ánodo en el pin 13 y el cátodo a tierra (ground), usar el pin 5V y conectar al botón
como se muestra en la figura 2:
Se observa en la Figura que se está utilizando el Arduino Uno. Como se observa en la Figura, el
Protoboard nos ayuda a insertar el LED e instalar el circuito a través de cables, al igual que la
resistencia eléctrica y el botón pulsador. La línea que esta de color rojo que conecta el LED a la tarjeta
AMPLIACIÓN
¿Qué fallo le encuentras? Seguro que te has dado cuenta de un problema que tiene la práctica que te
hemos mandado. Te proponemos que busques una posible solución para arreglarlo o mejorarlo. Como
pista te podría decir que se necesitas guardar algo, ¿sabes el qué?
El objetivo de esta práctica es encender un LED utilizando un sensor de luz LDR, es decir, queremos que
se encienda el LED cuando cae la noche y oscurece. En caso contrario el LED permanecerá apagado. Para
ello utilizaremos un sensor LDR.
En este caso, deberemos calcular tanto el valor de la resistencia necesaria para el LED, como el valor de
la resistencia necesaria para el sensor LDR.
NOTA
Antes de comenzar con el desarrollo del programa, se debe saber el valor de las resistencias que
vamos a emplear. En la anterior práctica te enseñamos como hacerlo. Sigue los mismos pasos para
obtener el valor de la resistencia.
Antes de comenzar la realización del montaje del circuito electrónico, se debe realizar el circuito en
el programa TinkerCad. En prácticas anteriores ya hemos montado circuitos similares, la diferencia
es que en este caso vamos a añadir un sensor diferente.
El LDR es un sensor sensible a la luz que puede proporcionar tanto una salida digital como una salida
analógica, por lo que podremos emplearlo usando tanto los pines digitales como los pines analógicos.
Por un lado, se conecta el LED al pin digital 9 de la placa de Arduino (utilizando su debida resistencia).
Por otro lado, se conecta el sensor LDR al pin analógico 0 de la placa de Arduino (utilizando la
resistencia en modo Pull-Down).
AMPLIACIÓN
Teniendo claro el esquema electrónico montado anteriormente, sería fácil modificarlo para añadir un
LED de color rojo y prepara un código que si hay luz se encienda el LED amarillo y sino hay luz, se en-
cienda el LED rojo. Lo que estamos construyendo es un detector de luz útil por ejemplo para saber
cuando debemos activar una farola al caer la noche.
• E/S Digitales
pinMode(pin,modo)
Configura el pin especificado para comportarse como una entrada (INPUT) o una salida (OUTPUT).
Ejm: pinMode(Pin13, OUTPUT)
digitalWrite(pin,valor)
Asigna el valor HIGH (5V) o LOW (0V) a un pin digital.
Ejm: digitalWrite(Pin13 , HIGH);
digitalRead(pin)
Lee el valor de un pin digital especificado, HIGH o LOW.
Ejm: val = digitalRead(Pin13);
• E/S Analógicas
analogRead(pin)
Lee el valor de tensión en el pin analógico especificado. La placa Arduino posee 6 canales
conectados a un conversor analógico digital de 10 bits. Esto significa que convertirá tensiones
entre 0 y 5 voltios a un número entero entre 0 y 1023. Esto proporciona una resolución en la
lectura de: 5 voltios / 1024 unidades, es decir, 0.0049 voltios (4.9mV) por unidad. El rango de
entrada puede ser cambiado usando la función analogReference().
Ejm: val = analogRead(Pin3)
analogWrite(pin,valor)
Escribe un valor analógico (PWM) en un pin. Puede ser usado para controlar la luminosidad de un
LED o la velocidad de un motor. Después de llamar a la función analogWrite(), el pin generará una
onda cuadrada estable con el ciclo de trabajo especificado hasta que se vuelva a llamar a la función
analogWrite() (o una llamada a las funciones digitalRead() o digitalWrite() en el mismo pin). La
frecuencia de la señal PWM será de aproximadamente 490 Hz. los valores de analogRead van
desde 0 a 1023 y los valores de analogWrite van desde 0 a 255.
• Comunicación Serie
Se utiliza para la comunicación entre la placa Arduino y un ordenador u otros dispositivos. Todas
las placas Arduino tienen al menos un puerto serie Serial. Se comunica a través de los pines
digitales 0 (RX) y 1 (TX), así como con el ordenador mediante USB. Por lo tanto, si utilizas estas
funciones, no puedes usar los pines 0 y 1 como entrada o salida digital.
Puedes utilizar el monitor del puerto serie incorporado en el entorno Arduino para comunicarte
con la placa Arduino. Haz clic en el botón del monitor de puerto serie en la barra de herramientas
y selecciona la misma velocidad en baudios utilizada en la llamada a begin().
Serial.begin(speed)
Establece la velocidad de datos en bits por segundo (baudios) para la transmisión de datos en
serie. Para comunicarse con el ordenador, utilice una de estas velocidades: 300, 1200, 2400, 4800,
9600, 14400, 19200, 28800, 38400, 57600 o 115200.
Ejm: Serial.begin(9600);
Serial.read()
Serial.print(val,[format])
Serial.println(val,[format])
Imprime los datos al puerto serie como texto ASCII seguido de un retorno de carro (ASCII 13, o
'\r') y un carácter de avance de línea (ASCII 10, o '\n').
Ejm:Serial.println(analogValue); // imprime como ASCII decimal
Serial.println(analogValue, HEX);// imprime como ASCII hexadecimal
Serial.available()
Devuelve el número de bytes (caracteres) disponibles para ser leídos por el puerto serie. Se refiere
a datos ya recibidos y disponibles en el buffer de recepción del puerto (que tiene una capacidad
de 128 bytes).
if (Serial.available() > 0){
//realiza la lectura del puerto serie
}