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, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.1 2
Arduino Software
El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida.3 Los microcontroladores más usados son el Atmega168, Atmega328, Atmega1280, ATmega8 ATmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque (boot loader ) que corre en la placa.3 Arduino se puede utilizar para desarrollar objetos interactivos autónomos 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 diseño como su distribución 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 mención honorífica en la categoría de Comunidades Digital en el Prix Ars Electronica de 2006.4 5 6
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 (autónoma) 1.9 Lily-Pad (Pequeña placa SMD) 2 Esquema de pines 2.1 Entradas y salidas 2.2 Esquema y pines 3 Especificaciones 4 Lenguaje de programación Arduino 4.1 Funciones básicas y operadores 4.1.1 Sintaxis Básica 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 Conversión entre tipos 4.1.3.4 Cualificadores y ámbito de las variables 4.1.3.5 Utilidades 4.1.4 Funciones Básicas 4.1.4.1 E/S Digital 4.1.4.2 E/S Analógica 4.1.4.3 E/S Avanzada 4.1.4.4 Tiempo 4.1.4.5 Matemáticas 4.1.4.6 Trigonometría 4.1.4.7 Números aleatorios 4.1.4.8 Bits y Bytes 4.1.4.9 Interrupciones externas 4.1.4.10 Interrupciones 4.1.4.11 Comunicación por puerto serie 4.1.5 Manipulación de puertos 4.2 A.V.R. Libc 4.2.1 Interrupciones 4.2.2 Temporizadores 4.2.3 Manipulación de puertos
1 de 12
Información general Última versión 0022 24 de diciembre de 2010 estable Entorno de desarrollo Género integrado Programado en Java Multiplataforma Sistema operativo LGPL o GPL Licencia ? En español
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 Creación de bibliotecas 6 Instalación 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 Véase también 12 Referencias 13 Bibliografía 14 Enlaces de externos
Modelos de placas Arduino La versión original de Arduino está manufacturada por Smart Projects (http://www.smartprojects.it/) . Existen diferentes versiones comerciales de Arduino con propósitos distintos.
Placa Arduino Diecimila.
Arduino Flash Pines ...con Pines Microcontrolador EEPROM SRAM Interfaz Dimensiones Dimens (http://arduino.cc KiB digitales PWM analógicos KiB KiB USB pulgadas mm /en/Main/Hardware) Diecimila (http://arduino.cc 68. /en/Main ATmega168 16 0.5 1 14 6 6 FTDI 2.7" x 2.1" 53 /ArduinoBoardDiecimila) Duemilanove 68. (http://arduino.cc/en/Main ATmega168/328P 16/32 0.5/1 1/2 14 6 6 FTDI 2.7" x 2.1" 53 /ArduinoBoardDuemilanove) Uno (http://arduino.cc 68. ATmega328P 32 1 2 14 6 6 ATmega8U2 2.7" x 2.1" /en/Main/ArduinoBoardUno) 53 Mega (http://arduino.cc 101. /en/Main ATmega1280 128 4 8 54 14 16 FTDI 4" x 2.1" 53 /ArduinoBoardMega) Mega2560 101. (http://arduino.cc/en/Main ATmega2560 256 4 8 54 14 16 ATmega8U2 4" x 2.1" 53 /ArduinoBoardMega2560) Fio (http://arduino.cc 40. ATmega328P 32 1 2 14 6 8 None 1.6" x 1.1" /en/Main/ArduinoBoardFio) 2 Nano (http://arduino.cc ATmega168 or 4 /en/Main 16/32 0.5/1 1/2 14 6 8 FTDI 1.70" x 0.73" ATmega328 /ArduinoBoardNano) LilyPad (http://arduino.cc ATmega168V or /en/Main 16 0.5 1 14 6 6 None 2" ø 5 ATmega328V /ArduinoBoardLilyPad)
2 de 12
19/08/11 18:41
Arduino - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Arduino
Placa serie Es la placa básica, 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 versión Diecimila de Arduino tiene conexión USB y hace innecesario pulsar el botón Reset de la placa cada vez que se carga un nuevo programa, por lo que es mucho más cómoda 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 portátiles de ahora) más 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 diseño base de Arduino. Incorpora una matriz de agujeros en la que se puede añadir nuestro hardware adicional. No dispone de puer to serie ni USB, por ese motivo es necesario disponer de otro programador que utilice ICSP.
Bluetooth Es la última versión en la que se está tr abajando. 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 estándar XBee para comunicarse con otras Ar duino XBee
ArCan Este shield dota a Arduino con la capacidad de intercomunicarse via Bus CAN.
Stand-alone (autónoma) Lily-Pad (Pequeña placa SMD)
Esquema de pines Entradas y salidas Consta de 14 entradas digitales configurables entrada i/o salidas que operan a 5 voltios. Cada pin puede proporcionar o re cibir como máximo 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 comunicación USB. Diecimila también tiene 6 entradas analógicas que proporcionan una resolución de 10 bits. Por defecto miden de 0 voltios (masa) hasta 5 voltios, aunque es posible cambiar el nivel más alto, utilizando el pin Aref y algún código 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 analógica (naranja) Señal de tierra digital (verde claro) Pines digitales 2-13 (verde) Pines digitales 0-1 / entrada y salida del puerto serie: TX/RX (azul) (estándar de comunicación serie IC2) Botón de reset (negro) Entrada del circuito del programador serie (marrón) Pines de entrada analógica 0-5 (azul oscuro) Pines de alimentación y tierra (naranja y naranja claro) Entrada de la fuente de alimentación externa (9-12V DC) – X1 (gris) Conmutación entre fuente de alimentación externa o alimentación a través del puerto USB – SV1 Puerto USB (rojo).
Esquema de pines.
Especificaciones Los microcontroladores Arduino Diecimila, Arduino Duemilanove y Arduino Mega están 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 5V Voltaje de entrada 7-12 V recomendado Voltaje de entrada límite 6-20 V Pines de entrada y salida 14 (6 proporcionan PWM) digital Pines de entrada analógica 6 Intensidad de corriente 40 mA 16KB (2KB reservados para el Memoria Flash bootloader) SRAM 1 KB EEPROM 512 bytes Frecuencia de reloj 16 MHz
Atmega328
5V
Atmega1280
5V 7-12 V
6-20 V
7-12 V
6-20 V
14 (6 proporcionan PWM)
54 (14 proporcionan PWM)
6 40 mA 32KB (2KB reservados para el bootloader) 2 KB 1 KB 16 MHz
16 40 mA 128KB (4KB reservados para el bootloader) 8 KB 4 KB 16 MHz
Lenguaje de programación Arduino La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el popular lenguaje de programación de alto nivel Processing. Sin embargo, es posible utilizar otros lenguajes de programación y aplicaciones populares en Arduino.7 Algunos ejemplos son: Java Flash (mediante ActionScript) Processing Pure Data MaxMSP (entorno gráfico de programación para aplicaciones musicales, de audio y multimedia) VVVV (síntesis de vídeo 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 (síntesis de audio en tiempo real) Instant Reality (X3D) Liberlab (software de medición y experimentación) BlitzMax (con acceso restringido) Squeak (implementación libre de Smalltalk) Mathematica Matlab Minibloq (Entorno gráfico de programación, corre también en OLPC) Isadora (Interactividad audiovisual en tiempo real) PERL Visual Basic .NET VBScript Esto es posible debido a que Arduino se comunica mediante la transmisión de datos en formato serie que es algo que la mayoría de los lenguajes anteriormente citados soportan. Para los que no soportan el formato ser ie de forma nativa, es posible utilizar s oftware intermediario que traduzca los mensajes enviados por ambas partes para permitir una comunicación fluida. 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 comunicación que ofrece.
Funciones básicas y operadores Arduino esta basado en C y soporta todas las funciones del estándar C y algunas de C++.8 A continuación se muestra un resumen con todas la estructura del lenguaje Arduino: Sintaxis Básica
Delimitadores: ;, {} Comentarios: //, /* */ Cabeceras: #define, #include Operadores aritméticos: +, -, *, /, % Asignación: = Operadores de comparación: ==, !=, <, >, <=, >= Operadores Booleanos: &&, ||, ! Operadores de acceso a punteros: *, &
4 de 12
19/08/11 18:41
Arduino - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Arduino
Operadores de bits: &, |, ^, ~, <<, >> Operadores compuestos: Incremento/decremento de variables: ++, - Asignación y operación: +=, -=, *=, /=, &=, |= 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 también comparte un gran parecido con el lenguaje C. Constantes
HIGH / LOW: niveles alto y bajo en pines. Los niveles altos s on aquellos de 3 voltios o más. INPUT / OUTPUT: entrada o salida true / false Tipos de datos
void, boolean, char, unsigned char, byte, int, unsigned int, word, long, unsigned long, float, double, string, array Conversión 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(), float() Cualificadores y ámbito de las variables
static, volatile, const Utilidades
sizeof() Funciones Básicas
En cuanto a las funciones básicas del lenguaje nos e ncontramos con las siguientes: E/S Digital
pinMode(pin, modo) digitalWrite(pin, valor) int digitalRead(pin) E/S Analógica
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) Matemáticas
min(x, y), max(x, y), abs(x), constrain(x, a, b), map(valor, fromLow, fromHigh, toLow, toHigh), pow(base, exponente), sqrt(x) Trigonometría
5 de 12
19/08/11 18:41
Arduino - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Arduino
sin(rad), cos(rad), tan(rad) Números aleatorios
randomSeed(semilla), long random(máx), long random(mín, máx) Bits y Bytes
lowByte(), highByte(), bitRead(), bitWrite(), bitSet(), bitClear(), bit() Interrupciones externas
attachInterrupt(interrupción, función, modo) detachInterrupt(interrupción) Interrupciones
interrupts(), noInterrupts() Comunicación por puerto serie
Las funciones de manejo del puerto ser ie deben ir precedidas de "Serial." aunque no necesitan ninguna declaración en la cabecera del programa. Por esto se consideran funciones base del lenguaje.9 begin(), available(), read(), flush(), print(), println(), write() Manipulación de puertos
Los registros de puertos permiten la manipulación a mas bajo nivel y de forma mas rápida de los pines de E/S del microcontrolador de las placas Arduino.10 Los pines de las placas Arduino están repartidos entre los registros B(0-7), C (analógicos) y D(8-13). Mediante las siguientes variables podemos ver y modificar su estado: DDR[B/C/D]: Data Direction Register (o dirección del re gistro de datos) del puerto B, C ó D. Sirve para especificar 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 sólo lectura. Por ejemplo, para especificar que queremos utilizar los pines 1 a 7 como salidas y el 0 como entrada, bastaría utilizar la siguiente asignación: DDRD = B11111110;
Como se ha podido comprobar, si conocemos el lenguaje C, no tendremos dificultades para programar en Arduino puesto que se parecen enormemente. Tan sólo debemos aprender algunas funciones específicas de que dispone el lenguaje para manejar los diferentes parámetros 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 mayoría del lenguaje de programación Arduino está escrita con constantes y funciones de AVR y ciertas funcionalidades sólo se pueden obtener haciendo uso de AVR.11 Interrupciones
Para desactivar las interrupciones: cli(); // desactiva las interrupciones globales
Para activarlas: sei(); // activa las interrupciones
Esto afectará al temporizador y a la comunicación serie. La función delayMicroseconds() desactiva las interrupciones cuando se ejecuta.
6 de 12
19/08/11 18:41
Arduino - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Arduino
Temporizadores
La función delayMicroseconds() crea el menor retardo posible del lenguaje Arduino que ronda los 2μs. Para retardos mas pequeños se debe utilizar la llamada de ensamblador 'nop' (no operación). Cada sentencia 'nop' se ejecutará en un ciclo de máquina (16 Mhz): unos 62.5ns. Se haría de la siguiente manera: __asm__("nop\n\t");
Manipulación de puertos
La manipulación de puertos con código AVR es mas rápida que utilizar la función digitalWrite() de Arduino. Establecer Bits en variables
cbi y sbi son mecanismos estándar (AVR) para establecer o l impiar 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 pequeños hacks tendremos la posibilidad de mejorar los tiempos de ejecución de ciertas tareas críticas o de aquellas que se repitan muchas veces obteniendo mejores resultados. No obstante el código fuente que escribamos resultará probablemente menos legible si los utilizamos por lo que habrá que sopesarlo en función de nuestras necesidades.
Diferencias con Processing La sintaxis del lenguaje de programación Arduino es una versión simplificada de C/C++ y tiene algunas diferencias respecto de Processing.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 de ambos lenguajes y el modo en que se programan existen también 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++) {... }
Impresión de cadenas Arduino Serial.println("hello world"); int i = 5; Serial.println(i); int i = 5; Serial.print("i = "); Serial.print(i); Serial.println();
Processing println("hello world"); int i = 5; println(i);
int i = 5; println("i = " + i);
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 instalación es correcta y empezar a trabajar con Arduino es abrir algunos ejemplos prácticos que vienen disponibles con el dispositivo. Es recomendable abrir el ejemplo “led_blink” que encontraremos en el menú File, Sketchbook, Examples, led_blink. Este código crea una intermitencia por segundo en un led conectado en el pin 13. Es cuestión de comprobar que el código es correcto, para eso, presionamos el botón que es un tr iángulo (en forma de "play") y seguidamente haremos un "upload" (que es la flecha hacia la derecha) para cargar el programa a la placa. Si el led empieza a parpadear, todo estará correcto. Veamos el código 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 señal alta digitalWrite (LED_PIN, HIGH); // Esperamos un segundo (1000 ms) delay (1000); // Apagamos el led enviando una señal baja digitalWrite (LED_PIN, LOW); // Esperamos un segundo (1000 ms) delay (1000); }
El orden de ejecución será: Primero se hace una llamada a la función init() que inicializa el programa, después se ejecuta la función setup() que configura diversos parámetros, y por último se ejecuta un bucle while(1) que llama repetidamente a la función loop. Todo ello se ejecuta dentro de main() y podría haberse indicado explícitamente (en el caso anterior se encarga el IDE de añadir el código 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 biblioteca y se añadirá el #include correspondiente. Las bibliotecas estándar que ofrece Arduino son las siguientes:14
Serial Lectura y escritura por el puerto serie.
EEPROM Lectura y escritura en el almacenamiento permanente.15 read(), write()
Ethernet Conexión a Internet mediante “Arduino Ethernet Shield“. Puede funcionar como servidor que acepta peticiones remotas o como cliente. Se permiten hasta cuatro conexiones simultaneas.16 Servidor: Server(), begin(), available(), write(), print(), println() Cliente: Client(), connected(), connect(), write(), print(), println(), available(), read(), flush(), stop()
Firmata Comuncación con aplicaciones de ordenador utilizando el protocolo estándar 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 versión 0017 de Arduino la biblioteca soporta hasta 12 motores en la mayoría de placas Arduino y 48 en la Arduino Mega. attach(), write(), writeMicroseconds(), read(), attached(), detach() El manejo de la biblioteca es bastante s encillo. Mediante attach(número de pin) añadimos un servo y mediante write podemos indicar los grados que queremos que tenga el motor (habitualmente de 0 a 180).
SoftwareSerial Comunicación serie en pines digitales.20 Por defecto Arduino incluye comunicación sólo en los pines 0 y 1 pero gracias a esta biblioteca podemos realizar esta comunicación con el resto de pines.
8 de 12
19/08/11 18:41
Arduino - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Arduino
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) 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 quer emos que avance con step(pasos).
Wire Envió y recepción de datos sobre una red de dispositivos o sensores mediante Two Wire Interface (TWI/I2C).22 Además las bibliotecas Matrix y Sprite de Wiring son totalmente compatibles con Arduino y sirven para manejo de matrices de leds. También se ofrece información sobre diversas bibliotecas desarrolladas por contribuidores diversos que permiten realizar muchas tareas.
Creación de bibliotecas Además de las bibliotecas base, las que son compatibles y las que han aportado otras personas tenemos la posibilidad de escribir nuestra propia biblioteca.23 Esto es muy interesante por varias razones: permite disponer de código que reutilizar en otros proyectos de forma cómoda; nos permite mantener el código 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 creación de una biblioteca que envía código Morse: Creamos el fichero Morse.h que incluye la definición de la clase Morse que tiene 3 funciones: un constructor (Morse()), una función para enviar 1 punto (dot()) y una función 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
Además necesitaremos un fichero Morse.cpp con el código de las funciones declaradas. A continuación se muestra el código: /* 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 podríamos utilizar la biblioteca mediante el correspondietne #include. Si quisieramos enviar un SOS por el pin 13 bastaría
9 de 12
19/08/11 18:41
Arduino - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Arduino
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();
Instalación Windows Para la instalación 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 versión del IDE Arduino. Nota: Es recomendable descomprimir el fichero en e l directorio raíz (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 fir mware en el chip Atmega168, para trabajar con Arduino. Sólo se utiliza si os habéis montado vosotros mismos la placa, o en el caso que se haya estropeado el chip y hayáis 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á automáticamente 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 ubicación específica (avanzado)" y presionar "Siguiente". 3. "Buscar el controlador más adecuado en estas ubicaciones" presiona "Examinar".Seleccionar la carpeta donde hayas descomprimido el driver y presiona “Siguiente”. Si no habido ningún problema el driver de la placa estará instalado. Abrir el IDE Arduino
Ejecutamos el fichero Arduino.exe para abrir la interficie. Aquí configuramos 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 través de un dispositivo especial en braille. killall brltty
apt-get remove brltty
Los dos síntomas de este problema son:
10 de 12
19/08/11 18:41
Arduino - Wikipedia, la enciclopedia libre
http://es.wikipedia.org/wiki/Arduino
No aparece la opción /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
Si todo ha ido bien ya lo tendremos en funcionamiento.
Aplicaciones Las aplicaciones que nos ofrece Arduino son múltiples, y dependerá de nuestra imaginación. Mediante sensores podemos crear aplicaciones sencillas enfocadas a la docencia para estudiantes de electrónica, proyectos más elaborados para la industria o incluso sistemas dirigidos simplemente al ocio. Es muy utilizado también en los entornos artísticos para crear obras más elaboradas, dada su facilidad de programación.
Equipo de desarrollo El núcleo 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 fusión de Pure Data y Arduino. Ambos de Open Source permiten trabajar el uno del otro de una manera gráfica e intuitiva. Cargando el firmware de Pure Data (PD) a la placa Arduino podemos acceder a ella mediante el lenguaje de programación gráfico. Se puede observar que tenemos todo el esquema físico de la placa, con los puertos, pines digitales y analógicos, entradas y salidas... en una interfaz gráfica, gracias a PD.
Minibloq Minibloq es un entorno gráfico de programación que puede generar código nativo de Arduino y escribirlo directamente en la memoria flash de la placa. No necesita por lo tanto, ni de un firmware es pecífico en la placa Arduino ni de conexión en tiempo de ejecución. Tiene un modo donde permite visualizar el código generado, el cual también puede ser copiado y pegado en el Arduino-IDE, para los usuarios que intentan hacer el pasaje de una herramienta gráfica a la programación en sintaxis C/C++. Minibloq es de uso libre y sus fuentes también están disponibles gratuitamente. Una característica importante, es que puede correr también en la XO (OLPC), mediante Wine.
Véase también
Patch Pduino.
BASIC Stamp OOPIC PICAXE Gumstix Minibloq
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 alemán). 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 alemán). 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. ↑ "Manipulación 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
11 de 12
Minibloq screenshoot.
19/08/11 18:41
Arduino - Wikipedia, la enciclopedia libre
13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
http://es.wikipedia.org/wiki/Arduino
/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
Bibliografía
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ª edición). 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ª edición). 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ª edición). 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 inglés) Sitio web Proyecto Arduino (http://www.arduino.cc/es) (en español 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) Recopilación de proyectos Arduino para hacer en casa (http://www.bioelectricidad.es/arduino/5/arduino/) (Web en castellano) Entorno gráfico de programación para Arduino (http://minibloq.org) Winkhel: cómo un proyecto Arduino puede convertirse en un producto real (http://www.winkhel.com) (en español) Obtenido de «http://es.wikipedia.org/wiki/Arduino» Categorías: Hardware libre | Microcontroladores Esta página fue modificada por última vez el 13 ago 2011, a las 08:49. El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0; podrían ser aplicables cláusulas adicionales. Lee los términos de uso para más información.
12 de 12
19/08/11 18:41