Clase 4 Arduino
Clase 4 Arduino
Basada en la filoso�a del so�ware libre, Arduino es una plataforma de electrónica «open-
source» o de código abierto cuyos principios son contar con so�ware y hardware fáciles de usar.
Básicamente lo que permite esta herramienta es la generación de infinidad de �pos de
microordenadores de una sola placa, que luego pueden tener una amplia variedad de usos según
la necesidad de la persona que lo cree. Es decir, una forma sencilla de realizar proyectos
interac�vos para cualquier persona.
Arduino es una plataforma de código abierto de proto�pos electrónicos que se basa en hardware
y so�ware flexibles y fáciles de usar que ponen al alcance de cualquier persona la construcción
de circuitos electrónicos/robots.
En lo referente a hardware, se basa en placas que se pueden ensamblar a mano o que se pueden
comprar directamente preensambladas. Cada una de las placas lleva un microcontrolador en el
que se carga el programa so�ware que es necesario desarrollar para “darle vida” a la placa.
En la siguiente imagen puedes ver la Placa Arduino Uno R3 con sus partes más importantes
señaladas que serán descritas en el apartado siguiente:
Componentes de la placa Arduino
Pines Digitales
Los pines digitales son las conexiones digitales de los disposi�vos
conectados en la placa. La placa de Arduino cuenta con 14 pines
digitales, que van del 0 al 13.
Por lo tanto, cuando ponemos un pin digital a valor HIGH, la placa suministra 5V de tensión por
la salida que hayamos indicado, y si ponemos el valor a LOW suministrará 0V de tensión. (Ojo:
Hay que tener en cuenta que los 5V no siempre son 5 ni los 0 siempre son 0)
Los pines digitales de Arduino pueden ser usados tanto de entrada como de salida.
Pines Analógicos
Los pines analógicos pueden medir un rango de valores de voltaje, a diferencia de los digitales
que solo en�enden dos valores: 0-1, o lo que es lo mismo, 0V o 5V.
Las variables analógicas son aquellas que pueden tomar un número infinito de valores
comprendidos entre dos límites. La mayoría de los fenómenos de la vida real son señales de este
�po. (sonido, temperatura, voz, video, etc.)
Con los pines analógicos vamos a poder leer valores intermedios entre 0V y 5V, representados
con un valor entero comprendido entre 0 y 1023, ya que la información se representa en
números de 10 bits, y también vamos a poder escribir en los pines valores comprendidos entre
0 y 255, ya que la información se representa en números de 8 bits.
En el punto anterior hemos hablado sobre pines digitales, si te fijas en ellos verás que aparecen
algunos con el símbolo “~” en la placa, este símbolo indica que pueden ser u�lizados también
como pines analógicos.
Pines de Alimentación
Además de los pines de entrada y salida descritos anteriormente, Arduino dispone de pines que
nos permiten alimentar componentes externos. Los pines de alimentación son para alimentar
los circuitos la placa de proto�pos o breadboard o protoboard:
Microcontrolador de Comunicaciones
El microcontrolador de comunicaciones se encarga de ges�onar las comunicaciones con todo lo
que se conecta a la placa.
Microcontrolador de Programación
Este componente de la placa es el cerebro de la misma, es donde la placa almacena el programa
que �ene que ejecutar y el que lo ejecuta. El Arduino es una placa basada en un microcontrolador
ATMEL. Los microcontroladores son circuitos integrados en los que se pueden grabar
instrucciones, las cuales las escribes con el lenguaje de programación que puedes u�lizar en el
entorno Arduino IDE. Estas instrucciones permiten crear programas que interactúan con los
circuitos de la placa.
Botón Reset
El botón Reset permite reiniciar el
programa que se ha cargado en el
microcontrolador interrumpiendo la
ejecución actual. Ten en cuenta que no
borra el programa que se ha cargado,
únicamente lo reinicia.
Puerto USB
Conector de Alimentación
Arduino dispone de un puerto de alimentación externo que nos permi�rá hacer funcionar la
placa sin u�lizar un ordenador. Debes tener en cuenta el no alimentar la placa con más voltaje
del que soporta, ya que podrías dañarla. Lo recomendado es alimentarla entre 7V y 12V.
Estructura de un programa
La estructura de un programa en Arduino puede llegar a ser muy diferente en función de la
complejidad de la aplicación que queramos crear, pero como en la mayoría de los lenguajes de
programación esta estructura está formada por funciones, sentencias, bucles y otros elementos
que conforman la estructura de programa.
Funciones
Una función es un bloque de código con un nombre y un conjunto de estamentos que son
ejecutados cuando se llama a dicha función. Las funciones de usuario se crean para realizar
tareas repe��vas reduciendo de esa manera el tamaño del programa.
Las funciones están asociadas a un �po de valor "type", este es el valor que devolverá la función
una vez termine su ejecución.
Ejemplo de función:
En Arduino los programas pueden estar compuestos por infinidad de funciones, pero existe una
estructura básica que deben de cumplir todos los programas. Esta estructura básica, está
formada por dos funciones totalmente necesarias para la ejecución del programa, la función
setup() y loop().
Setup ()
La función setup() se invoca una sola vez al comienzo del programa. Esta función se usa para
realizar la configuración inicial, dentro de esta configuración podemos establecer el modo de
trabajo de los pines o inicializar la comunicación serie entre otras cosas.
void setup()
{
Estamentos o instrucciones;
}
Loop ()
La función loop() es la función principal dentro del programa. Esta función se va a ejecutar
con�nuamente de manera cíclica, ejecutando todas las instrucciones que se encuentren en su
interior.
void loop()
{
Estamentos o instrucciones;
}
Además de las funciones principales, existen otros elementos de la estructura de programa que
ayudan a definir, delimitar, estructurar y a hacer más claro el contenido del programa.
Llaves {}
Las llaves definen el principio y el final de un bloque de instrucciones. Se usan para delimitar el
inicio y fin de funciones como setup() o para delimitar el alcance de los bucles y condicionales
del programa.
función ()
{
Estamentos o instrucciones;
}
Punto y coma ;
El punto y coma ";" se u�liza para definir el final de una instrucción y separarla de la siguiente.
Si no colocamos punto y coma, el programa va a interpretar mal las instrucciones y se va a
producir un error de compilación.
El error más común a la hora de programar suele ser olvidar poner punto y coma al final de la
instrucción.
Se pueden introducir todas las líneas de texto que se deseen siempre que se encuentren entre
los caracteres /*...*/.
Línea de comentarios //
La línea de comentarios �ene la misma función que los bloques de comentarios, la única
diferencia es que las líneas de comentarios suelen usarse para comentar instrucciones ya que
solo afectan a una línea.
Variables
Las variables son elementos donde se almacenan valores numéricos que serán usados por el
programa. Como su nombre indica, las variables van a cambiar de valor con la evolución del
programa y nos van a permi�r crear la lógica del programa en función de estos cambios.
Es recomendable asignarle un valor inicial a las variables para no tener un valor indeterminado
que pudiera ocasionar algún error a la hora de la ejecución del programa.
Cuando se asignen nombres a las variables, se deben de usar nombres que iden�fiquen
claramente a dichas variables, para ello se usan nombres como "pulsador", "led", "entrada_1".
esto va a ayudar a hacer un código legible y fácil de entender.
Una variable global es aquella que puede ser vista y u�lizada por cualquier función y estamento
de un programa. Las variables globales se declaran al comienzo del programa, antes de la función
setup().
Una variable local es aquella que se define dentro de una función o como parte de un bucle. Solo
será visible y podrá u�lizarse dentro de la función o bucle donde es declarada.
La existencia de variables globales y locales, permite el uso de variables con el mismo nombre
en partes diferentes del programa, estas variables podrán almacenar valores dis�ntos sin que se
produzca ningún conflicto, ya que a las variables locales solo tendrán acceso las funciones donde
se declaren dichas variables.
int led = 10; //"led" es una variable global visible para cualquier función
void setup() {
pinMode (led, OUTPUT); //establece el pin "led" como salida
}
Tipos de variables
A la hora de usar una variable dentro del programa debemos de pararnos a pensar que
información o qué �po de operaciones vamos a aplicar a estas variables y en función de esto
asignarle un �po u otro. Debemos de asegurarnos que el �po de variable que estemos usando
�ene rango suficiente para almacenar los datos sin llegar a ser desproporcionada, ya que usar
variables grandes va a consumir más recursos de memoria.
*float: el �po "float" se u�liza para datos con decimales, aunque cuenta con 32bit's, tan solo
�ene una precisión de 7 dígitos en sus decimales.
Constantes
La diferencia fundamental entre una variable y una constante es que la constante va a ser un
valor de solo lectura que no va a poder ser modificado con la evolución del programa.
Si queremos definir una constante, podemos hacerlo de manera muy similar a como definíamos
las variables, tan solo hay que indicar al programa que se trata de un valor "no modificable", para
ello hay que añadir antes del "�po" la palabra "const", que va a hacer que la variable sea de solo
lectura.
const float pi = 3.1415; //crea una constante de tipo "float" y le asigna el valor 3.1415
Es posible crear constantes usando #define, esta sentencia va a nombrar las constantes antes de
ser compiladas por Arduino. Las constantes creadas de esta manera no van a ocupar memoria
de programa, ya que el compilador va a remplazar estas constantes con el valor definido en el
momento de compilar.
#define pi 3.1415 //crea una constante usando #define a la que le asigna el valor
3.1415
Hay que tener cuidado a la hora de usar #define, ya que la sintaxis es diferente, no hay que poner
el operador de asignación "=" ni cerrar sentencia con el punto y coma ";".
Usar #define puede ser problemá�co, ya que si existe en cualquier parte del programa alguna
constante o variable con el mismo nombre que tengamos asignado en #define, el programa lo
va a sus�tuir con el valor que tengamos asignado a esta constante, por ello se debe tener cuidado
a la hora de asignar constantes con #define y no crear constantes muy genéricas como #define x
10, ya que "x" es muy común usarlo como variable dentro de alguna función o bucle.
Operadores
Los operadores son los elementos con los que vamos transformar las variables del programa,
hacer comparaciones, contar un número determinado de eventos… .Los operadores se pueden
considerar como uno de los elementos más importantes junto con las estructuras de control.
Dentro de los operadores, podemos encontrarlos de varios �pos.
Operadores aritmé�cos
Los operadores aritmé�cos son operadores que nos van a permi�r realizar operaciones básicas
como sumar, restar, dividir, mul�plicar...
Hay que tener en cuenta el �po de variable que estamos usando a la hora de realizar
operaciones, ya que si vamos a efectuar una operación que da como resultado un numero con
decimales y hemos definido estas variables como int (entero), el resultado no va a mostrar la
parte decimal (10 / 3 va a devolver 3 en lugar de 3.33).
Asignaciones compuestas
Las asignaciones compuestas combinan una operación aritmé�ca con una variable asignada.
Estas asignaciones son usadas comúnmente en bucles.
Operadores de comparación
Los operadores de comparación se usan con frecuencia en estructuras condicionales para
comprobar si una condición se cumple o no. Normalmente estos condicionales realizan la
comparación entre las variables y constantes del programa.
x == y; //x es igual a y
x != y; //x es dis�nto de yx <
y; //x es menor que y x > y;
//x es mayor que y
x <= y; //x es menor o igual que yx >=y;
// x es mayor o igual que y
Operadores Boleanos
Son operadores lógicos que se usan para comparar 2 o más expresiones y que no devuelven un
valor, sino que dan un estado de “verdadero” (si se cumple la expresión) o “falso” (si no se
cumple). Existen 3 operadores lógicos, AND "&&", OR "||" y NOT "!".
htp://www.arduino.cc
htp://www.zonamaker.com