You are on page 1of 14

1 de 14

UNIVERSIDAD DE PAMPLONA
Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes

PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013

INTRODUCCIÓN ARDUINO

Ilustración 1 Arduino UNO.

Ilustración 2Arduino MEGA 2560

Objetivos
   Describir las características básicas de la placa Arduino One y Arduino Mega 2560 y se brinden las condiciones necesarias para realizar la programación de las mismas. Acercar al diseño y desarrollo de proyectos basados en Arduino. Brindar opciones de simulación para las tarjetas Arduino.

||cristhian.riano@unipamplona.edu.co

1

cristhianivanrj@gmail.com

disponible para extensión por programadores experimentados. Macintosh OSX y GNU/Linux. El lenguaje puede ser expandido mediante librerías C++. Entorno de programación simple y claro: El entorno de programación de Arduino es fácil de usar para principiantes.2 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Características Generales La plataforma Arduino es una plataforma open-hardware con ideología de electrónica libre. La mayoría de los sistemas microcontroladores están limitados a Windows. Phidgets. La versión menos cara del módulo Arduino puede ser ensamblada a mano. Instrumentación y sensórica.  Precios bajos. basada en una sencilla placa con entradas y salidas (E/S). Parallax Basic Stamp.edu.  Gran cantidad de software y hardware disponible para autoconstruir. La filosofía de software libre permite:  Estudiar el Hardware para entender cómo funciona.    ||cristhian. MIT's Handyboard. e incluso los módulos de Arduino preensamblados cuestan menos de 50$. Código abierto y software extensible: El software Arduino está publicado como herramientas de código abierto (open-source).  Hacer modificaciones al Hardware. Domótica. Arduino puede adquirir variables de su entorno mediante sus entradas por medio de sensores y puede generar acciones que alteren el entorno mediante la manipulación de sus salidas. Netmedia's BX-24. La principal características de estas herramientas es facilitar la programación del Microcontrolador y hacer más versátil y factible para distintos proyecto.  Poder compartir modificaciones con la comunidad. pero suficientemente flexible para que usuarios avanzados puedan aprovecharlo también. Multiplataforma: El software de Arduino se ejecuta en sistemas operativos Windows.riano@unipamplona.com .  Tener acceso a una comunidad activa de usuarios y desarrolladores. Hay muchos otros microcontroladores y plataformas microcontroladoras similares a la plataforma Arduino disponibles como. y la gente que quiera entender los detalles técnicos pueden hacer el salto desde Arduino a la programación en lenguaje assembler. A continuación se mencionan algunos de los campos de aplicación:     Robótica Móvil. y muchas otras. Control de Proceso. analógicas y digitales por lo que su diseño es de libre acceso. Selecciona Arduino trae las siguientes ventajas respecto a las otras:  Barato: Las placas Arduino son baratas comparadas con otras plataformas micro controladoras.co 2 cristhianivanrj@gmail.

un conector de alimentación. Incluso usuarios relativamente inexpertos pueden construir la versión de la placa del módulo para entender cómo funciona y ahorrar dinero. Dispone también de 6 entradas analógicas. Por lo contrario.edu.3 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013  Código abierto y hardware extensible: El Arduino está basado en microcontroladores ATMEGA8 y ATMEGA168 de Atmel. Dispone de 54 entradas/salidas digitales. La tarjeta Arduino MEGA2560 es compatible con la mayoría de los shield o tarjetas de aplicación/ampliación disponibles para las tarjetas Arduino UNO original. Arduino UNO Dispone de 14 entradas/salidas digitales. 14 de las cuales se pueden utilizar como salidas PWM (modulación de anchura de pulso).com . 2Kb Memoria EEPROM 1 Kb (para variables de datos no volátiles) Frecuencia del Reloj 16 MHz Arduino Mega Microcontrolador ATmega2560 Voltaje de 5 V Operación Alimentación 7-12V (Recomendado) Pines líneas de 54 entradas/salidas Digitales Salidas PWM 14 Entradas Analógicas 16 Corriente Máxima 40mA por Pin Comunicación Serial Memoria Flash 256Kb 8Kb Memoria EEPROM 4Kb (para variables de datos no volátiles) Frecuencia del Reloj 16 MHz ||cristhian. una conexión USB. 4 UARTs (puertas series). Además dispone de 16 entradas analógicas. por lo que diseñadores experimentados de circuitos pueden hacer su propia versión del módulo. un oscilador de 16MHz. emplea un Microcontrolador Atmega8U2 programado como actuar convertidor USB a serie. Una de las diferencias principales de la tarjeta Arduino MEGA 2560 es que no utiliza el convertidor USB-serie de la firma FTDI. extendiéndolo y mejorándolo. un conector ICSP y un pulsador para el reset. un conector de alimentación. una conexión USB. 6 de las cuales se pueden emplear como salidas PWM (modulación de anchura de pulsos). un oscilador de 16MHz. Arduino Mega 2560 es una versión ampliada de la tarjeta original de Arduino y está basada en el Microcontrolador Atmega2560. Arduino UNO y MEGA es una tarjeta electrónica basada en el Microcontrolador Atmega328 y ATmega2560 respectivamente.co 3 cristhianivanrj@gmail. un conector ICSP y un pulsador para el Reset. Los planos para los módulos están publicados bajo licencia Creative Commons. Las características más relevantes se resumen a continuación: Arduino Uno Microcontrolador ATmega328 Voltaje de 5V Operación Alimentación 7-12V (Recomendado) Pines líneas de 14 entradas/salidas Digitales Salidas PWM 6 Entradas Analógicas 6 Corriente Máxima 40mA por Pin Comunicación serial Memoria Flash 32 Kb Memoria SRAM.riano@unipamplona.

