24
Plataforma ARDUINO Sesión 1 CEFIRE Ricardo Carpio Richart IES JAUME I Página 1 INDICE Sesión 1 (5 horas) 1.- Qué es Arduino? Modelos y shields disponibles. 2.- Características de ARDUINO UNO. 3.- Descarga del IDE e instalación del driver. 4.- IDE de Arduino y programa ejemplo blink . 5.- Monitorización puerto Serial0 de Arduino. 1.- Qué es Arduino? Modelos y shields disponibles. Arduino no es más que un Microcontrolador ATMEL AVR al que se le ha dotado de los elementos necesarios para liberar al usuario, de las tediosas tareas que hasta ahora, tenía que afrontar antes de empezar un proyecto con microcontroladores como: a) Escoger el software de programación. b) Que este lenguaje se adapte al Microcontrolador, es decir, buscar el compilador adecuado. c) Escoger el software y hardware para el envío del ejecutable al dispositivo. d) Buscar librerías para controlar dispositivos concretos (servos, lcd,…) que se adapten a nuestro microcontrolador y al lenguaje escogido. e) Sistema de alimentación y reloj para la estabilidad del microcontrolador en funcionamiento. En definitiva, Arduino facilita la tarea de programar un microcontrolador al extremo, de forma que el usuario se puede centrar únicamente, en el desarrollo del proyecto (programación, depuración, cableado…) El lenguaje de programación de Arduino es una implementación de Processing que es un lenguaje de programación de código abierto y basado en Java, orientado a objetos. El hardware se basa en una plataforma de computación física, denominada Wiring. Existen otras placas de computación física que incluyen algún tipo de microcontrolador como la Basic Stamp de Parallax, que fue la pionera.

Curso Arduino Cefire Sesión 1

Embed Size (px)

DESCRIPTION

Curso Arduino Cefire Sesión 1 para microcontroladores

Citation preview

Page 1: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 1

INDICE

Sesión 1 (5 horas)

1.- Qué es Arduino? Modelos y shields disponibles.

2.- Características de ARDUINO UNO.

3.- Descarga del IDE e instalación del driver.

4.- IDE de Arduino y programa ejemplo blink .

5.- Monitorización puerto Serial0 de Arduino.

1.- Qué es Arduino? Modelos y shields disponibles.

Arduino no es más que un Microcontrolador ATMEL AVR al que se le ha dotado de los

elementos necesarios para liberar al usuario, de las tediosas tareas que hasta ahora, tenía que

afrontar antes de empezar un proyecto con microcontroladores como:

a) Escoger el software de programación.

b) Que este lenguaje se adapte al Microcontrolador, es decir, buscar el compilador

adecuado.

c) Escoger el software y hardware para el envío del ejecutable al dispositivo.

d) Buscar librerías para controlar dispositivos concretos (servos, lcd,…) que se adapten a

nuestro microcontrolador y al lenguaje escogido.

e) Sistema de alimentación y reloj para la estabilidad del microcontrolador en

funcionamiento.

En definitiva, Arduino facilita la tarea

de programar un microcontrolador al

extremo, de forma que el usuario se puede

centrar únicamente, en el desarrollo del

proyecto (programación, depuración,

cableado…)

El lenguaje de programación de

Arduino es una implementación de

Processing que es un lenguaje de

programación de código abierto y basado

en Java, orientado a objetos. El hardware se

basa en una plataforma de computación

física, denominada Wiring.

Existen otras placas de computación física que incluyen algún tipo de microcontrolador

como la Basic Stamp de Parallax, que fue la pionera.

Page 2: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 2

¿Por qué entonces utilizar Arduino? ¿Qué características tiene Arduino que le dan ese plus en atractivo? Veamos:

Asequible - Las placas Arduino son más asequibles comparadas con otras plataformas de microcontroladores. La versión estándar (Arduino UNO) ronda los 22€ + IVA.

Multi-Plataforma - El software de Arduino funciona en los sistemas operativos Windows, Macintosh OSX y Linux. La mayoría de los entornos para microcontroladores están limitados a Windows.

Entorno de programación simple y directo - El entorno de programación de Arduino es

fácil de usar para principiantes y lo suficientemente flexible para los usuarios avanzados.

Arduino está basado en el entorno de programación Processing, un derivado de Java pero de

cómoda recepción de los que lleguen de C o C++.

Software ampliable y de código abierto- El software Arduino esta publicado bajo una

licencia libre y preparado para poder ser ampliado por programadores experimentados. El

lenguaje puede ampliarse a través de librerías de C.

Hardware ampliable y de Código abierto - Arduino está basado en los microcontroladores

ATMEL168, ATMEL328, ATMEL1280 y ATMEL2560. Los esquemas de los módulos están

