Sei sulla pagina 1di 12

Arduino - Wikipedia, la enciclopedia libre

http://es.wikipedia.org/wiki/Arduino

Arduino
De Wikipedia, la enciclopedia libre Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseada para facilitar el uso de la electrnica en proyectos 12 multidisciplinares. El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de 3 entrada/salida. 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 arranque (boot loader) que corre 3 en la placa. Arduino se puede utilizar para desarrollar objetos interactivos autnomos o puede ser conectado a software del ordenador (por ejemplo: Macromedia 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. Al ser open-hardware, tanto su diseo como su distribucin es libre. Es decir, puede utilizarse libremente para el desarrollo de cualquier tipo de proyecto sin haber adquirido ninguna licencia. El proyecto Arduino recibi una mencin honorca en la categora de Comunidades Digital en el Prix Ars Electronica de 2006.4 5 6

Arduino Software

Interfaz del entorno de desarrollo Arduino S.O. GNU/Linux mostrando un programa de ejemplo.

Desarrollador Arduino Software http://www.arduino.cc/es/

Contenido
1 Modelos de placas Arduino 1.1 Placa serie 1.2 Placa Serie de Una Capa 1.3 Placa USB 1.4 Placa de prototipado 1.5 Bluetooth 1.6 XBee 1.7 ArCan 1.8 Stand-alone (autnoma) 1.9 Lily-Pad (Pequea placa SMD) 2 Esquema de pines 2.1 Entradas y salidas 2.2 Esquema y pines 3 Especicaciones 4 Lenguaje de programacin Arduino 4.1 Funciones bsicas y operadores 4.1.1 Sintaxis Bsica 4.1.2 Estructuras de control 4.1.3 Variables 4.1.3.1 Constantes 4.1.3.2 Tipos de datos 4.1.3.3 Conversin entre tipos 4.1.3.4 Cualicadores y mbito de las variables 4.1.3.5 Utilidades 4.1.4 Funciones Bsicas 4.1.4.1 E/S Digital 4.1.4.2 E/S Analgica 4.1.4.3 E/S Avanzada 4.1.4.4 Tiempo 4.1.4.5 Matemticas 4.1.4.6 Trigonometra 4.1.4.7 Nmeros aleatorios 4.1.4.8 Bits y Bytes 4.1.4.9 Interrupciones externas 4.1.4.10 Interrupciones 4.1.4.11 Comunicacin por puerto serie 4.1.5 Manipulacin de puertos 4.2 A.V.R. Libc 4.2.1 Interrupciones 4.2.2 Temporizadores 4.2.3 Manipulacin de puertos
Gnero

Informacin general ltima versin estable 0022


24 de diciembre de 2010

Entorno de desarrollo integrado Java Multiplataforma LGPL o GPL ?

Programado en Sistema operativo Licencia En espaol

1 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre

http://es.wikipedia.org/wiki/Arduino

4.2.4 Establecer Bits en variables 4.3 Diferencias con Processing 4.4 Primer contacto: Hola Mundo en Arduino 5 Bibliotecas en Arduino 5.1 Serial 5.2 EEPROM 5.3 Ethernet 5.4 Firmata 5.5 LiquidCrystal 5.6 Servo 5.7 SoftwareSerial 5.8 Stepper 5.9 Wire 5.10 Creacin de bibliotecas 6 Instalacin 6.1 Windows 6.1.1 Instalar FTDI USB Drivers 6.1.2 Abrir el IDE Arduino 6.2 GNU/Linux 7 Aplicaciones 8 Equipo de desarrollo 9 Pduino 10 Minibloq 11 Vase tambin 12 Referencias 13 Bibliografa 14 Enlaces de externos

Modelos de placas Arduino


La versin original de Arduino est manufacturada por Smart Projects (http://www.smartprojects.it/) . Existen diferentes versiones comerciales de Arduino con propsitos distintos.

Placa Arduino Diecimila.

Arduino (http://arduino.cc /en/Main/Hardware)

Microcontrolador

Flash Pines ...con Pines EEPROM SRAM KiB digitales PWM analgicos KiB KiB 16 0.5 1 14 6 6

Interfaz USB FTDI

Dimensiones Dimensiones pulgadas mm 2.7" x 2.1" 68.6mm x 53.3mm 68.6mm x 53.3mm 68.6mm x 53.3mm 101.6mm x 53.3mm 101.6mm x 53.3mm 40.6mm x 27.9mm 43mm x 18mm 50mm

Diecimila (http://arduino.cc /en/Main ATmega168 /ArduinoBoardDiecimila) Duemilanove (http://arduino.cc/en/Main ATmega168/328P /ArduinoBoardDuemilanove) Uno (http://arduino.cc ATmega328P /en/Main/ArduinoBoardUno) Mega (http://arduino.cc /en/Main /ArduinoBoardMega) Mega2560 (http://arduino.cc/en/Main /ArduinoBoardMega2560) ATmega1280

16/32 32 128

0.5/1 1 4

1/2 2 8

14 14 54

6 6 14

FTDI

2.7" x 2.1" 2.7" x 2.1" 4" x 2.1"

6 ATmega8U2 16 FTDI

ATmega2560

256 32 16/32

4 1 0.5/1

8 2 1/2

54 14 14

14 6 6

16 ATmega8U2 8 8 None FTDI

4" x 2.1" 1.6" x 1.1" 1.70" x 0.73"

Fio (http://arduino.cc ATmega328P /en/Main/ArduinoBoardFio) Nano (http://arduino.cc /en/Main /ArduinoBoardNano) LilyPad (http://arduino.cc /en/Main /ArduinoBoardLilyPad) ATmega168 or ATmega328 ATmega168V or ATmega328V

16

0.5

14

None

2"

2 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre


Placa serie

http://es.wikipedia.org/wiki/Arduino

Es la placa bsica, y se utiliza una interfaz RS-232. sta puede ser utilizada tanto para programar la placa como para comunicarse con otros elementos externos que utilicen el puerto serie, como por ejemplo un PC. La versin Diecimila de Arduino tiene conexin USB y hace innecesario pulsar el botn Reset de la placa cada vez que se carga un nuevo programa, por lo que es mucho ms cmoda de utilizar que su antecesora (puerto serie).

Placa Serie de Una Capa Placa USB


Es igual a la placa serie pero en vez de un puerto serie como tal, tenemos un conector USB (para poder conectar ordenadores sin puerto serie, como los porttiles de ahora) ms un conversor a serie. Si conectamos un aparato que siga la interfaz USB no funcionar pues en realidad es un puerto serie, no USB.

Placa de prototipado
Esta placa est pensada para poder incorporar hardware adicional al diseo base de Arduino. Incorpora una matriz de agujeros en la que se puede aadir nuestro hardware adicional. No dispone de puerto serie ni USB, por ese motivo es necesario disponer de otro programador que utilice ICSP .

Bluetooth
Es la ltima versin en la que se est trabajando. Elimina la necesidad de cables para comunicarse con el PC, vuelve a ser otra manera de disfrazar un puerto serie.

XBee
Esta placa Arduino incorpora el estndar XBee para comunicarse con otras Arduino XBee

ArCan
Este shield dota a Arduino con la capacidad de intercomunicarse via Bus CAN.

Stand-alone (autnoma) Lily-Pad (Pequea placa SMD)

Esquema de pines
Entradas y salidas
Consta de 14 entradas digitales congurables entrada i/o salidas que operan a 5 voltios. Cada pin puede proporcionar o recibir como mximo 40 mA. Los pines 3, 5, 6, 8, 10 y 11 pueden proporcionar una salida PWM (Pulse Width Modulation). Si se conecta cualquier cosa a los pines 0 y 1, eso interferir con la comunicacin USB. Diecimila tambin tiene 6 entradas analgicas que proporcionan una resolucin de 10 bits. Por defecto miden de 0 voltios (masa) hasta 5 voltios, aunque es posible cambiar el nivel ms alto, utilizando el pin Aref y algn cdigo de bajo nivel.

Esquema y pines
Elementos con los que podemos interactuar: (tomando como ejemplo la placa USB). Empezando en el sentido de las agujas del reloj desde el centro de la parte superior: Pin de referencia analgica (naranja) Seal de tierra digital (verde claro) Pines digitales 2-13 (verde) Pines digitales 0-1 / entrada y salida del puerto serie: TX/RX (azul) (estndar de comunicacin serie IC2) Botn de reset (negro) Entrada del circuito del programador serie (marrn) Pines de entrada analgica 0-5 (azul oscuro) Pines de alimentacin y tierra (naranja y naranja claro) Entrada de la fuente de alimentacin externa (9-12V DC) X1 (gris) Conmutacin entre fuente de alimentacin externa o alimentacin a travs del puerto USB SV1 Puerto USB (rojo).

Esquema de pines.

Especicaciones
Los microcontroladores Arduino Diecimila, Arduino Duemilanove y Arduino Mega estn basados en Atmega168, Atmega 328 y Atmega1280

3 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre

http://es.wikipedia.org/wiki/Arduino

Atmega168 Voltaje operativo Voltaje de entrada recomendado Voltaje de entrada lmite Pines de entrada y salida digital Pines de entrada analgica Intensidad de corriente Memoria Flash SRAM EEPROM Frecuencia de reloj 5V 7-12 V 6-20 V 14 (6 proporcionan PWM) 6 40 mA 16KB (2KB reservados para el bootloader) 1 KB 512 bytes 16 MHz 5V 7-12 V 6-20 V

Atmega328 5V 7-12 V 6-20 V

Atmega1280

14 (6 proporcionan PWM) 6 40 mA 32KB (2KB reservados para el bootloader) 2 KB 1 KB 16 MHz

54 (14 proporcionan PWM) 16 40 mA 128KB (4KB reservados para el bootloader) 8 KB 4 KB 16 MHz

Lenguaje de programacin Arduino


La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el popular lenguaje de programacin de alto nivel 7 Processing. Sin embargo, es posible utilizar otros lenguajes de programacin y aplicaciones populares en Arduino. Algunos ejemplos son: Java Flash (mediante ActionScript) Processing Pure Data MaxMSP (entorno grco de programacin para aplicaciones musicales, de audio y multimedia) VVVV (sntesis de vdeo en tiempo real) Adobe Director Python Ruby C C++ (mediante libSerial o en Windows) C# Cocoa/Objective-C (para Mac OS X) Linux TTY (terminales de Linux) 3DVIA Virtools (aplicaciones interactivas y de tiempo real) SuperCollider (sntesis de audio en tiempo real) Instant Reality (X3D) Liberlab (software de medicin y experimentacin) BlitzMax (con acceso restringido) Squeak (implementacin libre de Smalltalk) Mathematica Matlab Minibloq (Entorno grco de programacin, corre tambin en OLPC) Isadora (Interactividad audiovisual en tiempo real) PERL Visual Basic .NET VBScript Esto es posible debido a que Arduino se comunica mediante la transmisin de datos en formato serie que es algo que la mayora de los lenguajes anteriormente citados soportan. 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 uida. Es bastante interesante tener la posibilidad de interactuar Arduino mediante esta gran variedad de sistemas y lenguajes puesto que dependiendo de cuales sean las necesidades del problema que vamos a resolver podremos aprovecharnos de la gran compatibilidad de comunicacin que ofrece.

Funciones bsicas y operadores


Arduino esta basado en C y soporta todas las funciones del estndar C y algunas de C++.8 A continuacin se muestra un resumen con todas la estructura del lenguaje Arduino: Sintaxis Bsica Delimitadores: ;, {} Comentarios: //, /* */ Cabeceras: #dene, #include Operadores aritmticos: +, -, *, /, % Asignacin: = Operadores de comparacin: ==, !=, <, >, <=, >= Operadores Booleanos: &&, ||, ! Operadores de acceso a punteros: *, &

4 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre


Operadores de bits: &, |, ^, ~, <<, >> Operadores compuestos: Incremento/decremento de variables: ++, -Asignacin y operacin: +=, -=, *=, /=, &=, |= Estructuras de control Condicionales: if, if...else, switch case Bucles: for, while, do... while Bifurcaciones y saltos: break, continue, return, goto Variables En cuanto al tratamiento de las variables tambin comparte un gran parecido con el lenguaje C.
Constantes

http://es.wikipedia.org/wiki/Arduino

HIGH / LOW: niveles alto y bajo en pines. Los niveles altos son aquellos de 3 voltios o ms. INPUT / OUTPUT: entrada o salida true / false
Tipos de datos

void, boolean, char, unsigned char, byte, int, unsigned int, word, long, unsigned long, oat, double, string, array
Conversin entre tipos

Estas funciones reciben como argumento una variable de cualquier tipo y devuelven una variable convertida en el tipo deseado. char(), byte(), int(), word(), long(), oat()
Cualicadores y mbito de las variables

static, volatile, const


Utilidades

sizeof() Funciones Bsicas En cuanto a las funciones bsicas del lenguaje nos encontramos con las siguientes:
E/S Digital

pinMode(pin, modo) digitalWrite(pin, valor) int digitalRead(pin)


E/S Analgica

analogReference(tipo) int analogRead(pin) analogWrite(pin, valor)


E/S Avanzada

shiftOut(dataPin, clockPin, bitOrder, valor) unsigned long pulseIn(pin, valor)


Tiempo

unsigned long millis() unsigned long micros() delay(ms) delayMicroseconds(microsegundos)


Matemticas

min(x, y), max(x, y), abs(x), constrain(x, a, b), map(valor, fromLow, fromHigh, toLow, toHigh), pow(base, exponente), sqrt(x)
Trigonometra

5 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre


sin(rad), cos(rad), tan(rad)
Nmeros aleatorios

http://es.wikipedia.org/wiki/Arduino

randomSeed(semilla), long random(mx), long random(mn, mx)


Bits y Bytes

lowByte(), highByte(), bitRead(), bitWrite(), bitSet(), bitClear(), bit()


Interrupciones externas

attachInterrupt(interrupcin, funcin, modo) detachInterrupt(interrupcin)


Interrupciones

interrupts(), noInterrupts()
Comunicacin por puerto serie

Las funciones de manejo del puerto serie deben ir precedidas de "Serial." aunque no necesitan ninguna declaracin en la cabecera del 9 programa. Por esto se consideran funciones base del lenguaje. begin(), available(), read(), ush(), print(), println(), write() Manipulacin de puertos Los registros de puertos permiten la manipulacin a mas bajo nivel y de forma mas rpida de los pines de E/S del microcontrolador de las placas Arduino.10 Los pines de las placas Arduino estn repartidos entre los registros B(0-7), C (analgicos) y D(8-13). Mediante las siguientes variables podemos ver y modicar su estado: DDR[B/C/D]: Data Direction Register (o direccin del registro de datos) del puerto B, C D. Sirve para especicar que pines queremos usar como de entrada y cuales de salida. Variable de Lectura/Escritura. PORT[B/C/D]: Data Register (o registro de datos) del puerto B, C D. Variable de Lectura/Escritura. PIN[B/C/D]: Input Pins Register (o registro de pines de entrada) del puerto B, C D. Variable de slo lectura. Por ejemplo, para especicar que queremos utilizar los pines 1 a 7 como salidas y el 0 como entrada, bastara utilizar la siguiente asignacin:
DDRD = B11111110;

Como se ha podido comprobar, si conocemos el lenguaje C, no tendremos dicultades para programar en Arduino puesto que se parecen enormemente. Tan slo debemos aprender algunas funciones especcas de que dispone el lenguaje para manejar los diferentes parmetros de Arduino. Se pueden construir aplicaciones de cierta complejidad sin necesidad de muchos conceptos previos.

A.V.R. Libc
Los programas compilados con Arduino se enlazan contra AVR Libc8 por lo que tienen acceso a algunas de sus funciones. AVR Libc es un proyecto de software libre con el objetivo de proporcionar una biblioteca C de alta calidad para utilizarse con el compilador GCC sobre microcontroladores Atmel AVR. Se compone de 3 partes: avr-binutils avr-gcc and avr-libc La mayora del lenguaje de programacin Arduino est escrita con constantes y funciones de AVR y ciertas funcionalidades slo se 11 pueden obtener haciendo uso de AVR. Interrupciones Para desactivar las interrupciones:
cli(); // desactiva las interrupciones globales

Para activarlas:
sei(); // activa las interrupciones

Esto afectar al temporizador y a la comunicacin serie. La funcin delayMicroseconds() desactiva las interrupciones cuando se ejecuta.

6 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre


Temporizadores

http://es.wikipedia.org/wiki/Arduino

La funcin delayMicroseconds() crea el menor retardo posible del lenguaje Arduino que ronda los 2s. Para retardos mas pequeos se debe utilizar la llamada de ensamblador 'nop' (no operacin). Cada sentencia 'nop' se ejecutar en un ciclo de mquina (16 Mhz): unos 62.5ns. Se hara de la siguiente manera:
__asm__("nop\n\t");

Manipulacin de puertos La manipulacin de puertos con cdigo AVR es mas rpida que utilizar la funcin digitalWrite() de Arduino. Establecer Bits en variables cbi y sbi son mecanismos estndar (AVR) para establecer o limpiar bits en PORT y otras variables. Ser necesario utilizar las siguientes cabeceras para poder utilizarlos:
# # # # # # ifndef define endif ifndef define endif cbi cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) sbi sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

Para utilizarlas hay que pasarles como argumento la variable PORT y un pin para establecerlo o limpiarlo. Gracias a estos pequeos hacks tendremos la posibilidad de mejorar los tiempos de ejecucin de ciertas tareas crticas o de aquellas que se repitan muchas veces obteniendo mejores resultados. No obstante el cdigo fuente que escribamos resultar probablemente menos legible si los utilizamos por lo que habr que sopesarlo en funcin de nuestras necesidades.

Diferencias con Processing


La sintaxis del lenguaje de programacin Arduino es una versin simplicada de C/C++ y tiene algunas diferencias respecto de 12 13 Ya desde el punto de que Arduino esta basado en C/C++ mientras que Processing se basa en Java. En cuanto a la sintaxis Processing. de ambos lenguajes y el modo en que se programan existen tambin varias diferencias: Arrays
Arduino int bar[8]; bar[0] = 1; Processing int[] bar = new int[8]; bar[0] = 1;

int foo[] = { 0, 1, 2 }; int foo[] = { 0, 1, 2 }; o bien int[] foo = { 0, 1, 2 };

Bucles
Arduino Processing

int i; for (int i = 0; i < 5; i++) {... } for (i = 0; i < 5; i++) {... }

Impresin de cadenas
Arduino int i = 5; Serial.println(i); int i = 5; Serial.print("i = "); Serial.print(i); Serial.println(); Processing int i = 5; println(i); int i = 5; println("i = " + i);

Serial.println("hello world"); println("hello world");

Las diferencias son escasas por lo que alguien que conozca bien Processing tendr muy pocos problemas a la hora de programar en Arduino.

Primer contacto: Hola Mundo en Arduino

7 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre

http://es.wikipedia.org/wiki/Arduino

El primer paso antes de comprobar que la instalacin es correcta y empezar a trabajar con Arduino es abrir algunos ejemplos prcticos que vienen disponibles con el dispositivo. Es recomendable abrir el ejemplo led_blink que encontraremos en el men File, Sketchbook, Examples, led_blink. Este cdigo crea una intermitencia por segundo en un led conectado en el pin 13. Es cuestin de comprobar que el cdigo es correcto, para eso, presionamos el botn que es un tringulo (en forma de "play") y seguidamente haremos un "upload" (que es la echa hacia la derecha) para cargar el programa a la placa. Si el led empieza a parpadear, todo estar correcto. Veamos el cdigo necesario para conseguirlo:
# define LED_PIN 13 void setup () { // Activamos el pin 13 para salida digital pinMode (LED_PIN, OUTPUT); } // Bucle infinito void loop () { // Encendemos el led enviando una seal alta digitalWrite (LED_PIN, HIGH); // Esperamos un segundo (1000 ms) delay (1000); // Apagamos el led enviando una seal baja digitalWrite (LED_PIN, LOW); // Esperamos un segundo (1000 ms) delay (1000); }

El orden de ejecucin ser: Primero se hace una llamada a la funcin init() que inicializa el programa, despus se ejecuta la funcin setup() que congura diversos parmetros, y por ltimo se ejecuta un bucle while(1) que llama repetidamente a la funcin loop. Todo ello se ejecuta dentro de main() y podra haberse indicado explcitamente (en el caso anterior se encarga el IDE de aadir el cdigo que se ha omitido).

Bibliotecas en Arduino
Para hacer uso de una biblioteca en Sketch (el IDE de Arduino), basta con hacer clic sobre Import Library en el men, escoger una 14 biblioteca y se aadir el #include correspondiente. Las bibliotecas estndar que ofrece Arduino son las siguientes:

Serial
Lectura y escritura por el puerto serie.

EEPROM
Lectura y escritura en el almacenamiento permanente. read(), write()
15

Ethernet
Conexin a Internet mediante Arduino Ethernet Shield. Puede funcionar como servidor que acepta peticiones remotas o como cliente. 16 Se permiten hasta cuatro conexiones simultaneas. Servidor: Server(), begin(), available(), write(), print(), println() Cliente: Client(), connected(), connect(), write(), print(), println(), available(), read(), ush(), stop()

Firmata
Comuncacin con aplicaciones de ordenador utilizando el protocolo estndar del puerto serie.
17

LiquidCrystal
Control de LCDs con chipset Hitachi HD44780 o compatibles.18 La biblioteca soporta los modos de 4 y 8 bits.

Servo
Control de servo motores.19 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. attach(), write(), writeMicroseconds(), read(), attached(), detach() El manejo de la biblioteca es bastante sencillo. Mediante attach(nmero de pin) aadimos un servo y mediante write podemos indicar los grados que queremos que tenga el motor (habitualmente de 0 a 180).

SoftwareSerial
Comunicacin serie en pines digitales.20 Por defecto Arduino incluye comunicacin slo en los pines 0 y 1 pero gracias a esta biblioteca podemos realizar esta comunicacin con el resto de pines.

8 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre


Stepper
Control de motores paso a paso unipolares o bipolares.21 Stepper(steps, pin1, pin2), Stepper(steps, pin1, pin2, pin3, pin4), setSpeed(rpm), step(steps)

http://es.wikipedia.org/wiki/Arduino

El manejo es sencillo. Basta con iniciar el motor mediante Stepper indicando los pasos que tiene y los pines a los que esta asociado. Se indica la velocidad a la que queramos que gire en revoluciones por minuto con setSpeed(rpm) y se indican los pasos que queremos que avance con step(pasos).

Wire
Envi y recepcin de datos sobre una red de dispositivos o sensores mediante Two Wire Interface (TWI/I2C).
22

Adems las bibliotecas Matrix y Sprite de Wiring son totalmente compatibles con Arduino y sirven para manejo de matrices de leds. Tambin se ofrece informacin sobre diversas bibliotecas desarrolladas por contribuidores diversos que permiten realizar muchas tareas.

Creacin de bibliotecas
Adems de las bibliotecas base, las que son compatibles y las que han aportado otras personas tenemos la posibilidad de escribir nuestra 23 propia biblioteca. Esto es muy interesante por varias razones: permite disponer de cdigo que reutilizar en otros proyectos de forma cmoda; nos permite mantener el cdigo fuente principal separado de las bibliotecas de forma que sean mantenibles de forma separada; y es mas organizado y elegante. Veamos un ejemplo de la creacin de una biblioteca que enva cdigo Morse: Creamos el chero Morse.h que incluye la denicin de la clase Morse que tiene 3 funciones: un constructor (Morse()), una funcin para enviar 1 punto (dot()) y una funcin para enviar una raya (dash()). La variable _pin permite indicar el pin que vamos a utilizar.
/* Morse.h - Library for flashing Morse code. Created by David A. Mellis, November 2, 2007. Released into the public domain. */ # ifndef Morse_h # define Morse_h # include "WProgram.h" class Morse { public: Morse(int pin); void dot(); void dash(); private: int _pin; }; # endif

Adems necesitaremos un chero Morse.cpp con el cdigo de las funciones declaradas. A continuacin se muestra el cdigo:
/* Morse.cpp - Library for flashing Morse code. Created by David A. Mellis, November 2, 2007. Released into the public domain. */ # include "WProgram.h" # include "Morse.h" Morse::Morse(int pin) { pinMode(pin, OUTPUT); _pin = pin; } void Morse::dot() { digitalWrite(_pin, HIGH); delay(250); digitalWrite(_pin, LOW); delay(250); } void Morse::dash() { digitalWrite(_pin, HIGH); delay(1000); digitalWrite(_pin, LOW); delay(250); }

Y con esto ya podramos utilizar la biblioteca mediante el correspondietne #include. Si quisieramos enviar un SOS por el pin 13 bastara

9 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre


con llamar a Morse(13) y ejecutar
morse.dot(); morse.dot(); morse.dot(); morse.dash(); morse.dash(); morse.dash(); morse.dot(); morse.dot(); morse.dot();

http://es.wikipedia.org/wiki/Arduino

Instalacin
Windows
Para la instalacin de la placa Arduino en el sistema operativo Windows conviene seguir los siguientes pasos: Con la placa desconectada: Descargar e instalar el Java Runtime Enviroment (J2RE). Descargar la ltima versin del IDE Arduino. Nota: Es recomendable descomprimir el chero en el directorio raz (c:\) manteniendo la estructura original. Entre todas las carpetas creadas en el directorio Arduino conviene destacar las siguientes:
c:\arduino-0012\hardware\bootloader:

sta contiene el software necesario para cargar el rmware en el chip Atmega168, para trabajar con Arduino. Slo se utiliza si os habis montado vosotros mismos la placa, o en el caso que se haya estropeado el chip y hayis comprado uno nuevo.
c:\arduino-0012\drivers:

Contiene los drivers necesarios para el funcionamiento de la placa Arduino con el PC con S.O. Windows: FTDI USB Drivers. Instalar FTDI USB Drivers Ahora s, conectar la placa USB. Se abrir automticamente el asistente de Windows para nuevo hardware encontrado:
Interfaz del entorno de desarrollo Arduino S.O. Windows.

1. Seleccionar "No por el momento" y presionar "Siguiente". 2. Seleccionar "Instalar desde una lista o ubicacin especca (avanzado)" y presionar "Siguiente". 3. "Buscar el controlador ms adecuado en estas ubicaciones" presiona "Examinar".Seleccionar la carpeta donde hayas descomprimido el driver y presiona Siguiente. Si no habido ningn problema el driver de la placa estar instalado. Abrir el IDE Arduino Ejecutamos el chero Arduino.exe para abrir la intercie. Aqu conguramos el puerto USB donde tenemos conectada la placa para empezar a trabajar.

GNU/Linux
Para instalar Arduino en un sistema GNU/Linux necesitamos los siguientes programas para resolver las dependencias: Sun java runtime, jre. avr-gcc, compilador para la familia de microcontroladores avr de atmel. avr-libc, libc del compilador avr-gcc. Para instalarlos, podemos utilizar el gestor de paquetes o el terminal de comandos:
apt-get install sun-java5-jre gcc-avr avr-libc

En algunas distribuciones conviene desinstalar, si no es necesario, el programa "brltty". ste se encarga de permitir el acceso al terminal para personas ciegas a travs de un dispositivo especial en braille.
killall brltty

apt-get remove brltty

Los dos sntomas de este problema son:

10 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre


No aparece la opcin /dev/tty/USB0 en el men Tools, Serial Port. Si se observa el LED Rx de la placa Arduino, ste se ilumina de 3 a 5 veces cada 5 6 segundos. Por ltimo, descargamos el framework de arduino. Lo descomprimimos en la carpeta deseada y lo ejecutamos:
./arduino

http://es.wikipedia.org/wiki/Arduino

Si todo ha ido bien ya lo tendremos en funcionamiento.

Aplicaciones
Las aplicaciones que nos ofrece Arduino son mltiples, y depender de nuestra imaginacin. Mediante sensores podemos crear aplicaciones sencillas enfocadas a la docencia para estudiantes de electrnica, proyectos ms elaborados para la industria o incluso sistemas dirigidos simplemente al ocio. Es muy utilizado tambin en los entornos artsticos para crear obras ms elaboradas, dada su facilidad de programacin.

Equipo de desarrollo
El ncleo del equipo de desarrollo de Arduino esta formado por Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis y Nicholas Zambetti.
Interfaz del entorno de desarrollo Arduino S.O. GNU/Linux.

Pduino
Pduino nace de la fusin de Pure Data y Arduino. Ambos de Open Source permiten trabajar el uno del otro de una manera grca e intuitiva. Cargando el rmware de Pure Data (PD) a la placa Arduino podemos acceder a ella mediante el lenguaje de programacin grco. Se puede observar que tenemos todo el esquema fsico de la placa, con los puertos, pines digitales y analgicos, entradas y salidas... en una interfaz grca, gracias a PD.

Minibloq
Minibloq es un entorno grco de programacin que puede generar cdigo nativo de Arduino y escribirlo directamente en la memoria ash de la placa. No necesita por lo tanto, ni de un rmware especco en la placa Arduino ni de conexin en tiempo de ejecucin. Tiene un modo donde permite visualizar el cdigo generado, el cual tambin puede ser copiado y pegado en el Arduino-IDE, para los usuarios que intentan hacer el pasaje de una herramienta grca a la programacin en sintaxis C/C++. Minibloq es de uso libre y sus fuentes tambin estn disponibles gratuitamente. Una caracterstica importante, es que puede correr tambin en la XO (OLPC), mediante Wine.

Vase tambin
BASIC Stamp OOPIC PICAXE Gumstix Minibloq

Patch Pduino.

Referencias
1. Interview with Casey Reas and Ben Fry (http://rhizome.org/editorial/2009/sep/23/interviewwith-casey-reas-and-ben-fry/) . 2. [1] (http://wiring.org.co/) 3. a b Project homepage (http://arduino.cc) . 4. http://www.aec.at/en/prix/honorary2006.asp 5. Ars Electronica Archiv (http://90.146.8.18/de/archives/prix_archive /prix_year_cat.asp?iProjectID=13638&iCategoryID=12420) (en alemn). Consultado el 18-02-2009. 6. Ars Electronica Archiv / ANERKENNUNG (http://90.146.8.18/de/archives/prix_archive /prix_projekt.asp?iProjectID=13789#) (en alemn). Consultado el 18-02-2009. 7. "Interfacing Arduino to other languages", Proyecto Arduino. http://www.arduino.cc /playground/Main/InterfacingWithSoftware 8. a b "Language Reference (extended)", Proyecto Arduino. http://arduino.cc/en/Reference /Extended 9. "Serial", Proyecto Arduino. http://arduino.cc/en/Reference/Serial 10. "Manipulacin de puertos", Proyecto Arduino. http://arduino.cc/en/Reference /PortManipulation 11. "AVR Code", Proyecto Arduino. http://www.arduino.cc/playground/Main/AVR 12. "Arduino/Processing Language Comparison", Proyecto Arduino. http://arduino.cc
Minibloq screenshoot.

11 de 12

19/08/11 18:41

Arduino - Wikipedia, la enciclopedia libre


/en/Reference/Comparison?from=Main.ComparisonProcessing "Processing Reference", Proyecto Processing. http://processing.org/reference/ http://arduino.cc/en/Reference/Libraries "EEPROM Library", Proyecto Arduino. http://arduino.cc/en/Reference/EEPROM "Ethernet Library", Proyecto Arduino. http://arduino.cc/en/Reference/Ethernet "Firmata Library", Proyecto Arduino. http://arduino.cc/en/Reference/Firmata "LiquidCrystal Library", Proyecto Arduino. http://arduino.cc/en/Reference/LiquidCrystal "Servo Library", Proyecto Arduino. http://arduino.cc/en/Reference/Servo "SoftwareSerial Library", Proyecto Arduino. http://arduino.cc/en/Reference/SoftwareSerial "Stepper Library", Proyecto Arduino. http://arduino.cc/en/Reference/Stepper "Wire Library", Proyecto Arduino. http://arduino.cc/en/Reference/Wire "Writing a Library for Arduino", Proyecto Arduino. http://arduino.cc/en/Hacking /LibraryTutorial

http://es.wikipedia.org/wiki/Arduino

13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.

Bibliografa

Minibloq + OLPC + Arduino.

Oxer, Jonathan; Blemings, Hugh (28 de diciembre de 2009). Practical Arduino: Cool Projects for Open Source Hardware (http://www.apress.com/book/view/9781430224778) (1 edicin). Apress. pp. 500. ISBN 1430224770. http://www.apress.com/book/view/9781430224778. Noble, Joshua (15 de julio de 2009). Programming Interactivity: A Designer's Guide to Processing, Arduino, and openFramework (http://oreilly.com/catalog/9780596800581/) (1 edicin). O'Reilly Media. pp. 768. ISBN 0596154143. http://oreilly.com/catalog /9780596800581/. Banzi, Massimo (24 de marzo de 2009). Getting Started with Arduino (http://www.makershed.com /ProductDetails.asp?ProductCode=9780596155513) (1 edicin). Make Books. pp. 128. ISBN 0596155514. http://www.makershed.com /ProductDetails.asp?ProductCode=9780596155513.

Enlaces de externos
Sitio web Proyecto Arduino (http://www.arduino.cc/) (en ingls) Sitio web Proyecto Arduino (http://www.arduino.cc/es) (en espaol con menos contenidos) Algunos proyectos con arduino paso a paso (http://www.bricogeek.com) (ejemplos con videotutoriales) DuinOS (http://robotgroup.com.ar/duinos/wiki) : Sistema operativo multitarea para Arduino desarrollado por RobotGroup (http://robotgroup.com.ar) Recopilacin de proyectos Arduino para hacer en casa (http://www.bioelectricidad.es/arduino/5/arduino/) (Web en castellano) Entorno grco de programacin para Arduino (http://minibloq.org) Winkhel: cmo un proyecto Arduino puede convertirse en un producto real (http://www.winkhel.com) (en espaol) Obtenido de http://es.wikipedia.org/wiki/Arduino Categoras: Hardware libre | Microcontroladores Esta pgina fue modicada por ltima vez el 13 ago 2011, a las 08:49. El texto est disponible bajo la Licencia Creative Commons Atribucin Compartir Igual 3.0; podran ser aplicables clusulas adicionales. Lee los trminos de uso para ms informacin.

12 de 12

19/08/11 18:41

Potrebbero piacerti anche