o. Un suministro de 3. Pin GND.3 V generado por el chip FTDI de la placa. El rango recomendado es de 7 a 12 voltios.com . El adaptador puede ser conectado mediante un enchufe centro-positivo en el conector de alimentación de la placa. El suministro regulado de energía usado para alimentar al Microcontrolador y otros componentes de la placa.edu. Ilustración 3 Distribución Pines Arduino UNO ||cristhian.riano@unipamplona. Pin 5V. o ser suministrado por USB u otro suministro regulado de 5 V.4 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Descripción Física La tarjeta Arduino UNO Y Mega puede ser alimentada a través de la conexión USB o con un suministro de energía externo. si suministra tensión a través del conector de alimentación. Este puede venir o desde VIN a través de un regulador en la placa. La corriente máxima es de 50mA. Los cables de la batería pueden insertarse en las cabeceras de los pines Gnd y Vin del conector POWER ya que la tarjeta cuenta con un regulador de voltaje de buena eficiencia.co 4 cristhianivanrj@gmail. Pin 3.3V. Pines de Tierra. La alimentación externa (no USB) puede venir o desde un adaptador AC-a-DC o desde una batería. Puedes suministrar tensión a través de este pin. acceder a él a través de este pin. Pin POWER Pin VIN: La entrada de tensión a la placa Arduino cuando está usando una fuente de alimentación externa (al contrario de los 5 voltios de la conexión USB u otra fuente de alimentación regulada).

aunque proporcionada por el hardware subyacente. Estos pines soportan comunicación SPI (Serial Peripheral Interface). Por defecto miden 5 voltios desde tierra. Sistemas de Identificación: Es una aproximación experimental. Usados para recibir (Rx) y transmitir (Tx) datos TTL en serie.edu. Pin AREF. cada una de las cuales proporciona 10 bits de resolución (por ejemplo 1024 valores diferentes). el LED está encendido. aunque es posible cambiar el valor más alto de su rango usando el pin ARF y algún código de bajo nivel. Hay otro par de pines en la placa. Se desarrollan algunos experimentos en el proceso y se determina un modelo. digitalWrite() y digitalRead()2. Cuando el pin está a valor HIGH. algunos pines tienen funcionalidad especializada: Pin TWI: A4 o SDA and A5 o Pin SCL. Soportan comunicación I²C (TWI) usando la libreria Wire5. Estos pines están conectados a los pines correspondientes del chip FTDI USB-a-TTL Serie. la cual. Pin LED: 13. Pines Analog Input El Arduino UNO tiene 6 entradas analógicas. 13 (SCK). Pin 2 y 3. Además. 6. Usado con analogReference().5 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 PIN Digital (PWM~) Cada uno de los 14 pines digitales de la Arduino Uno al igual que los 54 de la Arduino Mega puede ser usado como entrada o salida.co 5 cristhianivanrj@gmail. con flanco de subida o flanco de bajada. Típicamente usada para añadir un botón de reset a dispositivos que bloquean a la placa principal. Voltaje de referencia para las entradas analógicas. cuando el pin está a LOW. Pin Reset. ||cristhian. Hay un LED empotrado conectado al pin digital 13. Cada pin puede proporcionar o recibir un máximo de 40 mA y tiene una resistencia interna pull-up (desconectada por defecto) de 20-50 KOhms. 12 (MISO). algunos pines tienen funciones especiales: Pin Serial: 0 (Rx) y 1 (Tx). usando funciones pinMode(). Además.riano@unipamplona. Pin PWM: 3. está apagado. Proporcionan salida PWM de 8 bits con la función analogWrite() Pin SPI: 10 (SS). Operan a 5 voltios. no está actualmente incluida en el lenguaje Arduino. 5. 10 y 11. con unos parámetros asignados que no tiene un significado físico. 9. Mirar la función attachInterrupt(). Pone esta linea a LOW para resetear el Microcontrolador.com . Interrupciones Externas Estos pines pueden ser configurados para disparar una interrupción interna. 11 (MOSI).