publicados bajo licencia Creative Commons, por lo que diseñadores de circuitos con

experiencia pueden hacer su propia versión del módulo, ampliándolo u optimizándolo. Incluso

usuarios relativamente inexpertos pueden construir su versión adaptándola a sus necesidades

particulares.

El modelo que utilizaremos en este curso y que en el siguiente punto, describiremos en

profundidad, es el ARDUINO UNO (22€ www.bricogeek.com)

Page 3: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 3

Además del modelo ARDUINO UNO, que usaremos en este curso, existen multitud de

modelos que se adaptan, continuamente, a situaciones concretas o simplemente que

integran algún elemento que queremos usar como por ejemplo un modem bluetooth, una

conexión wifi o Ethernet o simplemente queremos que sea muy pequeño o que consuma

poco (consultar http://arduino.cc/en/Main/Hardware ). A fecha de realización de esta

documentación, algunos de los modelos Arduino disponibles más conocidos son:

1. - Arduino MEGA

Es con mucha diferencia el más potente y el que más pines i/o

tiene, apto para trabajos ya algo más complejos aunque tengamos

que sacrificar un poco el espacio, cuenta con el microcontrolador

Atmega 2560 con más memoria para el programa, más RAM y

más pines que el resto de los modelos.

2. - Arduino Bluetooth

Incorpora un módulo bluetooth para la transmisión de datos de hasta 100 metros. Se puede programar sin cables e interactuar con la placa en ejecución desde cualquier dispositivo con bluetooth.

3. - Arduino Pro

Más robusto y mejor acabado final; incorpora funcionalidades interesantes tales como un conector especial para conectar una batería LiPo y realizar un montaje portátil. Todos sus componentes son de superficie y su espesor total es menor que las otras placas Arduino.

Page 4: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 4

4.- Arduino Nano

Su principal ventaja es que puede ser pinchado directamente sobre

una protoboard haciendo muy cómodo el prototipado al igual que el

Arduino mini.

5.- Arduino Mini

Versión miniaturizada de la placa Arduino. Mide tan sólo 30x18mm y

permite ahorrar espacio en los proyectos que lo requieran. Las

funcionalidades son las mismas que Arduino UNO salvo que sólo se fabrica

con el chip Atmega168 con 12Kb de memoria para programa. El bootloader

es algo antiguo y tarda unos 10 segundos arrancar (en el UNO es

prácticamente instantáneo).

6.- Arduino Pro Mini

Ésta es una versión mejorada del Arduino Mini fabricada por Sparkfun que incluye un chip Atmega328 con 32Kb de ROM para programa. Es el modelo favorito para utilizar en proyectos donde las dimensiones son importantes. El modelo de la foto no incluye ningún conversor serie-usb por lo que para programarlo debemos utilizar un conversor con chip FTDI (o cable con FTDI), aunque existe una versión que si lo incluye.

Hemos visto unos cuantos modelos de Arduino, aunque aún no hemos descrito

con precisión ninguno. Ahora veremos las Shields o “Escudos”, que son tarjetas que

podemos conectar a algunos modelos de Arduino (aunque existen algunas para el

Arduino MEGA, casi todas están destinadas para el Arduino UNO) para ampliar sus

posibilidades o simplemente para ahorrarnos trabajo extra. Entre las Shields más

populares podemos encontrar:

1.- Arduino SCREWSHIELD

Para dotar a Arduino de terminales de tornillo de 3,5 mm. Dispone de una zona central para conectar componentes y permite añadir otras shields encima. El pulsador reset está accesible.

Page 5: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 5

2.- Arduino Relay Shield

Permite al Arduino UNO controlar 4 relés (90W DC o 360V AC). Incluye un zócalo para un módulo RFBee/XBee.

Dado el consumo de los relés, es muy recomendable disponer de una alimentación externa para alimentar la placa dado que el puerto USB no proporciona suficiente corriente.

3.- Arduino Wifi Shield

La WiFly shield permite la conectividad Wifi a el Arduino UNO de forma fácil y eficaz. Utiliza el módulo Wifi WiFly RN-131G de Roving Networks junto con un chip conversor de SPI/UART SC16IS750 que simplifica enormemente la tarea ya que se encarga de todo el protocolo y es capaz de conectarse a redes inalámbricas wifi 802.11b/g.

La alimentación es tomada del pin Vin del Arduino y regulada a 3,3V para alimentar el módulo wifi. Para comunicarse con el módulo se utiliza el protocolo SPI utilizando los pines digitales 10 a 13 (CS, MOSI, MISO y SCLK).

La shield incluye el módulo wifi RN-131G, SC16IS750 y todos los componentes necesarios para su funcionamiento. También incorpora una pequeña área de prototipado donde se pueden soldar algunos componentes.

4.- Arduino Ethernet Shield

Con ésta placa y la ayuda de la librería proporcionada, podremos realizar tanto un pequeño servidor web, como un cliente. La configuración de red se realiza mediante software, por lo que podremos adaptar con facilidad la placa a nuestra red local. Dispone de un zócalo para tarjetas de memoria micro-SD para poder almacenar ficheros o servirlos como servidor web embedido. También incluye un controlador de reset automático para que el chip interno W5100 esté bien reiniciado y listo para utilizar al arranque.

Page 6: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 6

5.- Arduino XBEE Shield

Placa de comunicación inalámbrica con el protocolo ZigBee. La placa contiene el módulo serie 2 XBee XB24-BCIT-004 de MaxStream.

6.- Arduino GPS Shield

La placa dispone de un conector específico para un módulo receptor GPS EM-406 (no incluido). Están disponibles en la placas todos los pines del receptor tales como RX, TX, PPS etc, así como una pequeña área de prototipado donde poder soldar algunos componentes.

7.- EASYVR ARDUINO SHIELD

Esta shield permite utilizar de forma fácil el módulo de reconocimiento de voz EasyVR. A mayores de las própias funcionalidades del módulo EasyVR, la shield dispone de conectores adicionales para micrófono, salida de altavoz, línea de audio con jack y acceso a los pines I/O del módulo EasyVR. También dispone de un LED programable para mostrar indicaciones durante el proceso de reconocimiento de voz.

8.- Arduino CAN BUS- Shield

Esta shield permite a una placa Arduino comunicarse mediante el bus CAN. Utiliza el controlador CAN MCP2515 de Microchip. La comunicación se realiza mediante un conector sub-D de 9 pines para utilizar con un cable OBDII (no incluido) lo que la hace perfecta para aplicación en automóviles. La CAN-BUS Shield también dispone de un zócalo para tarjeta de memoria microSD, conexión para serial LCD y GPS tipo EM406.

Page 7: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 7

2.- Características de Arduino UNO.

Arduino UNO (antes Diecimila y Duemilanova) es el modelo más vendido de

todos los modelos Arduino. Está basado en el microcontrolador ATmega328 de 8 bits

(ATMEL AVR). Veamos una descripción de sus conexiones:

1.- Alimentación

Podemos utilizar:

• La alimentación de la conexión USB PC (5V Limitada a 500 mA!!!)

La conexión USB (la misma por la que programamos la placa) de Arduino tiene

un polyfusible de protección que corta el suministro de corriente si se

sobrepasa este valor. Cuando la sobrecorriente desaparece, el polyfusible se

rearma. Es muy recomendable usar esta conexión de alimentación solo para

pequeñas pruebas.

• El conector Jack. Podemos acceder a esta tensión mediante los pines Vin y

GND. Entre 7V y 12V recomendado. Valores límite entre 6V y 20V.

El CI 7805, integrado en Arduino, tiene un limitador de corriente por

cortocircuito y un limitador por temperatura. Soporta corrientes de hasta 1 A

con disipador de potencia. Aconsejable no trabajar con corrientes superiores a

600 mA o 700 mA.

Page 8: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 8

• Mediante la conexión simple Vin i GND.

Si utilizamos el conector Jack o los pines Vin GND, deberemos usar una tensión

recomendada de entre 7V y 12V, aunque los valores límites son 6V y 20V.

Una vez alimentado, Arduino nos proporcionará 3.3V,

5V, Vin y GND (3 pines). En las primeras placas Arduino, la

tensión de 3.3V la proporcionaba el IC FTDI (encargado de la

conversión USB a Serie RS232-TTL) por lo que solo estaba

disponible si se usa la alimentación USB. Una de las novedades principales de la

Arduino UNO es que no utiliza el conversor USB-serial FTDI, sino que lleva el

microprocesador Atmega8U2 programado como conversor USB-serial y

potencialmente programable para reconocer todo tipo de dispositivos USB. Cómo

consecuencia, ahora tiene una transferencia por USB más rápida y su propio

identificador USB, con lo que al conectarla al PC aparecerá automáticamente como

Arduino. Un led de ON, indica que la placa está alimentada de cualquiera de las

anteriores formas descritas.

Dispone también de un pin reset para resetear la placa llevándolo a tensión

baja o GND. Esta acción se realiza normalmente con el pulsador que incorpora pero en

ocasiones, no es accesible.

En la práctica se puede alimentar la placa Arduino de cualquiera de estas

formas descritas pero los elementos captadores o actuadores, se deben alimentar a

parte con un sistema independiente.

2.- Entradas y Salidas digitales

Estos 14 pines, también conocidos como GPIO o pines de propósito general,

pueden ser utilizados como entradas digitales o como salidas digitales, aunque

algunos de ellos (6 pines), pueden ser configurados, además, como “salidas

analógicas” o salidas PWM (Pulse Width Modulation). El pin 13 tiene incorporado un

led que se activa cuando se activa el pin.

Están enumerados desde el pin 0 al pin 13. Los pines que pueden ser

configurados como salidas “PWM” son: 3, 5, 6, 9,10 i 11.

Algunos de estos pines digitales, también comparten funciones específicas

además de ser un GPIO.

Led pin 13

Led’s pines

TX RX

Page 9: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 9

Los pines 0 y 1, corresponden a los pines de transmisión (Tx) y recepción (Rx)

del puerto serie del microcontrolador. Se suelen utilizar para monitorizar variables por

el monitor que lleva incorporado el IDE de Arduino. Es el mismo puerto USB por el que

se programa.

Los pines 2 y 3 son los encargados de testear las dos interrupciones externas de

las que dispone el microcontrolador (INT 0 y INT 1)

Los pines 10, 11, 12 y 13, realizan las funciones de los pines SS, MOSI, MISO y

SCK respectivamente, en la comunicación SPI con periféricos u otros

microcontroladores, mediante la librería <spi.h>.

Se deben configurar, por software, la función de cualquier GPIO que utilicemos

mediante la instrucción pinMode(numero_pin, ESTADO); La constante ESTADO

puede ser INPUT o OUTPUT (en la última versión del IDE de Arduino, la 1.01 también

tenemos INPUT_PULLUP).

Arduino dispone de resistencia de PULL-UP para cada GPIO que se pueden activar o

desactivar mediante la instrucción digitalWrite (numero_pin, HIGH); o

digitalWrite (numero_pin, LOW);

Esta misma función se utiliza para escribir un estado digital alto o bajo en un pin de

salida y para activar la resistencia de pull-up en un pin de entrada.

3.- Entradas analógicas

Arduino UNO dispone de 6 pines (A0-A5) de

entradas analógicas con una resolución de 10 bits. Por

tanto podremos leer el valor de tensión del pin y

obtener valores entre 0 y 1023. Por defecto la tensión

de referencia del conversor ADC es de 5V por lo que cuando

tengamos 5V en el pin analógico y hagamos una lectura,

obtendremos el valor máximo de 1023. Cuando la tensión sea 0V,

obtendremos 0 en la lectura. La tensión de referencia se puede

ajustar también mediante software (analogReference()) o

utilizando una tensión externa mediante el pin AREF.

Los 6 pines pueden usarse, sin perder funcionalidad, como cualquier pin de

entrada/salida digital de propósito general (GPIO) (0-13). Los pines A4 y A5 se usan

para las comunicaciones I2C como líneas SDA y SCL respectivamente mediante la

librería <wire.h>. Las entradas analógicas A0-A5 no necesitan ser configuradas como

entradas para ser usadas como entradas analógicas. Si es necesario configurarlas como

entradas o salidas digitales, en caso de tratarlas como GPIO. En este caso, nos

Pin AREF

Page 10: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 10

referiremos a ellas como GPIO desde el pin 14 al 19. Es decir si en nuestro proyecto

agotamos los GPIO digitales, podremos usar los analógicos. Por ejemplo:

pinMode (14, OUTPUT);

digitalWrite (14, HIGH); // activa la resistencia pullup en el pin analógico 0

Los pines analógicos, como vemos, también tienen resistencias pullup, las

cuales funcionan igual que en los pines digitales.

4.- Salidas analógicas (PWM)

Como hemos comentado anteriormente, algunos GPIO digitales pueden actuar como

salidas PWM o salidas moduladas en amplitud de pulso. Se trata de los pines 3, 5, 6, 9,10 i 11.

Para escribir un valor analógico en estos pines, los configuraremos primero como

salidas y después usaremos la función analogWrite(num_pin, valor);

donde valor es una variable entera de 1 byte que tomará valores desde 0 a 255.

Cuando escribimos 0, en el pin tendremos 0V. Si escribimos 255, en el pin tendremos 5V

5.- Pulsador reset

La placa Arduino dispone de un pulsador normalmente abierto

que lleva el pin de reset del microcontrolador ATmega328 a masa. Es

posible resetear el microcontrolador llevando el conector reset a masa

desde el exterior.

6.- Conector ICSP

Cuando programamos Arduino desde el IDE,

necesitamos que el microcontrolador que utiliza la placa lleve

el bootloader ya programado. Una vez programado, podemos

utilizar el puerto USB del PC, para programar el

microcontrolador Atmega328 de Arduino a través de su

puerto serie (previa intervención del Atmega8U2). Esta programación es a baja velocidad

(comunicación serie asíncrona). El ICSP o "In Circuit Serial Programmer" es un método de

acceso a la memoria de programa del microcontrolador. Sirve, en un

principio, para poder programar el bootloader de Arduino en el proceso

de fabricación, aunque también lo podemos utilizar nosotros para

programar el Atmega328 de Arduino. Esta programación necesita de

algún dispositivo externo pero ofrece una mayor velocidad que la

programación por el puerto USB mediante el IDE de Arduino. Como el microcontrolador no

necesita tener instalado el bootloader, el programa arrancará de forma inmediata cuando

pongamos el Arduino a trabajar. El chip ATmega8U2 en su placa Arduino actúa como un

puente entre el puerto USB del ordenador y el puerto serie del microcontrolador

principal. Este microcontrolador también dispone de un conector ICSP. A través de él,

podemos actualizar su software a través de un protocolo especial USB llamado DFU (Device

Firmware Update). Desde www.arduino.cc se describe como actualizar el software de su

Atmega8U2 en unos pocos pasos.

Page 11: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 11

3.- Descarga del IDE e instalación del driver.

Visitando la web oficial de Arduino (www.arduino.cc) en el apartado download,

podemos descargar la última versión del IDE de Arduino para los sistemas operativos

Windows, Mac OS X y Linux de 32 bits y 64 bits.

Incluso puedes descargar cualquier versión anterior desde la 0001 hasta la 0023, que

fue la antecesora de la versión, que a fecha de realización de esta documentación, es hoy la

definitiva, la 1.0. En el apartado release notes, podemos encontrar las diferencias que se han

ido introduciendo en cada versión. El código fuente del IDE está hospedado en GitHub.com.

Descargamos el archivo arduino-1.0-windows.zip para Windows que guarda tanto el

IDE como los drivers para conectar a nuestro PC la tarjeta Arduino. Al descomprimir el archivo,

observamos que guarda una carpeta llamada arduino-1.0.

Click!

Page 12: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 12

Descomprimimos la carpeta en nuestro ordenador, por ejemplo en la raíz de nuestro

disco duro y ya está. El IDE de Arduino no necesita una instalación, pero si su driver.

En el interior de la carpeta encontramos el ejecutable arduino.exe que ejecutaremos

más tarde para arrancar el IDE. Conectamos la placa Arduino, a través de un cable USB, a

nuestro ordenador. Windows detectará un nuevo hardware y pedirá instrucciones para

instalar los drivers. Lo haremos de forma manual seleccionando la carpeta drivers que se

encuentra en la carpeta arduino-1.0 anterior. Una vez instalados los drivers, podemos

Page 13: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 13

encontrar ya en nuestro ordenador, el puerto serie virtual Arduino. Lo podemos encontrar en

el administrador de dispositivos de nuestro PC.

Si consultamos las propiedades de este nuevo puerto COM podemos observar que

trabaja con un BaudRate de 9600 bps, con 8 bits de datos, sin paridad ni control de flujo y con

un bit de parada. Ahora ya podemos ejecutar Arduino.exe y lanzar el IDE de Arduino, conectar

la placa al ordenador y listo.

Page 14: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 14

4.- IDE de Arduino y programa ejemplo blink.

Al arrancar por primera vez el IDE de Arduino (integrated development environment),

aparece en la barra superior, el título del archivo en blanco que tenemos en edición.

En el entorno Arduino, los archivos que se manejan se denominan sketch (dibujo en

castellano). Por defecto el IDE

nombra secuencialmente los sketch

que se van creando con la palabra

sketch seguido de la fecha y una letra.

Por ejemplo si el 1 de abril creamos

un sketch nuevo, el IDE lo nombrará

sketch_apr01a si es el primero del

día, sketch_apr01b si es el segundo

del día y así sucesivamente. Al

guardar el sketch en el que se está

trabajando, el IDE crea una carpeta con el nombre del sketch, en la carpeta Arduino, en la

carpeta Documentos de nuestro PC. Dentro de esta carpeta está el archivo que contiene el

código que por defecto se llamará como el sketch acabado con la extensión *.ino

1.- Descripción IDE Arduino 1.0

El IDE de Arduino 1.0 tiene 3 zonas claramente diferenciadas

Barra de menús

Área de trabajo

Área de

notificaciones

Page 15: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 15

a) Barra de menús

