You are on page 1of 31

Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

INTRODUCCION
1

La plataforma Arduino, est compuesta por hardware y software, la cual


est basada en un microcontrolador con entradas y salidas, tanto analgicas
como digitales. Esta plataforma tiene la caracterstica de ser un sistema
abierto, lo que significa que su diseo como su distribucin son libres, es decir
se puede utilizar sin haber adquirido licencia alguna; as tambin estn
disponibles los archivos de diseo (CAD) permitiendo al usuario adaptarlo a
necesidades especficas. Otra ventaja de Arduino es que es compatible con
Windows, Mac OS y Linux, que a diferencia del entorno de otros
microcontroladores estn limitados a Windows.

Debido a que existen diversas libreras, Arduino puede personalizarse


con nuevas funcionalidades, por lo que esta plataforma facilita el desarrollo de
aplicaciones en distintas reas de la electrnica, tales como: Procesamiento de
seales, electrnica de potencia, automatizacin y control, etc. Actualmente
Arduino, ha comenzado a tomar relevancia a nivel mundial, no solo por ser
una plataforma abierta, sino porque tambin est orientado a usuarios no
programadores, ya que utiliza el lenguaje Processing (el cual ha sido
creado para la enseanza de la programacin en un contexto visual) en
conjunto con Wiring (plataforma de Hardware multipropsito con un
ambiente para no programadores).

Las placas se pueden ensamblar a mano o encargarlas pre ensambladas; el


software se puede descargar gratuitamente. Los diseos de referencia del
hardware (archivos CAD) estn disponibles bajo licencia open-source, por lo
que eres libre de adaptarlas a tus necesidades.

En este manual se describen las propiedades de la plataforma Arduino,


donde en secciones posteriores se listan sus caractersticas principales,
instalacin del software y hardware, as como algunas prcticas que darn las
bases al estudiante para la creacin de sus propios proyectos.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

CARACTERISTICAS GENERALES
2

Hay muchos otros microcontroladores y plataformas microcontroladores


disponibles para computacin fsica. Parallax Basic Stamp, Netmedia's BX-24,
Phidgets, MIT's Handyboard, y muchas otras ofertas de funcionalidad similar.
Todas estas herramientas toman los desordenados detalles de la programacin
de Microcontrolador y la encierran en un paquete fcil de usar. Arduino
tambin simplifica el proceso de trabajo con microcontroladores, pero ofrece
algunas ventajas para profesores, estudiantes y aficionados interesados sobre
otros sistemas.