El Arduino Uno’s y Mega puede ser programado con el software Arduino. Descargar el entorno Arduino. 2. otro Arduino. El ATmega 328 provee comunicación serie UART TTL(5V). Luego de descargar el entono Arduino descomprimimos la carpeta no necesita instalación y realizamos doble click en la aplicación Arduino. Instalar los Drivers Usb. Tan pronto conectemos el dispositivo saldrá una viso el dispositivo no se reconoce por lo que debemos direccionar en el equipo. 6. Programación Para iniciar hay que conectar la placa Arduino al ordenador y cargar una primera rutina para lo cual seguiremos los siguientes pasos.Basics\Blink”.5\examples\01. la cual está disponible en los pines digitales 0 (Rx) y 1 (Tx). Download. Abrimos una Rutina que nos proporciona como ejemplo que es el parpadeo de un Led en la siguiente ruta “arduino-1.riano@unipamplona. ||cristhian.0. Seleccione el tipo de Board o tarjeta con la que se cuenta como se muestra en la Ilustración 44. Lo podemos descargar del siguiente enlace. 5.co 6 cristhianivanrj@gmail.com . 3. Conectamos la placa Arduino si es por primera vez observamos como parpadea un led.edu. 4. Una libreria SoftwareSerial permite comunicación serie en cualquiera de los pines digitales de la Uno’s. Un ATmega16U2 en la placa canaliza esta comunicación serie al USB y los drivers (incluidos con el software Arduino) proporcionan un puerto de comunicación virtual al software del ordenador.0.6 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Comunicación La Arduino UNO y Mega tiene un número de infraestructuras para comunicarse con un ordenador. 1. El software Arduino incluye un monitor serie que permite a datos de texto simple ser enviados a y desde la placa Arduino. u otros microcontroladores.5-windows\arduino-1.

co 7 cristhianivanrj@gmail.7 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Ilustración 4.com . este debería ser COM1 o COM2 para la placa serie Arduino. 7. En Windows. Seleccionar el dispositivo serie de la placa Arduino desde el menu Herramientas > Puerto Serie.riano@unipamplona.edu. COM4 o COM5 para la placa USB. Seleccionar Board. ||cristhian. Para estar seguro de la elección nos dirigimos Administrador de Dispositivos de Windows (En la pestaña Hardware o en el Panel de Control de Sistema). Buscar puertos (COM y LPT) identificamos el COM de la placa Arduino para nuestro caso COM4 como se parecía en la Ilustración 5. o COM3. Ilustración 5 Selección Puerto Serie.

