Manual de Practicas Arduino

31
Edificios Inteligentes MANUAL DE PRACTICAS ARDUINO Ing. Ramiro J. Moreno C. 1 INTRODUCCION La plataforma Arduino, está compuesta por hardware y software, la cual está basada en un microcontrolador con entradas y salidas, tanto analógicas como digitales. Esta plataforma tiene la característica de ser un sistema abierto, lo que significa que su diseño como su distribución son libres, es decir se puede utilizar sin haber adquirido licencia alguna; así también están disponibles los archivos de diseño (CAD) permitiendo al usuario adaptarlo a necesidades específicas. Otra ventaja de Arduino es que es compatible con Windows, Mac OS y Linux, que a diferencia del entorno de otros microcontroladores están limitados a Windows. Debido a que existen diversas librerías, Arduino puede personalizarse con nuevas funcionalidades, por lo que esta plataforma facilita el desarrollo de aplicaciones en distintas áreas de la electrónica, tales como: Procesamiento de señales, electrónica de potencia, automatización y control, etc. Actualmente Arduino, ha comenzado a tomar relevancia a nivel mundial, no solo por ser una plataforma abierta, sino porque también está orientado a usuarios no programadores, ya que utiliza el lenguaje Processing(el cual ha sido creado para la enseñanza de la programación en un contexto visual) en conjunto con Wiring(plataforma de Hardware multipropósito con un ambiente para no programadores). Las placas se pueden ensamblar a mano o encargarlas pre ensambladas; el software se puede descargar gratuitamente. Los diseños de referencia del hardware (archivos CAD) están 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 características principales, instalación del software y hardware, así como algunas prácticas que darán las bases al estudiante para la creación de sus propios proyectos.

description

practicas

Transcript of Manual de Practicas Arduino

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

    1

    INTRODUCCION

    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.

    2

    CARACTERISTICAS GENERALES

    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.

    4

    CONFIGURCION DE ARDUINO

    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.

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

    5

    8. Buscar el Led que parpadea.

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

    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.

    6

    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.

    7

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

    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.

    8

    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.

    9

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

    (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.

    10

    INTRODUCCION AL ENTORNO ARDUINO

    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

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

    12

    agranda proyectos con mltiples archivos fuente. Los archivos pueden

    ser eliminados de una rutina usando el Tab Menu.

    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.

    13

    ESTRUCTURA BASICA DE UN PROGRAMA

    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.

    14

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

    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.

    15

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

    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.

    16

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

    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.

    17

    Sintaxis:

    int v; // 'v' es visible en todo el programa

    void setup() {

    }

    void loop() {

    for (int i=0; i

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

    18

    Operadores de comparacin.

    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.

    19

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

    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.

    20

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

    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.

    21

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

    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.

    22

    modificar los pines. Sin embargo continan funcionando las interrupciones, los

    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.

    23

    HIGH: Activa cuando el pin est en nivel alto

    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.

    24

    / / Realiza Accin B

    }

    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

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

    25

    Sintaxis:

    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.

    26

    PUERTO SERIE

    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.

    27

    LIBRERIAS EN ARDUINO

    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.

    28

    La funcin Stepper permite iniciar el motor, indicando los pasos que tiene y los

    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

    P R A C T I C A S

    C O N

    A R D U I N O

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

    30

    PRCTICA #1: IMPLEMENTACIN DE SEMFORO

    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.

    31

    PRCTICA #2: MEDICIN DE TEMPERATURA

    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.