Actividad I: Visita la pgina de Arduino (http://arduino.cc/en/Main/Products#)


y busca dentro de su catlogo de productos la placa que elegiste y con la que
ests trabajando, ah encontraras la hoja tcnica de datos (datasheet) del
microcontrolador que utiliza tu Arduino, descrgala y con esa informacin junto
con la publicada en el sitio web, da respuesta a los siguientes cuadros.

Arduino (modelo de la placa que utilizo) ________________ es una


placa electrnica basada en un microcontrolador de (nmero de bits) ______
bits, de la compaa: ________________, modelo ( controlador)
_______________, el cual dispone de (nmero de I/O) __________ entradas
y salidas analgicas con resolucin de _______ bits; la tasa de muestreo con
la que trabaja el Arduino, es de hasta ________ ksps (kilomuestras por
segundo). Arduino enumera los pines del 0 al _______, los cuales pueden ser
utilizados como entradas o salidas digitales. Las entradas/salidas trabajan a
_________V. Cada pin puede suministrar (soportar) una corriente
de_________ mA a _______ mA dependiendo del PIN, o recibir de _______
mA a _________ mA, dependiendo del PIN. El (los) pin(es) numero (s)
_________ tambin poseen una resistencia de pull-down.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

3
CARACTERISTICA DESCRIPCION
Microcontrolador
Voltaje de operacin
Tensin de entrada (recomendada)
Tensin de entrada (limite)
Pines digitales de E/S
Pines de entrada analgicos
Corriente DC por pin E/S
Corriente DC para pin 3.3V
Memoria Flash
SRAM
EEPROM
Frecuencia de reloj.

Caractersticas de Alimentacin:

Caractersticas de Comunicacin:

Caractersticas de Reseteo Automtico:

Caractersticas de Proteccin de sobrecarga del USB:


Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

CONFIGURCION DE ARDUINO
4

A continuacin se muestra la instalacin paso a paso del manejador o


driver y software de Arduino, bajo el entorno de Windows en su versin 7.El
primer paso para establecer el enlace con Arduino a travs de la computadora,
es descargar el software desde la pgina oficial de Arduino
(http://arduino.cc/en/Main/Software), elegir la descarga de Arduino en la
versin 1.X.X para Windows y/o IOS y cerciorarse de ubicar la ruta donde se
guardarn los archivos de instalacin. Una vez finalizada la descarga de los
archivos, se realiza la conexin entre Arduino y la computadora a travs del
cable USB correspondiente, y enseguida aparecer el asistente de Windows
para agregar nuevo Hardware detectado, aunque se debe cancelar esta opcin.
La instalacin del controlador de Arduino se realizar de manera manual, esto
con la finalidad de identificar el puerto asignado por la computadora a la
plataforma de Arduino, ya que posteriormente en el software de programacin
se especificar el mismo puerto para poder tener el enlace: Computadora
Arduino, y poder escribir el programa en la plataforma de Arduino.

Instalar el Software Arduino


Esta seccin explica como instalar el software Arduino en una computadora
que ejecute cualquiera de los siguientes Sistemas Operativos: Windows, Mac
OS X, GNU/Linux y cargar tu primera rutina. Estos son los pasos que
seguiremos:

1. Obtener una placa Arduino y un cable.


2. Descargar el entorno Arduino.
3. Instalar los drivers USB.
4. Conectar la placa.
5. Conectar un LED.
6. Ejecutar el entorno Arduino.
7. Subir un programa.
8. Buscar el Led que parpadea.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

1. Obtener una placa Arduino y un cable. En este tutorial se asume que


5
estas usando un Arduino Diecimila. Si tienes otra placa, lee la informacin
correspondiente en http://www.arduino.cc/en/Guide/HomePage. El Arduino
Diecimila es una placa simple que contiene todo lo que necesitas para empezar
a trabajar con electrnica y programacin de microcontrolador. Tambin
necesitas un cable USB estndar (del tipo que conectaras a una impresora
USB, por ejemplo).

2. Descargar el entorno Arduino. Para programar la placa Arduino necesitas


el entorno Arduino. Descarga la ltima versin desde
http://www.arduino.cc/en/Main/Software. Cuando termine la descarga,
descomprime el archivo descargado. Asegrate de conservar la estructura de
carpetas. Haz doble click en la carpeta para abrirla. Debera haber archivos y
subcarpetas en su interior.

3. Instalar los drivers USB. Si estas usando un Arduino USB, necesitars


instalar los drivers para el chip FTDI de la placa. Estos pueden encontrarse en
el directorio drivers/FTDI USB Drivers de la distribucin Arduino. En el
siguiente paso (Conectar la placa), se mostrar el asistente para Aadir Nuevo
Hardware de Windows para estos drivers. La ltima versin de los drivers se
puede encontrar en http://www.ftdichip.com/Drivers/VCP.htm

4. Conectar la placa. La fuente de alimentacin se selecciona mediante el


jumper entre los conectores del USB y alimentacin. Para alimentar la placa
desde el puerto USB (bueno para controlar dispositivos de baja potencia como
LEDs), coloca el jumper en los dos pines ms cercanos al conector USB. Para
alimentar la placa desde una fuente externa (6-12 V), coloca el jumper en los
dos pines ms cercanos al conector de alimentacin. En cualquier caso,
conecta la placa a un puerto USB de tu computadora. El LED de alimentacin
debera encenderse. El asistente para Aadir Nuevo Hardware debera abrirse.
Indcale que no conecte a Windows Update y haz click en siguiente.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

Selecciona la opcin de Instalar desde una lista o ubicacin especificada


(Avanzado) y haz click en siguiente.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

Elegir la opcin de Instalar desde una ubicacin especfica, seleccionar la


7
ubicacin donde se guardaron los archivos de instalacin de Arduino 1.X.X,
seleccionar la carpeta con el nombre de drivers y continuar con la instalacin
del controlador. Una vez concluida la instalacin del controlador, se muestra
la informacin actualizada del Hardware, as como el puerto al que est
conectado.

Para la configuracin del software de Arduino, se ejecuta el cono de


aplicacinArduino.exe, el cual est incluido en la carpeta de archivos
descargados. Al ejecutarse la aplicacin de Arduino se muestra la siguiente
ventana:

En el men de Herramientas Puerto Serie, especificar el puerto al cual est


conectado Arduino.
Especificar el modelo de la plataforma Arduino en el men de Herramientas
Board, el cual corresponde a el cual se programar.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

5. Conectar un LED (si estas usando una placa antigua). La primera rutina
que subirs a la placa Arduino hace parpadear un LED. El Arduino Diecimila (y
el Arduino NG original) tiene una resistencia incorporada y un LED en el pin
13. En el Arduino NG Rev. C y placas Arduino pre-NG, sin embargo, el pin 13
no tiene un LED incorporado. En estas placas, necesitars conectar la patilla
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

positiva (ms larga) de un LED al pin 13 y la negativa (ms corta) a tierra


9
(marcada como GND). Normalmente, tambin necesitaras usar una resistencia
con el LED, pero estas placas tienen una resistencia integrada en el pin 13.

6. Ejecutar el entorno Arduino. Abrir la carpeta de Arduino y hacer doble


click en la aplicacin Arduino.

7. Subir un programa. Abrir la rutina de ejemplo de parpadeo del LED: File


> Sketchbook > Examples > Basicl > Blink. Seleccionar el dispositivo serie de
la placa Arduino desde el men Herramientas > Puerto Serie. En Windows,
este debera ser COM1 o COM2 para la placa serie Arduino, o COM3, COM4 o
COM5 para la placa USB. Para descubrirlo, abrir el Administrador de
Dispositivos de Windows (En la pestaa Hardware o en el Panel de Control de
Sistema). Buscar un USB Serial Port en la seccin Puertos; esa es la placa
Arduino.

8. Buscar el LED que parpadea. Unos pocos segundos despus de que la


subida termine, deberas ver el LED mbar (amarillo) en la placa empezar a
parpadear. Si lo hace, enhorabuena, has conseguido un Arduino con un
programa cargado y ejecutndose. Si tienes problemas, consulta:
http://www.arduino.cc/en/Guide/Troubleshooting
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

INTRODUCCION AL ENTORNO ARDUINO


10
1. Barra de herramientas

Verify/Compile: Chequea el cdigo en busca de errores.

Stop: Para el Serial monitor, o minimiza otros botones.

New: Crea una nueva rutina.

Open: Muestra un men con todas las rutinas de tu Sketchbook.

Save: Guarda tus rutinas.

Upload to I/O Board: Carga tu cdigo a la placa Arduino I/O. Asegrate de


guardar o verificar tu rutina antes de cargarla.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

11

Serial Monitor: Muestra datos serie enviados desde la placa Arduino (placa
serie o USB). Para enviar datos a la placa, introduce el texto y haz click en el
botn Send o presiona Enter. Elige la velocidad de transmisin de datos
desde el desplegable que asigna la velocidad pasada al Serial.being en tu
rutina. Recuerda que en Mac o GNU/Linux, la placa Arduino se reiniciar
(vuelve a ejecutar tu rutina desde el principio) cuando conectes con el Serial
monitor. Puedes comunicarte tambin con la placa desde Processing, Flash,
MaxMSP, etc. (consulta http://www.arduino.cc/playground/Main/Interfacing
para ms detalles).

Tab Menu: Permite gestionar las rutinas con ms de un archivo (cada uno de
los cuales aparece en su propia pestaa). Estos pueden ser:

Archivos de cdigo de Arduino (sin extensin).


Archivos de C (extensin .c).
Archivos de C++ (extensin .cpp).
Archivos de cabecera (extensin .h).

2. Mens
Sketch
Verify/Compile: Comprueba tu rutina para errores.
Import Library: Utiliza una librera en tu rutina. Trabaja aadiendo
#include en la cima de tu cdigo. Esto aade funcionalidad extra a tu
rutina, pero incrementa su tamao. Para parar de usar una librera,
elimina el #include apropiado de la cima de tu rutina.
Show Sketch Folder: Abre la carpeta de rutinas en tu escritorio.
Add File: Aade otro archivo fuente a la rutina. El nuevo archivo
aparece en una nueva pestaa en la ventana de la rutina. Esto facilita y
agranda proyectos con mltiples archivos fuente. Los archivos pueden
ser eliminados de una rutina usando el Tab Menu.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

12
Tools

Auto Format: Esto formatea tu cdigo amigablemente.


Copy for Discourse: Copia el cdigo de tu rutina al portapapeles de forma
conveniente para postear en un foro, completa con resaltado de sintaxis.
Board: Selecciona la placa que estas usando. Esto controla la forma en
que tu rutina es compilada y cargada as como el comportamiento de los
elementos del men Burn Bootloader.
Serial Port: Este men contiene todos los dispositivos serie (real o
virtual) de tu mquina. Debera actualizarse automticamente cada vez
que abres el nivel superior del men Tools. Antes de subir tu rutina,
necesitas seleccionar el elemento de este men que representa amtu
placa Arduino. En el Mac, esto es probablemente algo como
/dev/tty.usbserial-1B1 (para la placa USB), o
/dev/tty.USA19QW1b1P1.1 (para una placa Serie conectada con un
adaptador USB-a-Serie Keyspan). En Windows, es probablemente COM1
o COM2 (para una placa Serie) o COM4, COM5, COM7 o superior (para
una placa USB); para descubrirlo, busca USB serial device en la seccin
puertos del Gestor de dispositivos de Windows.
Burn Bootloader: Los elementos en este men te permiten grabar un
bootloader en tu placa con una variedad de programadores. Esto no es
necesario para uso normal de una placa Arduino, pero puede ser til si
encargas ATmegas adicionales o ests construyendo una placa por tu
cuenta. Asegrate que has seleccionado la placa correcta del men
Boards de antemano. Para grabar un bootloader con el AVR ISP,
necesitas seleccionar el elemento que corresponde a tu programador del
men Serial Port.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

ESTRUCTURA BASICA DE UN PROGRAMA


13

Los programas se implementan haciendo uso del entorno de programacin


de Arduino, el cual est basado en el lenguaje de programacin C/C++. Un
programa en Arduino, se le conoce como sketch y se divide en tres partes
fundamentales: estructura, valores (variables y constantes), y funciones. La
estructura bsica de programacin de Arduino es bastante simple, divide la
ejecucin en dos partes: setup y loop. setup () constituye la preparacin
del programa y loop () es la ejecucin.

La parte de programa que se encuentra dentro de la funcin setup (), es


lo primero que se ejecuta y solamente se realiza una vez. En esta seccin se
pueden definir constantes y variables, tambin se puede configurar los pines
como entradas/salidas o especificar el tipo segn sea Analgico/digital. Las
instrucciones dentro de la funcin loop () se ejecutarn continuamente o
hasta que ocurra un reset.

Ejemplo de sketch

void setup() { // Se ejecuta solo una vez.


PinMode(pin, OUTPUT); // Establece 'pin' como salida.
}
void loop() { // Se ejecuta continuamente
digitalWrite(pin, HIGH); // Activa 'pin'
delay(1000); // Pausa un segundo
digitalWrite(pin, LOW); // Desactiva 'pin'
delay(1000);
}

Sintaxis
Como se observa en el ejemplo anterior, al concluir cada declaracin, se
finaliza con ;.Para realizar algn comentario dentro del programa y en una
lnea se antepondr // al comentario, si se desea realizar un bloque de
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

comentarios es decir en varias lneas, se utiliza la siguiente sintaxis /* */.


14
Mientras tanto los smbolos { y }, indican inicio y fin respectivamente de
una funcin.

VARIABLES
Una variable es una forma de asignar o almacenar un valor para un uso
posterior por el programa, estos datos pueden venir de un sensor o alguna
constante, los cuales permiten realizar un clculo o realizar una accin
determinada.

Declaracin de Variables
Declarar una variable, significa asignar un nombre, definir el tipo de dato
y opcionalmente asignar un valor. Las variables no necesariamente tienen que
ser inicializadas con un valor cuando son declaradas, pero
frecuentemente es til para asegurar el valor asignado.

Sintaxis:
int variableEntrada1; // Se define variable de tipo entero.
int variableEntrada2 = 0; // Ambas son correctas.

Tipos de variables
Para asignar el tipo de variable, se debe conocer el tipo de valor que se va a
representar dentro del entorno de programacin, para as especificar su tipo
correcto. Los tipos de variable y caractersticas utilizadas en Arduino DUE se
listan a continuacin.

char: Variable del tipo caracter, el caracter va entre comillas y utiliza la


equivalencia con el cdigo ASCII, por lo que al definir una variable como 65
del tipo char, ser equivalente a asignar la letra A.

Sintaxis:
char v = 65; // Asigna a v la letra A.
char v = A;
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

byte: Tipo de variable que almacena nmeros de 0 255 en 8 bits. El valor


15
se expresa en binario y el bit menos significativo es el que encuentra ms a la
derecha.

Sintaxis:
Byte b = B1001; // asigna a b el nmero 9.

int: Variable de tipo entero. Principal tipo de dato para almacenar nmeros
enteros, guardan valores de 2 bytes. Por lo que produce un rango entre 32,768
y 32,767.

Sintaxis:
int ledpin = 13; // 13 es asignado a la variable ledpin

unsigned int: Este tipo de variable solo considera los valores positivos
asignados a una variable, los cuales se almacenan en 2 bytes teniendo un
rango til de 0 a 65,535 valores.

long: Las variable de tipo long son de tamao extendido para


almacenamiento de nmeros enteros (4 bytes) su rango es desde -
2,147,483,648 a 2,147,483,647.

unsigned long: Variable extendida que solamente considera valores enteros


positivos, teniendo un rango desde 0 a 4,294,967,295.

float: Tipo de variable para los nmeros en punto flotante (nmeros


decimales), ocupa 4 bytes, por lo que las variables tipo float tienen el valor
mximo 3.4028235E+38, y como mnimo pueden alcanzar el -3.4028235E+38
con una precisin de 6 dgitos decimales.

double: Tipo de variable en punto flotante con doble precisin. La


implementacin double en Arduino es exactamente lo mismo que float.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

Cuando una variable sobrepasa su valor mximo permitido, ocurre lo llamado


16
roll over, el cual consiste en pasar al valor del otro extremo del rango
permitido para la variable.

Por ejemplo:
int x;
x = 32767; // El valor de x ser el otro extremo permitido
x = x+1; // es decir -32,768.

array: Es una coleccin de variables que son accedidas mediante un nmero


ndice, son utilizadas principalmente en arreglos de elementos representados
por una matriz.

boolean: Una variable de asignada de tipo booleano, solamente puede tomar


dos valores y se especifican como TRUE o FALSE.

#define: Es un componente utilizado frecuentemente por el programador, lo


que permite dar un nombre a un valor constante antes de que se compile el
programa.

Sintaxis:
#define nombredeconstante valor // reemplaza en cualquier parte del
programa
// nombredeconstante por valor.

Variable local, Variable Global

El sitio en el que la variable es declarada determina el mbito de la


misma. Una variable global es aquella que puede ser empleada en cualquier
funcin del programa. Estas variables deben ser declaradas al inicio del
programa (antes de la funcin setup()). Una variable local es solamente
visible en la funcin donde es declarada, por ejemplo dentro de un ciclo for.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

Sintaxis:
17
int v; // 'v' es visible en todo el programa
void setup() {
}
void loop() {
for (int i=0; i<20;) // 'i' es visible solo en el bucle i++;
float f; // 'f' es visible nicamente en la funcin loop()
}
OPERADORES
El uso de operadores es similar al utilizado en el lenguaje de programacin C
y C++, se clasifican en aritmticos, booleanos, compuestos y de comparacin.

Operadores aritmticos
Se utilizan empleando variables, valores constantes o elementos de un arreglo.

Operadores aritmticos
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

Operadores de comparacin.
18

Operadores Booleanos

CONSTANTES

En el lenguaje de Arduino, existen constantes predefinidas, las cuales se


utilizan para asignar un valor a una variable o configurar un pin como
entrada/salida. El uso de estas constantes, nos permiten leer un programa con
mayor facilidad e identificar la accin realizada en la instruccin. Existen dos
constantes para representar si algo es cierto o falso en Arduino (TRUE y
FALSE). FALSE equivale a definir como 0 y TRUE se define en la mayora
de las veces como 1, aunque en una definicin ms amplia cualquier entero
que no es cero, es TRUE. Existen otras constantes que definen el nivel lgico
de los pines, nivel alto (HIGH) y nivel bajo (LOW), cuando se lee o escribe en
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

un pin digital solamente se pueden obtener o asignar dos valores: HIGH y


19
LOW. Tambin existen constantes que definen la funcin de los pines
digitales, se utiliza INPUT para asignar un pin como entrada y OUTPUT para
asignarlo como salida utilizando la funcin pinmode.

FUNCIONES
Una funcin en Arduino realiza una tarea en especfico y puede retornar un
valor, cuando una funcin es invocada, pasa el control a esa funcin y una vez
que concluy su tarea el control vuelve a la lnea donde fue llamada. Tambin
se les asignan parmetros, los cuales pueden ser modificados por la propia
funcin.
pinMode(pin, mode): Funcin que configura el pin para comportarse como
entrada (INPUT) o salida (OUTPUT) digital. Esta funcin por lo general se
declara dentro de la funcin setup() y puede tener asignado o no una
variable.
Sintaxis:
void setup() {
int led =13; // A variable led se le asigna el pin 13.
pinMode (led, OUTPUT); // Configura el pin 13 como salida digital.
}
Otra manera de configurar un pin de Arduino DUE como Salida/Entrada digital,
es escribiendo directamente el nmero de pin a ser utilizado, con sta funcin
Arduino, reconoce que se est configurando un pin y no como un valor
asignado a la funcin.
Sintaxis:
void setup() {
pinMode (13, INPUT); } // Configura el pin 13 como entrada digital.

Los pines de Arduino configurados como INPUT con la funcin pinMode() se


dice que se encuentran en un estado de alta impedancia, lo cual lo hace til
para leer un sensor. Los pines configurados como OUTPUT con la funcin
pinMode() se dice que estn en estado de baja impedancia. Esto implica que
pueden proporcionar una cantidad sustancial de corriente a otros circuitos.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

digitalRead(pin): Esta funcin lee el valor de un pin digital y devuelve un


20
valor HIGH o LOW, donde el pin puede ser especificado con una variable o
una constante.
Sintaxis:
void setup() {
v = digitalRead(11); // v ser igual al valor ledo en el pin 11.
}
Si el pin especificado en la funcin no tiene conexin fsica, la funcin
digitalRead() puede leer 1 lgico 0 lgico, y podra cambiar
aleatoriamente.

digitalWrite(pin, value): Introduce un 1 lgico (HIGH) o 0 lgico (LOW)


en el pin digital especificado. De nuevo, el pin puede ser asignado con una
variable o una constante.
Sintaxis:
void setup(){
int pin = 8;
digitalWrite(pin, HIGH); } // Asigna a pin 8 1 lgico.

analogRead(pin): Lee el valor analgico de un pin con una resolucin de 10


bits predeterminada. Esta funcin solo funciona en los pines analgicos (A0
A11). El valor resultante es un entero de 0 a 1023. Los pines analgicos, a
diferencia de los digitales NO necesitan declararse previamente como entrada
o salida.
Sintaxis:
Valor = analogRead(A1); // Lee el valor de la entrada A1.

analogWrite(pin, valor): Escribe un valor de 0 255 (resolucin de 8 bits)


en el pin especificado. Al utilizar esta funcin no es necesario utilizar la funcin
pinMode para establecer al pin como salida.
Sintaxis:
Int pin1 = 10; // Asignacin de variable a pin 10.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

Valor = analogWrite(pin1, 127); // En variable pin1 escribe un valor de


21
1.65V. El valor mximo es 255, el cual significa que se tendr la salida de
voltaje ms alta disponible, aunque si se asigna un valor superior a ste, el
pin seguir teniendo su salida mxima.

analogReference(type): Configura el valor de voltaje utilizado para la


entrada analgica, es decir el valor que se utiliza como la parte superior del
rango de entrada. Para Arduino DUE, la referencia analgica por default es de
3.3 Volts, aunque se puede elegir de la siguiente manera el tipo:
INTERNAL1V1: La referencia ser de 1.1 Volts.
INTERNAL2V56: La referencia se establece en 2.56 Volts.
EXTERNAL: La referencia depender del voltaje aplicado al pin AREF (0 3.3
Volts).

analogReadResolution(bits de resolucin): Establece la resolucin con la


que se lee una entrada analgica. Su valor predeterminado es de 10 bits
(valores entre 0 1023). Arduino DUE soporta una resolucin de 12 bits, por
lo que si se establece un valor de 16, la funcin analogReadResolution dar un
nmero de 16 bits, donde los primeros 12 bits contienen la verdadera lectura
y los ltimos se rellenaran con ceros.

analogWriteResolution(bits de resolucin): Establece la resolucin de


escritura, su valor predeterminado es de 8 bits (valores entre 0 255), aunque
esta resolucin se puede modificar hasta 12 bits (0 4095 valores). Arduino
DUE posee 12 pines que por defecto tienen una resolucin de 8 bits (PWM),
aunque pueden ser cambiadas a 12 bits de resolucin. Tambin contiene dos
pines DAC (convertidor digital a analgico), con resolucin predeterminada de
12 bits.

delay(valor en ms):Realiza una pausa en el programa segn el tiempo


especificado. La funcin delay tiene las desventajas de que mientras se est
ejecutando no se pueden leer entradas, realizar clculos matemticos o
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

modificar los pines. Sin embargo continan funcionando las interrupciones, los
22
valores PWM (analogWrite) y los estados lgicos de los pines se mantienen.

millis(): Devuelve la cantidad de milisegundos que lleva la placa Arduino


ejecutando el programa actual, puede contar hasta un tiempo equivalente a
50 das, unas vez completado, comienza nuevamente.

INTERRUPCIONES

El manejo de interrupciones en Arduino, nos permiten ejecutar eventos de


manera asncrona, es decir que el cdigo principal reaccione a eventos
externos sin necesidad de estarlos monitoreando continuamente.

attachInterrup(pin, funcin, modo): Esta funcin nos permite el manejo


de interrupciones en un programa, si utilizamos esta funcin, definiremos los
siguientes parmetros:
Pin: especifica el nmero de entrada de interrupcin, para Arduino DUE se
puede utilizar cualquier pin (0 53). Para ms detalles acerca de las
interrupciones en tu placa ARDUINO, puedes consultar la tabla siguiente.

Funcin: Se define el nombre de la funcin a ser llamada cuando ocurre la


interrupcin.
Modo: Define la transicin del pin para activar la interrupcin. Los modos en
que se activa la interrupcin son los siguientes:

LOW: Activa cuando el pin est en nivel bajo.


Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

HIGH: Activa cuando el pin est en nivel alto


23
CHANGE: Activa cuando hay un cambio de estado en el pin.
RISING: Se activa cuando hay un cambio de nivel bajo a alto.
FALLING: Activa la interrupcin cuando detecta un cambio de nivel alto a bajo.

Existen restricciones al utilizar las interrupciones, por ejemplo si necesitamos


generar retardo dentro de la funcin llamada en la interrupcin, no se podr
utilizar la funcin delay() y el valor devuelto por la funcin millis() no se
incrementar, adems si se tiene la comunicacin serial activa, los datos serie
recibidos en el transcurso de esta interrupcin pueden perderse.

ESTRUCTURAS DE CONTROL

Condicional: if.- Se utiliza regularmente con operadores de comparacin o


booleanos para realizar cierta accin si las condiciones se cumplen.
Sintaxis:
If (x > 50);{ // x mayor que 50?
digitalWrite(pin1, HIGH); // Realiza las acciones.
}
Para este ciclo, s se cumplen las condiciones booleanas entre parntesis,
enseguida se ejecutan las acciones que se encuentran entre las llaves, de lo
contrario salta el programa a ejecutar la siguiente instruccin.

Condicional: if . . . else.- A diferencia del ciclo if, ste permite mayor control
sobre una estructura. En el ciclo if else, se puede tener un mayor control
sobre el flujo del cdigo del programa, por lo que permite agrupar diferentes
condiciones.
Sintaxis:
if ( x < 500 );{ // x menor que 500
/ / Realiza Accin A
}
else // De lo contrario
{
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

/ / Realiza Accin B
24
}
Cada condicin se proceder a la siguiente hasta que se encuentra una
verdadera. Cuando se encuentra una condicin verdadera, su bloque
correspondiente del cdigo se ejecuta y el programa se salta a la lnea
siguiente. Si no existe ninguna prueba ser cierta, el bloque else se ejecuta
por defecto.

Ciclo: for.- Este ciclo se utiliza para repetir un bloque de instrucciones entre
llaves, un contador de incremento se utiliza para tener el control de cuantas
veces se ha ejecutado el ciclo, as como su conclusin.
Sintaxis:
for (inicio; condicin; incremento) {
/ / Realiza Accin A
}
El trmino de inicio solo se prueba una vez. Cada vez que se va a repetir el
bloque, se prueba la condicin, si es verdadera se ejecutan las instruccin
dentro de la funcin y se incrementa un contador. El ciclo se ejecutar hasta
que la condicin se convierta en falsa, por lo que el ciclo terminar

Ejemplo:
for (int i=0; i <= 255; i++) { // Prueba i = 0
analogWrite(PWMpin, i); // Escribe valor de i en PWMpin
delay(10);
}

Sentencia: switch / case .- Esta sentencia la podemos especificar como un


comparador mltiple, adems nos permite controlar el flujo de cdigo de
programa. En particular, compara el valor de una variable a los valores
especificados en las sentencias case, cuando se encuentra una sentencia
cuyo valor coincide con el de la variable, se ejecuta el cdigo en esa sentencia,
lo que permite establecer en cada caso un bloque de instrucciones activo.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

Sintaxis:
25
switch (var) {
case 1:
// Realizar las acciones cuando var = 1
break; // Instruccin para salir de la sentencia
case 2:
// Realizar las acciones cuando var = 2
break;
default:
// Si no cumple alguna condicin anterior realiza
// las siguientes acciones.
}

Ciclo: while.- El lazo se repite de forma continua e indefinidamente, hasta


que la expresin dentro de los parntesis ( ) se convierte en falsa, de lo
contrario el ciclo while nunca terminar.
Sintaxis:
while(expresion) { // Cdigo ejecutado mientras expresion
// es verdadera.
}
Ciclo: do... while.- Este comando trabaja de la misma manera que el lazo
while, con la excepcin de que la condicin se comprueba al final del lazo,
por lo que este lazo se ejecuta "siempre" al menos una vez.

Sintaxis:
do {accin}
while (operacin booleana);

Comando: break
Esta instruccin es usada para salir de los lazos do, for, o while, pasando por
alto lacondicin normal del lazo, tambin es usado tambin para salir de una
estructura de control switch.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

PUERTO SERIE
26
Los puertos de entrada/salida permiten la comunicacin con elementos
externos a la tarjeta. Arduino posee la interfaz para realizar la comunicacin
de datos digitales (puerto serial), con lo que es posible intercambiar datos con
la computadora a partir de las siguientes funciones:

Serial.begin(rate): Esta funcin permite abrir un puerto serie y especificar


la velocidad de transmisin. La velocidad tpica para comunicacin con el
ordenador es de 9600 baudios, aunque se pueden soportar otras velocidades.

Serial.print(data): Este comando imprime los datos al puerto serie como


texto ASCII, y tiene varias formas. Los nmeros son impresos mediante un
juego de caracteres ASCII para cada dgito. Los valores de tipo "float" son
impresos en forma de dgitos ASCII con dos decimales por defecto. Los valores
tipo "byte" se envan como un nico carcter. Los caracteres y las cadenas se
envan tal cual. Por ejemplo:
Serial.print(78) imprime "78"
Serial.print(1.23456) imprime "1.23"
Serial.print(byte(78)) imprime "N" (cuyo cdigo ASCII es 78)
Serial.print('N') imprime "N"
Serial.print("Hello world.") imprime "Hello world."

Serial.println(data): La instruccin imprime datos al puerto serie, seguido


por un retorno de lnea automtico. Este comando tiene la misma forma que
Serial.print() pero este ltimo sin el salto de lnea al final. Este comando
puede emplearse para realizar la depuracin de programas. Para ello puede
mandarse mensajes de depuracin y valores de variables por el puerto serie.
Posteriormente, desde el entorno de programacin de Arduino, activando el
"Serial Monitor" se puede observar el contenido del puerto serie, y por lo tanto,
los mensajes de depuracin. Para observar correctamente el contenido del
puerto serie se debe tener en cuenta que el "Serial Monitor" y el puerto serie
han de estar configurados a la misma velocidad.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

LIBRERIAS EN ARDUINO
27
Las libreras en Arduino son archivos escritos en C o C++, que permiten
ampliar la funcionalidad de los programas. Para hacer uso de una librera en
un sketch (el IDE de Arduino), basta con hacer clic sobre Programa -
Import Library en el men, escoger la librera correspondiente y se agregar
a nuestro programa. Como las libreras se cargan en el Arduino junto con el
programa, se consume ms espacio de memoria, s un programa ya no
necesita una biblioteca, slo se tiene que borrar el #include de las
declaraciones de la parte superior del cdigo. Esto har que el IDE de Arduino
no enlace la librera con el programa y disminuya la cantidad de espacio
utilizado en la placa del Arduino. Las libreras estndar que ofrece Arduino son
las siguientes:

Serial: Lectura y escritura por el puerto serie.


EEPROM: Lectura y escritura en el almacenamiento permanente. Funciones:
read() y write()
Ethernet: Conexin a Internet mediante Arduino Ethernet Shield, el cual
puede funcionar como servidor que acepta peticiones remotas o como cliente.
ste permite hasta cuatro conexiones simultneas.
LiquidCrystal: Control de LCDs con chipset Hitachi HD44780 o compatibles.
La biblioteca soporta los modos de 4 y 8 bits.
Servo: Control de servomotores. A partir de la versin 0017 de Arduino, la
biblioteca soporta hasta 12 motores en la mayora de placas Arduino y 48 en
la Arduino Mega. Mediante la funcin attach(nmero de pin) aadimos un
servo, y mediante write se puede indicar el movimiento en grados que se
busca tenga el motor (habitualmente de 0 a 180).
Stepper: Control de motores paso a paso unipolares o bipolares, y que utiliza
las funciones:
Stepper(pasos, pin1, pin2)
Stepper(pasos, pin1, pin2, pin3, pin4)
setSpeed(rpm)
step(pasos)
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

La funcin Stepper permite iniciar el motor, indicando los pasos que tiene y los
28
pines a los cuales est conectado. Se indica la velocidad a la que queramos
que gire en revoluciones por minuto con la funcin setSpeed(rpm) y se indican
los pasos que queremos que avance con la funcin step(pasos).
Wire: Envo y recepcin de datos sobre una red de dispositivos o sensores
mediante Two Wire Interface (TWI/I2C). Adems las bibliotecas Matrix y Sprite
de Wiring son totalmente compatibles con Arduino y sirven para el manejo
de matrices de leds.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

29

PRACTICAS
CON
ARDUINO
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

PRCTICA #1: IMPLEMENTACIN DE SEMFORO


30

Objetivo: Con los conocimientos adquiridos en prcticas anteriores,


implementar un semforo para el cruce de dos avenidas. Adems agregar un
botn con el cual ambos semforos activen la luz mbar.
Material
2 leds (Verdes).
2 leds (Amarillo).
2 leds (Rojo).
6 resistencias 330 .
1 push-button normalmente abierto.
1 resistencia de 10 k.
Actividades
Implementar el diagrama electrnico necesario.
Implementar un programa, el cual simule el control vehicular (semforo)
para el cruce de dos avenidas. Considerando que en ambos semforos la seal
de alto/siga, tiene un periodo de activacin/desactivacin de 5 segundos, y la
luz preventiva oscilando a 2 Hz durante dos periodos.
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C.

PRCTICA #2: MEDICIN DE TEMPERATURA


31
Objetivo: Realizar la medicin de temperatura a travs de una entrada
analgica y mostrarla en el monitor serial.
Material
1 sensor de temperatura lm35.
1 potencimetro de 1k.
Actividades
Implementar el diagrama de conexiones necesario.
Implementar un programa donde muestre la temperatura obtenida a travs
del sensor lm35 en el monitor serial.
Acondicionar la seal del sensor lm 35 en el programa para desplegar la
temperatura en C.