8 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 8. Motores) por lo que nos permite realizar cambios. probar rutinas.riano@unipamplona. perfeccionar el desempeño y reducir costos.co 8 cristhianivanrj@gmail. como se muestra en la Ilustración 6. Se aprecia con los elementos que componen la placa: ||cristhian. Simular nos permitirá observar el comportamiento de los chips con componentes virtuales (Resistencias. Leds. Si abrimos el esquema correspondiente a tarjeta Arduino UNO con el Proteus. 1.edu.com . Para cumplir con este objetivo se propone Labcenter Electronics Proteus a la que pertenece el programa Isis. Simulación Trabajar con las tarjetas Arduino brinda ciertas ventajas pues trabaja con los Chips ATmega de la empresa Atmel cuyas librerías se encuentran presentes en distintos simuladores. nos mostrara el diagrama que se muestra la Ilustración 7. que permite la simulación de chips ATmega y la usaremos para probar los circuitos que necesitemos en los proyectos. Ilustración 6 Cargar Programa en Tarjeta Arduino. Luego de tener seleccionada la tarjeta y el puerto procedemos a verificar el programa y por último en archivo cargar después de unos pocos segundos se encenderán los leds TX y RX que indican que la comunicación serie se estableció.

3. Ilustración 8 Diagrama ATmega 328P Para simular el código.hex el código compilado se guarda en una carpeta temporal.9 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Ilustración 7 Diagrama Arduino UNO. debemos cargar el programa de la misma forma que lo haríamos con el programador solo que en este caso direccionamos el archivo resultante de la compilación al Microcontrolador. ||cristhian. 2. Para ello vamos dentro del software de Arduino a Archivo . debemos generar el archivo .co 9 cristhianivanrj@gmail.edu.riano@unipamplona.Preferencias y activamos la opción mostrar resultado detallado durante “compilación” como se muestra en la Ilustración 9 . Para acceder al Microcontrolador combinamos click mas la teclas Ctrl +C y haciendo doble clic sobre el Microcontrolador se nos abrirá la ventana de configuración del ATmega328P como se muestra en Ilustración 8. Para conocer la ruta en donde se guarda el .com . Para simular el código.hex habilitamos la opción para mostrar la salida del compilador.

riano@unipamplona. Mostrar Resultado detallado durante Compilación.edu.10 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Ilustración 9.Hex 5.Hex generado en la compilación lo cargamos al microcontrolador realizando doble click sobre él nos aparece la ventana “Edit Component” y en “Program File” seleccionamos el archivo como se muestra en la Ilustración 11 ||cristhian. Ilustración 10.com .co 10 cristhianivanrj@gmail. Es recomendable crear un acceso directo para la ruta que nos proporciona el software Arduino en la parte inferior para acceder al archivo hex rapidamente. Ruta de archivo *. Luego que conocemos la ruta del archivo *. 4.

delay(1000).11 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Ilustración 11 Cargar Archivo Hex en el Microcontrolador. setup() ||cristhian. OUTPUT). HIGH). observando su comportamiento. La estructura de programación de Arduino es simple y divide la ejecución en por lo menos dos partes o funciones que encierran bloques de declaraciones setup y Loop: void setup() { statements. pulsamos CTRL+X para volver al circuito del Arduino y hacemos clic sobre el boton de play para iniciar la ejecución del código. LOW). 6.co 11 cristhianivanrj@gmail.riano@unipamplona.edu. delay(1000).com . } int led = 13. // wait for a second } Ambas funciones son requeridas para que el programa funcione. void setup() { pinMode(led. // wait for a second digitalWrite(led. Estructura Básica de un Programa. } void loop() { statements. //Ajusta Led como salida } void loop() { digitalWrite(led. El Microcontrolador ya tiene la rutina a ejecutar. por lo que salimos de la ventana aceptando los cambios.

los parámetros que se pasan a la función como se muestra a continuación. Sólo se debe seleccionar una llave y su compañera lógica aparecerá resaltada. entre paréntesis. Podemos hacer uso de funciones integradas como void setup() y void loop() o escribir nuevas. //convierte 0-1023 a 0-255 return v. que será el valor retornado por la función (int. Completar la siguiente Tabla Trabajo en Clase ||cristhian. void. El Software Arduino incluye una práctica característica para chequear el balance de llaves.com . } 1. //lee el valor del potenciómetro v /= 4. loop() La función loop se ejecuta luego de setup() e incluye el código que se ejecuta continuamente leyendo entradas. Esta función es el núcleo de todos los programas Arduino y soporta la mayor parte del trabajo. Funciones Una función es un bloque de código que tiene un nombre y un grupo de declaraciones que se ejecutan cuando se llama a la función... A continuación del tipo.12 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 La función setup debe contener la declaración de variables al comienzo del programa. void loop() { statements. int delayVal() { int v. etc. Las funciones se escriben para ejecutar tareas repetitivas y reducir el desorden en un programa.). //crea una variable temporal 'v' v = analogRead(pot).edu.co 12 cristhianivanrj@gmail. Es la primera función a ejecutar en el programa. } Llaves {} Las llaves definen el comienzo y el final de bloques de función y bloques de declaraciones como void loop() y sentencias for e if. Las llaves deben estar balanceadas (a una llave de apertura { debe seguirle una llave de cierre }). //devuelve el valor final de v } type functionName(parameters) { statements. En primer lugar se declara el tipo de la función. se declara el nombre de la función y. activando salidas.riano@unipamplona. Las llaves no balanceadas provocan errores de compilación. es ejecutada una vez y es usada para asignar pinMode o inicializar las comunicaciones serie.

riano@unipamplona. Multiplicación. Instrucción byte int long float arrays Descripción Ejemplo 3. Division) y completar la siguiente tabla.co 13 cristhianivanrj@gmail. Instrucción x ++ x -x += y x -= y x *= y x /= y x == y x != y x<y x>y x <= y x >= y Descripción Ejemplo ||cristhian. Describir como se realiza la declaración de variables en el software de programación de Arduino y completar la siguiente tabla.edu. (punto y coma) /*… */ (bloque de comentarios) // línea de comentarios Descripción 2. Describir como se realiza las operaciones aritméticas (Suma. Resta.com .13 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Ejemplo Instrucción .

cc/en/Main/arduinoBoardUno http://arduino.co 14 cristhianivanrj@gmail.riano@unipamplona.edu.cc/en/Main/arduinoBoardMega2560 ||cristhian.com .14 de 14 UNIVERSIDAD DE PAMPLONA Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 Bibliografía http://arduino.