En la barra de menús observamos, en la parte superior, el nombre del sketch en el que

estamos trabajando y la versión del IDE. Después encontramos los siguientes menús:

Menú File:

a) New: Crear un sketch nuevo.

b) Open: Abrir un sketch ya creado. Por

defecto, localiza el último sketch con el que

se trabajó.

c) Sketchbook: Nos da la posibilidad de abrir

cualquier sketch guardado en la carpeta

Arduino de la carpeta Documentos de

nuestro PC.

d) Examples: Acceso a todos los ejemplos

incluidos en el IDE de Arduino. Los

ejemplos los busca en la carpeta

examples y libraries, de la carpeta

Arduino donde tenemos guardado el IDE.

e) Close: Cierra el sketch actual y el IDE.

f) Save: Guardar con el mismo nombre que tiene, el sketch con el que trabajamos

g) Save As: Guardamos el sketch en el que trabajamos con el nombre que queramos. El

IDE de Arduino, creará una carpeta nueva con el nombre del sketch que hayamos

elegido, en caso de no existir.

h) Upload: Compila el Sketch en el que trabajamos y en caso de no tener errores y la

tarjeta Arduino correctamente conectada, envía el ejecutable al microcontrolador de

Arduino.

i) Upload Using Programmer: Si queremos utilizar un programador externo (por

ejemplo un AVR-ISP STK500 o un programador paralelo) podemos cargar un sketch en

