Arduino es una plataforma de hardware libre, basada en una placa con unmicrocontrolador y
un entorno de desarrollo, diseada para facilitar el uso de la electrnica en proyectos
multidisciplinares. 2
3
El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos deentrada/salida. 4 Los microcontroladores ms usados son el Atmega168, Atmega328,Atmega1280, ATmega8 por su sencillez y bajo coste que permiten el desarrollo de mltiples diseos. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programacin Processing/Wiring y el cargador de arranqueque es ejecutado en la placa. 4
Desde octubre de 2012, Arduino se usa tambin con microcontroladoras CortexM3 de ARM de 32 bits, 5 que coexistirn con las ms limitadas, pero tambin econmicas AVR de 8 bits. ARM y AVR no son plataformas compatibles a nivel binario, pero se pueden programar con el mismo IDE de Arduino y hacerse programas que compilen sin cambios en las dos plataformas. Eso s, las microcontroladoras CortexM3 usan 3,3V, a diferencia de la mayora de las placas con AVR que generalmente usan 5V. Sin embargo ya anteriormente se lanzaron placas Arduino con Atmel AVR a 3,3V como la Arduino Fio y existen compatibles de Arduino Nano y Pro como Meduino en que se puede conmutar el voltaje. Arduino se puede utilizar para desarrollar objetos interactivos autnomos o puede ser conectado a software tal como Adobe Flash, Processing, Max/MSP, Pure Data). Las placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente. Arduino puede tomar informacin del entorno a travs de sus entradas analgicas y digitales, puede controlar luces, motores y otros actuadores. El microcontrolador en la placa Arduino se programa mediante el lenguaje de programacin Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un computador. El proyecto Arduino recibi una mencin honorfica en la categora de Comunidades Digital en el Prix Ars Electrnica de 2006. 6
7
8
ndice [ocultar] 1 Historia 2 Aplicaciones 3 Esquema de conexiones o 3.1 Entradas y salidas 4 Especificaciones 5 Lenguaje de programacin Arduino o 5.1 Funciones bsicas y operadores 5.1.1 Sintaxis Bsica 5.1.2 Estructuras de control 5.1.3 Variables 5.1.3.1 Constantes 5.1.3.2 Tipos de datos 5.1.3.3 Conversin entre tipos 5.1.3.4 Cualificadores y mbito de las variables 5.1.3.5 Utilidades 5.1.4 Funciones Bsicas 5.1.4.1 E/S Digital 5.1.4.2 E/S Analgica 5.1.4.3 E/S Avanzada 5.1.4.4 Tiempo 5.1.4.5 Matemticas 5.1.4.6 Trigonometra 5.1.4.7 Nmeros aleatorios 5.1.4.8 Bits y Bytes 5.1.4.9 Interrupciones externas 5.1.4.10 Interrupciones 5.1.4.11 Comunicacin por puerto serie 5.1.5 Manipulacin de puertos o 5.2 AVR Libc 5.2.1 Interrupciones 5.2.2 Temporizadores 5.2.3 Manipulacin de puertos 5.2.4 Establecer Bits en variables o 5.3 Diferencias con Processing 5.3.1 Arreglos 5.3.2 Impresin de cadenas o 5.4 Ejemplo sencillo de programacin en Arduino 6 Bibliotecas en Arduino o 6.1 Serial o 6.2 EEPROM o 6.3 Ethernet o 6.4 Firmata o 6.5 LiquidCrystal o 6.6 Servo o 6.7 SoftwareSerial o 6.8 Stepper o 6.9 Wire o 6.10 Creacin de bibliotecas 6.10.1 Ejemplo de biblioteca 7 Instalacin en diferentes entornos o 7.1 Windows o 7.2 GNU/Linux 8 Equipo de desarrollo 9 Pduino 10 Minibloq 11 Physical Etoys 12 Vase tambin 13 Referencias 14 Bibliografa 15 Enlaces de externos Historia[editar] Arduino se inici en el ao 2005 como un proyecto para estudiantes en el Instituto IVREA, en Ivrea (Italia). En ese tiempo, los estudiantes usaban el microcontrolador BASIC Stamp, cuyo coste era de 100 dlares estadounidenses, lo que se consideraba demasiado costoso para ellos. Por aquella poca, uno de los fundadores de Arduino, Massimo Banzi, daba clases en Ivrea. 9
El nombre del proyecto viene del nombre del Bar di Re Arduino (Bar del Rey Arduino) donde Massimo Banzi pasaba algunas horas. En su creacin, contribuy el estudiante colombiano Hernando Barragn, quien desarroll la tarjeta electrnica Wiring, el lenguaje de programacin y la plataforma de desarrollo. 10 Una vez concluida dicha plataforma, los investigadores trabajaron para hacerlo ms ligero, ms econmico y disponible para la comunidad de cdigo abierto (hardware y cdigo abierto). El instituto finalmente cerr sus puertas, as que los investigadores, entre ellos el espaol David Cuartielles, promovieron la idea. 9 Banzi afirmara aos ms tarde, que el proyecto nunca surgi como una idea de negocio, sino como una necesidad de subsistir ante el inminente cierre del Instituto de diseo Interactivo IVREA. Es decir, que al crear un producto de hardware abierto, ste no podra ser embargado. Posteriormente, Google colabor en el desarrollo del Kit Android ADK (Accesory Development Kit), una placa Arduino capaz de comunicarse directamente con telfonos mviles inteligentes bajo el sistema operativo Android para que el telfono controle luces, motores y sensores conectados de Arduino. 11
12
Para la produccin en serie de la primera versin se tom en cuenta que el coste no fuera mayor de 30 euros, que fuera ensamblado en una placa de color azul, deba ser Plug and Play y que trabajara con todas las plataformas informticas tales como MacOSX,Windows y GNU/Linux. Las primeras 300 unidades se las dieron a los alumnos del Instituto IVRAE, con el fin de que las probaran y empezaran a disear sus primeros prototipos. En el ao 2005, se incorpor al equipo el profesor Tom Igoe, 10 que haba trabajado en computacin fsica, despus de que se enterara del mismo a travs de Internet. l ofreci su apoyo para desarrollar el proyecto a gran escala y hacer los contactos para distribuir las tarjetas en territorio estadounidense. En la feria Maker Fair de 2011 se present la primera placa Arduino 32 bit para trabajar tareas ms pesadas. 13
Aplicaciones[editar] El mdulo Arduino ha sido usado como base en diversas aplicaciones electrnicas: Xoscillo: Osciloscopio de cdigo abierto. 14
Equipo cientfico para investigaciones. 15
Arduinome: Un dispositivo controlador MIDI. 16
OBDuino: un econmetro que usa una interfaz de diagnstico a bordo que se halla en los automviles modernos. Humane Reader: dispositivo electrnico de bajo coste con salida de seal de TV que puede manejar una biblioteca de 5000 ttulos en una tarjeta microSD. 17
The Humane PC: equipo que usa un mdulo Arduino para emular un computador personal, con un monitor de televisin y un teclado para computadora. 18
Ardupilot: software y hardware de aeronaves no tripuladas. ArduinoPhone: un telfono mvil construido sobre un mdulo Arduino. 19
20
Esquema de conexiones[editar] Entradas y salidas[editar] Poniendo de ejemplo al mdulo Diecimila, ste consta de 14 entradas digitales configurables como entradas y/o salidas que operan a 5 voltios. Cada contacto puede proporcionar o recibir como mximo 40 mA. Los contactos 3, 5, 6, 8, 10 y 11 pueden proporcionar una salida PWM (Pulse Width Modulation). Si se conecta cualquier cosa a los contactos 0 y 1, eso interferir con la comunicacin USB. Diecimila tambin tiene 6 entradas analgicas que proporcionan una resolucin de 10 bits. Por defecto, aceptan de 0 hasta 5 voltios, aunque es posible cambiar el nivel ms alto, utilizando el contacto Aref y algn cdigo de bajo nivel. Especificaciones[editar] Las especificaciones de los distintos modelos de placas Arduino se resumen en la siguiente tabla: Modelo Microcont rolador Volt aje de entr ada Volt aje del siste ma Frecue ncia de Reloj Digi tal I/O Entrad as Anal gicas P W M UA RT Mem oria Flas h Cargad or Interfaz de Program acin Arduino Due AT91SAM3 X8E 5- 12V 3,3V 84MHz 54* 12 12 4 512K b Due Nativa USB Arduino Leonardo ATmega32 U4 7- 12V 5V 16MHz 20* 12 7 1 32Kb Leonard o Nativa USB Arduino Uno - R3 ATmega32 8 7- 12V 5V 16MHz 14 6 6 1 32Kb Optiboot USB via ATMega 16U2 RedBoard ATmega32 8 7- 15V 5V 16MHz 14 6 6 1 32Kb Optiboot USB via FTDI Arduino Uno SMD (desconti nuado) ATmega32 8 7- 12V 5V 16MHz 14 6 6 1 32Kb Optiboot USB via ATMega 8U2 Arduino Uno (desconti nuado) ATmega32 8 7- 12V 5V 16MHz 14 6 6 1 32Kb Optiboot USB via ATMega 8U2 Arduino Duemilan ove (desconti nuado) ATmega32 8 7- 12V 5V 16MHz 14 6 6 1 32Kb Atmega BOOT USB via FTDI Arduino Bluetooth (desconti nuado) ATmega32 8 1,2- 5,5V 5V 16MHz 14 6 6 1 32Kb Atmega BOOT SerialBlu etooth Arduino Pro 3.3V/8MH z ATmega32 8 3,35 -12V 3,3V 8MHz 14 6 6 1 32Kb Atmega BOOT Cabecer a compatib le con FTDI Arduino Pro 5V/16MHz ATmega32 8 5 - 12V 5V 16MHz 14 6 6 1 32Kb Atmega BOOT Cabecer a compatib le con FTDI Ethernet Pro (desconti nuado) ATmega32 8 7- 12V 5V 16MHz 14 6 6 1 32Kb Atmega BOOT Cabecer a compatib le con FTDI Arduino Mega 2560 R3 ATmega25 60 7- 12V 5V 16MHz 54 16 14 4 256K b STK500 v2 USB via ATMega 16U2 Arduino Mega 2560 (desconti nuado) ATmega25 60 7- 12V 5V 16MHz 54 16 14 4 256K b STK500 v2 USB via ATMega 8U2 Arduino Mega (desconti nuado) ATmega12 80 7- 12V 5V 16MHz 54 16 14 4 128K b STK500 v2 USB via FTDI Mega Pro 3.3V ATmega25 60 3,3- 12V 3,3V 8MHz 54 16 14 4 256K b STK500 v2 Cabecer a compatib le con FTDI Mega Pro 5V ATmega25 60 5- 12V 5V 16MHz 54 16 14 4 256K b STK500 v2 Cabecer a compatib le con FTDI Arduino Mini 04 (desconti nuado) ATmega32 8 7-9V 5V 16MHz 14 6 8 1 32Kb Atmega BOOT Cabecer a Serial Arduino Mini 05 ATmega32 8 7-9V 5V 16MHz 14 6 8 1 32Kb Atmega BOOT Cabecer a Serial Arduino Pro Mini 3.3V/8MH z ATmega32 8 3,35 -12V 3,3V 8MHz 14 6 6 1 32Kb Atmega BOOT Cabecer a compatib le con FTDI Arduino Pro Mini 5V/16MHz ATmega32 8 5 - 12V 5V 16MHz 14 6 6 1 32Kb Atmega BOOT Cabecer a compatib le con FTDI Arduino Fio ATmega32 8P 3,35 -12V 3,3V 8MHz 14 8 6 1 32Kb Atmega BOOT Cabecer a compatib le con FTDI o Inalmbri ca via XBee 1
Mega Pro Mini 3.3V ATmega25 60 3,3- 12V 3,3V 8MHz 54 16 14 4 256K b STK500 v2 Cabecer a compatib le con FTDI Pro Micro 5V/16MHz ATmega32 U4 5- 12V 5V 16MHz 12 4 5 1 32Kb DiskLoa der Nativa USB Pro Micro 3.3V/8MH z ATmega32 U4 3,35 -12V 3,3V 8MHz 12 4 5 1 32Kb DiskLoa der Nativa USB LilyPad Arduino 328 Main Board ATmega32 8 2,7- 5,5V 3,3V 8MHz 14 6 6 1 32Kb Atmega BOOT Cabecer a compatib le con FTDI LilyPad Arduino Simple Board ATmega32 8 2,7- 5,5V 3,3V 8MHz 9 4 5 0 2 32Kb Atmega BOOT Cabecer a compatib le con FTDI Los modelos Arduino Diecimila, Arduino Duemilanove y Arduino Mega estn basados en los microcontroladores ATmega168, ATmega328 y ATmega1280
ATmega168 ATmega328 ATmega1280 Voltaje operativo 5 V 5 V 5 V Voltaje de entrada recomendado 7-12 V 7-12 V 7-12 V Voltaje de entrada lmite 6-20 V 6-20 V 6-20 V Contactos de 14 (6 14 (6 54 (14 entrada y salida digital proporcionan PWM) proporcionan PWM) proporcionan PWM) Contactos de entrada analgica 6 6 16 Intensidad de corriente 40 mA 40 mA 40 mA Memoria Flash 16KB (2KB reservados para el bootloader) 32KB (2KB reservados para el bootloader) 128KB (4KB reservados para el bootloader) SRAM 1 KB 2 KB 8 KB EEPROM 512 bytes 1 KB 4 KB Frecuencia de reloj 16 MHz 16 MHz 16 MHz Lenguaje de programacin Arduino[editar] La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programacin de alto nivelProcessing. Sin embargo, es posible utilizar otros lenguajes de programacin y aplicaciones populares en Arduino, 21 debido a que Arduino usa la transmisin serial de datos soportada por la mayora de los lenguajes mencionados. Para los que no soportan el formato serie de forma nativa, es posible utilizar software intermediario que traduzca los mensajes enviados por ambas partes para permitir una comunicacin fluida. Algunos ejemplos son: 3DVIA Virtools: aplicaciones interactivas y de tiempo real. Adobe Director BlitzMax (con acceso restringido) C C++ (mediante libSerial o en Windows) C# Cocoa/Objective-C (para Mac OS X) Flash (mediante ActionScript) Gambas Isadora (Interactividad audiovisual en tiempo real) Instant Reality (X3D) Java Liberlab (software de medicin y experimentacin) Mathematica Matlab MaxMSP: Entorno grfico de programacin para aplicaciones musicales, de audio y multimedia Minibloq: Entorno grfico de programacin, corre tambin en las computadoras OLPC Perl Php Physical Etoys: Entorno grfico de programacin usado para proyectos de robtica educativa Processing Pure Data Python Ruby Scratch for Arduino (S4A): Entorno grfico de programacin, modificacin del entorno para nios Scratch, del MIT) Squeak: Implementacin libre de Smalltalk SuperCollider: Sntesis de audio en tiempo real VBScript Visual Basic .NET VVVV: Sntesis de vdeo en tiempo real