la placa Arduino sin necesidad de un gestor de arranque (bootloader). Nos permitirá,

esta opción, utilizar el total de la memoria disponible en el chip de la Arduino y no

tendremos el retraso causado por el gestor de arranque cada vez que arranque la

placa.

j) Page setup: Opciones de configuración de página

k) Print: Opciones de impresión.

l) Preferences: podemos cambiar algunas opciones de nuestro IDE desde este menú o

modificando directamente el archivo Preferences.txt. Algunas de las más importantes

son, asociar los archivos *.ino a nuestro IDE, transformar automáticamente los

archivos antiguos de Arduino (*.pde) a los nuevos (*.ino) o canviar la localización de

nuestro Sketchbook

m) Quit: Salir del IDE.

Page 16: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 16

Menú Edit:

Las opciones son casi todas comunes a las de cualquier aplicación que se

ejecute en Windows y que disponga del menú Edit. Las que no son tan

habituales son:

a) Copy for forum: Copia al portapapeles

de Windows, el código completo del

sketch en el que estamos trabajando

pero conservando el formato para

poder pegarlo en foros

b) Copy as HTML: Copia al portapapeles

de Windows, el código completo del

sketch en el que estamos trabajando

pero conservando el formato para

poder pegarlo en la edición de páginas

web

c) Comment/Uncomment: Previa selección de una o varias líneas de nuestro

código, con esta opción podemos comentar la línea (inserta // al principio) y el

compilador no las interpretará. Si seleccionamos una línea ya comentada, esta

opción las descomentará.

d) Increase Indent:

Seleccionamos una o varias líneas y esta opción introduce a todas, un

tabulador.

e) Decrase Indent:

Seleccionamos una o varias líneas y esta opción elimina a todas, un tabulador.

Menú Sketch:

a) Verify/Compile: Compila el sketch en el

que estamos trabajando

b) Show Sketch Folder: Muestra en

carpeta el archivo que contiene el

sketch en el que estamos trabajando.

c) Add File: Para tener más de un sketch

abierto en el mismo IDE. Aparecen varias pestañas con el nombre de

los sketch. Los que llevan el carácter § al final del nombre, es porque han sido

modificados y no han sido guardados.

d) Import Library: Nos ayuda a añadir las librerias que tenemos disponibles, en

nuestro sketch. Para poder insertar una librería en nuestro código, es necesario que la

tengamos guardada en la carpeta libraries. En el entorno Arduino, una librería es

una carpeta con al menos dos archivos (*.h y *.cpp o *.c)

Page 17: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 17

Menú Tools:

a) Auto Format: Establece

adecuadamente las

tabulaciones para nuestro

sketch

b) Archive Sketch: Comprime

todos los sketch abiertos en el

IDE y los guarda por defecto en

la carpeta Arduino de la carpeta documentos de nuestro PC. Crea un único

archivo *.zip

c) Fix Encoding & Reload: Compila y carga el sketch en el que estamos

trabajando, descartando todos los cambios efectuados desde la última vez que

se guardó.

d) Serial Monitor: Abre un sistema de monitorización que nos permite visualizar

datos enviados por el microcontrolador o enviarlos al microcontrolador. En el

último punto de este capítulo, haremos una descripción de esta importante

herramienta.

e) Board: Escogemos el tipo de placa Arduino con la que estamos trabajando.

f) Serial Port: Escogemos el puerto donde tenemos conectado la placa Arduino.

g) Programmer: Escogemos el tipo de programador en caso de que no usar la

propia placa Arduino como programador.

h) Burn Bootloader: Nos da la posibilidad de grabar el bootloader de Arduino en

un microcontrolador para poder usar el IDE de Arduino.

Menú Help:

a) Getting Started: Abre

la Guía de Inicio del

sitio web de Arduino.

Esta guía está guardada

en el propio IDE de

Arduino. No necesita

conexión a internet.

b) Environment: Abre la

guia del IDE de Arduino.

c) Troubleshooting: Abre la guia de resolución de problemas.

d) Reference: Abre la guia de referencias del lenguaje utilizado por Arduino.

e) Find in Reference: Búsqueda de algún término en la guía de referencias.

f) Frequently Asked Questions: Abre la guía de preguntas más frecuentes.

g) Visit Arduino.cc: Conecta a través de internet con el sitio oficial de Arduino

que es http://arduino.cc

Page 18: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 18

h) About Arduino: Muestra información sobre los creadores de Arduino.

Algunas de las opciones anteriormente descritas, tienen asociados

accesos directos debajo de la barra de menús. Estos 6 accesos directos o iconos

son:

Verify Open New

Upload Save Serial Monitor

b) Área de trabajo

El área de trabajo es la zona editable del IDE de Arduino donde

escribiremos nuestro código para posteriormente, compilarlo y transferirlo a la

placa. En el entorno Arduino podemos tener tantas funciones como queramos

(definidas por el usuario) pero como mínimo tendremos dos: setup() y loop().

El código situado en la función setup(), se ejecutará solo una vez, al

iniciarse el sistema, es decir, al arrancar el microcontrolador (no confundir con

el bootloader). Se suelen configurar los GPIO como entradas o salidas en esta

función o inicializar algún dispositivo. El código que situemos en la función

loop() en cambio, se ejecutará indefinidamente (loop significa lazo en inglés).

Más adelante, describiremos como definir nuestras propias funciones y como

utilizarlas en nuestros proyectos.

En el entorno Arduino, las palabras reservadas por el compilador,

cambian automáticamente de formato. Otra característica es el tratamiento

diferenciado de las letras mayúsculas y minúsculas.

Page 19: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 19

c) Área de notificaciones

El área de notificaciones es la zona del IDE de Arduino donde el

compilador nos dará información sobre posibles errores, qué placa tenemos

conectada y a qué puerto. También nos indica en que línea tenemos el cursor

dentro del área de trabajo.

2.- Programa ejemplo Blink

En 1972 Dennis Ritchie y Brian W. Kernighan publicaron “El lenguaje de

programación C”. 40 años después, es considerado como el inicio de la programación

en alto nivel, base de la mayoría de los lenguajes que hoy conocemos y donde aparece

el famoso ejemplo de “Hello World”. Desde entonces es habitual nombrar, como lo

hicieron Dennis y Brian, “Hola Mundo” cuando se realiza la primera prueba en

cualquier lenguaje de programación. En el mundo de la computación física, el

equivalente a “Hello World” es “Blink” (parpadear en ingles), alternar entre un estado

alto y bajo en un pin digital configurado como salida. A continuación vamos a cargar

nuestro “Blink” en nuestro Arduino. Abrimos el IDE de Arduino y hacemos:

Menú File � Examples �1.Basics � Blink

Ahora

conectamos

Page 20: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 20

nuestra placa Arduino al puerto USB de nuestro ordenador. En el menú Tools � Board

elegimos nuestro modelo de Arduino:

Seleccionamos el puerto com asociado a nuestro Arduino desde el menú

Tools � Serial Port � Arduino UNO

Ya lo tenemos todo preparado para compilar el programa y enviarlo a la placa

Arduino pero antes comentaremos el código para irnos familiarizando con las

intrucciones.

Función Setup() Se ejecuta una vez

Función loop()

Se ejecuta

indefinidamente

Descripción

Es opcional

Page 21: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 21

a) Descripción: Se puede empezar el código con una breve descripción de la

funcionalidad de nuestro sketch. Siempre ayudará a un posible lector o a ti

mismo en un futuro…OPEN SOURCE!!!

Fijémonos que utilizamos las instrucciones /* y */ para introducir comentarios

de mas de una linea.

b) Función Setup(): Esta función se ejecuta solo una vez al arrancar el sistema. En

este caso solo la utilizamos para configurar el GPIO 13 de nuestro Arduino

UNO, como salida. Utilizamos la función pinMode para ello. Cuando el

comentario ocupa una sola linea utilizamos la doble barra //

El pin 13 tiene un led conectado en la propia placa en casi todos los

modelos de Arduino.

c) Función loop(): Esta función se ejecutará mientras la placa esté alimentada y

no esté en reset. Con la función digitalWrite, escribimos un estado alto en el

pin 13 (si medimos la tensión en el pin, mediremos 5V).

Despues hacemos que el microcontrolador espere un tiempo con la

función delay. Esta función provoca una espera en milisegundos en función del

parámetro utilizado en su llamada. Mas adelante comentaremos cosas de esta

famosa pero peligrosa función. Pasada la espera, escribimos un estado bajo en

el mismo pin (si medimos la tensión en el pin, mediremos 0V) y antes de volver

a escribir un estado alto, volvemos a realizar una pequeña espera de 1000

milisegundos. Si consideramos que esta función se ejecuta indefinidamente, ya

tenemos el parpadeo del pin como queríamos.

Ahora compilamos el sketch y lo mandamos a la placa mediante el icono de

upload. Despues de unos segundos de transferencia y de arranque del sistema,

observaremos que el led conectado al pin 13 de nuestro Arduino, empieza a oscilar con

una frecuencia de 0.5 Hz. Un segundo ON, un segundo OFF… Hello World !!!

Ahora puedes modificar el código y observar las consecuencias. Por ejemplo

puedes cambiar mayúsculas por minúsculas, cambiar el parámetro de la función delay

o introducir una espera en la función setup. Siempre observando los mensajes del

compilador, en cuanto a posibles errores al compilar o corroborando los cambios, en el

comportamiento de la placa, ejecutando nuestro código en ella.

Page 22: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 22

5.- Monitorización del puerto Serial0 de Arduino. Una poderosa herramienta que nos ofrece el IDE de Arduino es Serial Monitor.

Nos da la posibilidad de monitorizar el puerto serie del microcontrolador de la placa.

Desde allí podremos visualizar variables en tiempo de ejecución o enviar datos desde

el exterior al microcontrolador, sin necesidad de cablear ningún elemento externo

como pulsadores, potenciómetros o pantallas LCD. Es una herramienta que nos

ayudará en el futuro, a encontrar errores en nuestros programas.

Hay que tener en cuenta al utilizar Serial Monitor algunas cosas:

a) Cuando conectamos el monitor, la placa de Arduino se resetea.

b) Hay que configurar la velocidad de comunicación desde nuestro sketch y desde el

propio monitor. No tienen porque coincidir con la velocidad del puerto serie virtual

que tenemos en nuestro PC para programar el microcontrolador.

c) Hay que tener mucho cuidado con los tipos de datos de las variables que utilizamos y

con las conversiones que el compilador realiza de forma automática. Sobre todo hay

que tener en cuenta que sólo podemos enviar desde el monitor al microcontrolador,

caracteres.

A continuación vamos a modificar el sketch blink para poder interactuar con

nuestra placa Arduino utilizando, Serial Monitor. Diferenciaremos dos casos:

a) Monitorizar datos enviados desde el microcontrolador de la placa Arduino (ya sean

mensajes de texto o variables).

b) Enviar datos desde nuestro PC al microcontrolador de la placa Arduino.

Para enviar datos al microcontrolador

Para visualizar datos del microcontrolador

Configuración

Page 23: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 23

a) Monitorizar datos enviados desde el microcontrolador de la placa Arduino

Vamos a realizar unas modificaciones para que nos envie un mensaje indicando el

estado del led

Ahora compilamos el sketch modificado, lo enviamos a la placa y conectamos el

monitor… Arduino nos habla!

Vamos a modificar el código para que Arduino nos envie el valor de una variable, no

un mensaje de texto.

Ahora compilamos el sketch modificado, lo enviamos a la placa y conectamos el

monitor.

Iniciamos la comunicación a 9600 bps

Enviamos un mensaje de texto seguido de un retorno de carro

Declaramos una variable de tipo boolean y le asignamos el valor 1

Escribimos en el pin de salida 13 el valor de la variable estado

Asignamos a la variable estado, su valor contrario

Enviamos a Serial Monitor el valor de la variable estado, esta vez sin retorno de carro

Page 24: Curso Arduino Cefire Sesión 1

Plataforma ARDUINO Sesión 1 CEFIRE

Ricardo Carpio Richart IES JAUME I Página 24

b) Enviar datos desde nuestro PC al microcontrolador de la placa Arduino

Ahora enviaremos un dato desde Serial Monitor y nuestra placa Arduino lo

procesará y actuará en consecuencia.

Si conectamos el Serial Monitor del IDE de Arduino, comprobaremos que nos

envía el valor del retardo que en principio toma el valor de 1000. Si ahora

nosotros enviamos el carácter ‘r’ o ‘l’, observaremos que la variable retardo, cambia

de valor y en consecuencia, la placa de Arduino cambia su comportamiento.

Un detalle importante: no ha sido necesario incluir ninguna librería de momento en

nuestro código para utilizar el puerto serie o la función delay.

Declaramos una variable de tipo entero y le asignamos el valor 1000

Declaramos una variable de tipo carácter

Comprobamos si tenemos algún dato en el buffer de entrada del puerto serie

Leemos el puerto y guardamos la lectura en la variable caracter

En función del carácter leído, asignamos un valor diferente a la variable retardo

Realizamos una espera del valor almacenado en la variable retardo

Enviamos a Serial Monitor el valor de la variable retardo para comprobar que ha sido actualizada