You are on page 1of 14

Arduino

DeWikipedia,laenciclopedialibre
Arduinoesunaplataformadehardwarelibre,basadaenunaplacaconunmicrocontroladoryun
entorno de desarrollo, diseada para facilitar el uso de la electrnica en proyectos
multidisciplinares.23

Arduino

El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de


entrada/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
lenguajedeprogramacinProcessing/Wiring y el cargadordearranque que es ejecutado en la
placa.4
Desdeoctubrede2012,ArduinoseusatambinconmicrocontroladorasCortexM3deARMde
32bits,5quecoexistirnconlasmslimitadas,perotambineconmicasAVRde8bits.ARMy
AVRnosonplataformascompatiblesanivelbinario,perosepuedenprogramarconelmismo
IDEdeArduinoyhacerseprogramasquecompilensincambiosenlasdosplataformas.Esos,
lasmicrocontroladorasCortexM3usan3,3V,adiferenciadelamayoradelasplacasconAVR
quegeneralmenteusan5V.SinembargoyaanteriormenteselanzaronplacasArduinoconAtmel
AVRa3,3VcomolaArduinoFioyexistencompatiblesdeArduinoNanoyProcomoMeduino
enquesepuedeconmutarelvoltaje.
Arduinosepuedeutilizarparadesarrollarobjetosinteractivosautnomosopuedeserconectado
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.

"ArduinoUno"Revisin3
Tipo

Placacomputadora(microcontroladorde
placasimple)

Pgina
web

www.arduino.cc(http://www.arduino.cc)

[editardatosenWikidata]

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
desarrolloArduino(basadoenProcessing).LosproyectoshechosconArduinopuedenejecutarse
sinnecesidaddeconectarauncomputador.
ElproyectoArduinorecibiunamencinhonorficaenlacategoradeComunidadesDigitalenel
PrixArsElectrnicade2006.678

ndice
1Historia
2Productos
3Aplicaciones
4Esquemadeconexiones
4.1Entradasysalidas
5Especificaciones
6LenguajedeprogramacinArduino
6.1Funcionesbsicasyoperadores
6.1.1Sintaxisbsica
6.1.2Estructurasdecontrol
6.1.3Variables
6.1.3.1Constantes
6.1.3.2Tiposdedatos
6.1.3.3Conversinentretipos
6.1.3.4Cualificadoresymbitodelasvariables
6.1.3.5Utilidades
6.1.4Funcionesbsicas
6.1.4.1E/Sdigital
6.1.4.2E/Sanalgica
6.1.4.3E/Savanzada
6.1.4.4Tiempo
6.1.4.5Matemticas
6.1.4.6Trigonometra
6.1.4.7Nmerosaleatorios
6.1.4.8BitsyBytes
6.1.4.9Interrupcionesexternas
6.1.4.10Interrupciones
6.1.4.11Comunicacinporpuertoserie
6.1.5Manipulacindepuertos
6.2AVRLibc
6.2.1Interrupciones
6.2.2Temporizadores
6.2.3Manipulacindepuertos
6.2.4EstablecerBitsenvariables

PlacaArduinoRS2321

6.3DiferenciasconProcessing
6.3.1Arreglos
6.3.2Impresindecadenas
6.4EjemplosencillodeprogramacinenArduino
7BibliotecasenArduino
7.1Serial
7.2EEPROM
7.3Ethernet
7.4Firmata
7.5LiquidCrystal
7.6Servo
7.7SoftwareSerial
7.8Stepper
7.9Wire
7.10Creacindebibliotecas
7.10.1Ejemplodebiblioteca
8EjemplosdeCdigo
9Instalacinendiferentesentornos
9.1Windows
9.2GNU/Linux
10Equipodedesarrollo
11Pduino
12Minibloq
13PhysicalEtoys
14Vasetambin
15Referencias
16Bibliografa
17Enlacesdeexternos

Historia
Arduinoseinicienelao2005comounproyectoparaestudiantesenelInstitutoIVREA,enIvrea(Italia).Enesetiempo,losestudiantesusabanel
microcontroladorBASIC Stamp, cuyo coste era de 100 dlares estadounidenses, lo que se consideraba demasiado costoso para ellos. Por aquella
poca,unodelosfundadoresdeArduino,MassimoBanzi,dabaclasesenIvrea.9
ElnombredelproyectovienedelnombredelBardiReArduino(BardelReyArduino)dondeMassimoBanzipasabaalgunashoras.Ensucreacin,
contribuyelestudiantecolombianoHernandoBarragn,quiendesarrolllatarjetaelectrnicaWiring,ellenguajedeprogramacinylaplataforma
de desarrollo.10 Una vez concluida dicha plataforma, los investigadores trabajaron para hacerlo ms ligero, ms econmico y disponible para la
comunidaddecdigoabierto(hardwareycdigoabierto).Elinstitutofinalmentecerrsuspuertas,asquelosinvestigadores,entreelloselespaol
DavidCuartielles,promovieronlaidea.9 Banzi afirmara aos ms tarde, que el proyecto nunca surgi como una idea de negocio, sino como una
necesidaddesubsistiranteelinminentecierredelInstitutodediseoInteractivoIVREA.Esdecir,quealcrearunproductodehardwareabierto,ste
nopodraserembargado.
Posteriormente, Google colabor en el desarrollo del Kit Android ADK (Accesory Development Kit), una placa Arduino capaz de comunicarse
directamentecontelfonosmvilesinteligentesbajoelsistemaoperativoAndroidparaqueeltelfonocontroleluces,motoresysensoresconectados
deArduino.1112
Paralaproduccinenseriedelaprimeraversinsetomencuentaqueelcostenofueramayorde30euros,quefueraensambladoenunaplacade
colorazul,debaserPlugandPlayyquetrabajaracontodaslasplataformasinformticastalescomoMacOSX,WindowsyGNU/Linux.Lasprimeras
300unidadesselasdieronalosalumnosdelInstitutoIVRAE,conelfindequelasprobaranyempezaranadisearsusprimerosprototipos.
Enelao2005,seincorporalequipoelprofesorTomIgoe,10quehabatrabajadoencomputacinfsica,despusdequeseenteraradelmismoa
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.EnlaferiaMakerFairde2011sepresentlaprimeraplacaArduino32bitparatrabajartareasmspesadas.13

Productos
LosmodelosenventadeArduinosecategorizanen4diferentesproductos:tablas,escudos,kitsyaccesoriossiendoencadauno:Tablas:
ArduinoUno
ArduinoLeonardo
ArduinoDue
ArduinoYn
ArduinoTre(EnDesarrollo)
ArduinoZero(EnDesarrollo)
ArduinoMicro
ArduinoEsplora
ArduinoMegaADK
ArduinoEthernet
ArduinoMega2560
ArduinoRobot
ArduinoMini
ArduinoNano
LilyPadArduinoSimple
LilyPadArduinoSimpleSnap

LilyPadArduino
LilyPadArduinoUSB
ArduinoProMini
ArduinoFio
ArduinoPro
Escudos:
ArduinoGSMShield
ArduinoEthernetShield
ArduinoWiFiShield
ArduinoWirelessSDShield
ArduinoUSBHostShield
ArduinoMotorShield
ArduinoWirelessProtoShield
ArduinoProtoShield
Kits:
TheArduinoStarterKit
ArduinoMateria101
Accesorios:
TFTLCDScreen
USB/SerialLightAdapter
ArduinoISP
MiniUSB/SerialAdapter

Aplicaciones
ElmduloArduinohasidousadocomobaseendiversasaplicacioneselectrnicas:
Xoscillo:Osciloscopiodecdigoabierto.14
Equipocientficoparainvestigaciones.15
Arduinome:UndispositivocontroladorMIDI.16
OBDuino:uneconmetroqueusaunainterfazdediagnsticoabordoquesehallaenlosautomvilesmodernos.
HumaneReader:dispositivoelectrnicodebajocosteconsalidadesealdeTVquepuedemanejarunabibliotecade5000ttulosenunatarjeta
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:softwareyhardwaredeaeronavesnotripuladas.
ArduinoPhone:untelfonomvilconstruidosobreunmduloArduino.1920
Impresoras3D.

Esquemadeconexiones
Entradasysalidas
PoniendodeejemploalmduloDiecimila,steconstade14entradasdigitalesconfigurablescomoentradasy/osalidasqueoperana5voltios.Cada
contactopuedeproporcionarorecibircomomximo40mA.Loscontactos3,5,6,9,10y11puedenproporcionarunasalidaPWM(PulseWidth
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,
utilizandoelcontactoArefyalgncdigodebajonivel.

Especificaciones
LasespecificacionesdelosdistintosmodelosdeplacasArduinoseresumenenlasiguientetabla:

Modelo

ArduinoDue
Arduino
Leonardo

Microcontrolador

Voltaje Voltaje
Frecuencia Digital Entradas
Memoria
de
del
PWM UART
deReloj
I/O Analgicas
Flash
entrada sistema

AT91SAM3X8E

512V

3,3V

84MHz

54*

12

12

512Kb

Due

NativaUSB

ATmega32U4

712V

5V

16MHz

20*

12

32Kb

Leonardo

NativaUSB

712V

5V

16MHz

14

32Kb

Optiboot

USB
via
ATMega16U2

ArduinoUno
ATmega328
R3

Cargador

Interfazde
Programacin

ATmega328

715V

5V

16MHz

14

32Kb

Optiboot

USBviaFTDI

ArduinoUno
SMD
ATmega328
(descontinuado)

712V

5V

16MHz

14

32Kb

Optiboot

USB
via
ATMega8U2

ArduinoUno
ATmega328
(descontinuado)

712V

5V

16MHz

14

32Kb

Optiboot

USB
via
ATMega8U2

Arduino
Duemilanove ATmega328
(descontinuado)

712V

5V

16MHz

14

32Kb

AtmegaBOOT USBviaFTDI

1,2
5,5V

5V

16MHz

14

32Kb

AtmegaBOOT Serial
Bluetooth

3,3V

8MHz

14

32Kb

Cabecera
AtmegaBOOT compatible
conFTDI

RedBoard

Arduino
Bluetooth
ATmega328
(descontinuado)

ArduinoPro
3.3V/8MHz

ATmega328

3,35
12V

ArduinoPro
5V/16MHz

ATmega328

512V 5V

16MHz

14

32Kb

Cabecera
AtmegaBOOT compatible
conFTDI

EthernetPro
(descontinuado) ATmega328

712V

5V

16MHz

14

32Kb

Cabecera
AtmegaBOOT compatible
conFTDI

ArduinoMega
ATmega2560
2560R3

712V

5V

16MHz

54

16

14

256Kb

STK500v2

USB
via
ATMega16U2

ArduinoMega
2560
ATmega2560
(descontinuado)

712V

5V

16MHz

54

16

14

256Kb

STK500v2

USB
via
ATMega8U2

ArduinoMega
(descontinuado) ATmega1280

712V

5V

16MHz

54

16

14

128Kb

STK500v2

USBviaFTDI

MegaPro3.3V ATmega2560

3,312V 3,3V

8MHz

54

16

14

256Kb

STK500v2

Cabecera
compatible
conFTDI

512V

5V

16MHz

54

16

14

256Kb

STK500v2

Cabecera
compatible
conFTDI

ArduinoMini
04
ATmega328
(descontinuado)

79V

5V

16MHz

14

32Kb

AtmegaBOOT

Cabecera
Serial

ArduinoMini
ATmega328
05

79V

5V

16MHz

14

32Kb

AtmegaBOOT

Cabecera
Serial

ArduinoPro
Mini
3.3V/8MHz

ATmega328

3,35
12V

3,3V

8MHz

14

32Kb

Cabecera
AtmegaBOOT compatible
conFTDI

ArduinoPro
Mini
5V/16MHz

ATmega328

512V 5V

16MHz

14

32Kb

Cabecera
AtmegaBOOT compatible
conFTDI

MegaPro5V

ATmega2560

ArduinoFio

3,3V

8MHz

14

32Kb

Cabecera
compatible
AtmegaBOOT con FTDI o
Inalmbrica
viaXBee1

3,312V 3,3V

8MHz

54

16

14

256Kb

STK500v2

Cabecera
compatible
conFTDI

3,35
12V

ATmega328P

MegaProMini
ATmega2560
3.3V

ProMicro
5V/16MHz

ATmega32U4

512V

5V

16MHz

12

32Kb

DiskLoader

NativaUSB

ProMicro
3.3V/8MHz

ATmega32U4

3,35
12V

3,3V

8MHz

12

32Kb

DiskLoader

NativaUSB

LilyPad
Arduino328
MainBoard

ATmega328

2,7
5,5V

3,3V

8MHz

14

32Kb

Cabecera
AtmegaBOOT compatible
conFTDI

LilyPad
ArduinoSimple ATmega328
Board

2,7
5,5V

3,3V

8MHz

02

32Kb

Cabecera
AtmegaBOOT compatible
conFTDI

Los modelos Arduino Diecimila, Arduino Duemilanove y Arduino Mega estn basados en los microcontroladores ATmega168, ATmega328 y
ATmega1280
ATmega168
Voltajeoperativo

ATmega328

ATmega1280

5V

5V

5V

712V

712V

712V

620V

620V

620V

Contactos de entrada y salida


14(6proporcionanPWM)
digital

14(6proporcionanPWM)

54(14proporcionanPWM)

Contactosdeentradaanalgica 6

16

Intensidaddecorriente

40mA

40mA

40mA

MemoriaFlash

16KB (2KB reservados para el 32KB (2KB reservados para el 128KB (4KB reservados para el
bootloader)
bootloader)
bootloader)

SRAM

1KB

2KB

8KB

EEPROM

512bytes

1KB

4KB

Frecuenciadereloj

16MHz

16MHz

16MHz

Voltaje
de
recomendado

entrada

Voltajedeentradalmite

LenguajedeprogramacinArduino
La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programacin de alto nivel Processing. Sin
embargo,esposibleutilizarotroslenguajesdeprogramacinyaplicacionespopularesenArduino,21debidoaqueArduinousalatransmisinserial
de datos soportada por la mayora de los lenguajes mencionados. Para los que no soportan el formato serie de forma nativa, es posible utilizar
softwareintermediarioquetraduzcalosmensajesenviadosporambaspartesparapermitirunacomunicacinfluida.Algunosejemplosson:
3DVIAVirtools:aplicacionesinteractivasydetiemporeal.
AdobeDirector
BlitzMax(conaccesorestringido)
C
C++(mediantelibSerialoenWindows)
C#
Cocoa/ObjectiveC(paraMacOSX)
Flash(medianteActionScript)
Gambas
Isadora(Interactividadaudiovisualentiemporeal)
InstantReality(X3D)
Java
Liberlab(softwaredemedicinyexperimentacin)
Mathematica
Matlab
MaxMSP:Entornogrficodeprogramacinparaaplicacionesmusicales,deaudioymultimedia

Minibloq:Entornogrficodeprogramacin,corretambinenlascomputadorasOLPC
Perl
Php
PhysicalEtoys:Entornogrficodeprogramacinusadoparaproyectosderobticaeducativa
Processing
PureData
Python
Ruby
ScratchforArduino(S4A):Entornogrficodeprogramacin,modificacindelentornoparaniosScratch,delMIT
Squeak:ImplementacinlibredeSmalltalk
SuperCollider:Sntesisdeaudioentiemporeal
VBScript
VisualBasic.NET
VVVV:Sntesisdevdeoentiemporeal

Funcionesbsicasyoperadores
ArduinoestbasadoenCysoportatodaslasfuncionesdelestndarCyalgunasdeC++.22Acontinuacinsemuestraunresumenconlaestructuray
sintaxisdellenguajeArduino:
Sintaxisbsica
Delimitadores:,{}
Comentarios://,/**/
Cabeceras:#define,#include
Operadoresaritmticos:+,,*,/,%
Asignacin:=
Operadoresdecomparacin:==,!=,<,>,<=,>=
OperadoresBooleanos:&&,||,!
Operadoresdeaccesoapunteros:*,&
Operadoresdebits:&,|,^,~,<<,>>
Operadorescompuestos:
Incrementoydecrementodevariables:++,
Asignacinyoperacin:+=,=,*=,/=,&=,|=
Estructurasdecontrol
Condicionales:if,if...else,switchcase
Bucles:for,while,do...while
Bifurcacionesysaltos:break,continue,return,goto
Variables
EncuantoaltratamientodelasvariablestambincomparteungranparecidoconellenguajeC.
Constantes

HIGH/LOW:representanlosnivelesaltoybajodelassealesdeentradaysalida.Losnivelesaltossonaquellosde3voltiosoms.
INPUT/OUTPUT:entradaosalida.
false(falso):Sealquerepresentaalcerolgico.AdiferenciadelassealesHIGH/LOW,sunombreseescribeenletraminscula.
true (verdadero): Seal cuya definicin es ms amplia que la de false. Cualquier nmero entero diferente de cero es "verdadero", segn el
lgebradeBoole,comoenelcasode200,1o1.Siescero,es"falso".
Tiposdedatos

void,boolean,char,unsignedchar,byte,int,unsignedint,word,long,unsignedlong,float,double,string,array.
Conversinentretipos

Estasfuncionesrecibencomoargumentounavariabledecualquiertipoydevuelvenunavariableconvertidaeneltipodeseado.
char(),byte(),int(),word(),long(),float()
Cualificadoresymbitodelasvariables

static,volatile,const
Utilidades

sizeof()
Funcionesbsicas
E/Sdigital

pinMode(pin,modo)
digitalWrite(pin,valor)
intdigitalRead(pin)
E/Sanalgica

analogReference(tipo)
intanalogRead(pin)
analogWrite(pin,valor)
E/Savanzada

shiftOut(dataPin,clockPin,bitOrder,valor)
unsignedlongpulseIn(pin,valor)
Tiempo

unsignedlongmillis()
unsignedlongmicros()
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

sin(rad),cos(rad),tan(rad)
Nmerosaleatorios

randomSeed(semilla),longrandom(mx),longrandom(mn,mx)
BitsyBytes

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

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

interrupts(),noInterrupts()
Comunicacinporpuertoserie

Las funciones de manejo del puerto serie deben ir precedidas de la palabra "Serial" aunque no necesitan ninguna declaracin en la cabecera del
programa.Porestoseconsideranfuncionesbasedellenguaje.23Estassonlasfuncionesparatransmisinserial:
begin(),available(),read(),flush(),print(),println(),write()
Manipulacindepuertos
Losregistrosdepuertospermitenlamanipulacinamsbajonivelydeformamsrpidadeloscontactosdeentrada/salidadelmicrocontroladorde
lasplacasArduino.24LoscontactoselctricosdelasplacasArduinoestnrepartidosentrelosregistrosB(07),C(analgicos)yD(813).Mediante
estasvariablesserobservadoymodificadosuestado:
DDR[B/C/D]:DataDirectionRegister(odireccindelregistrodedatos)delpuertoB,CD.EsunavariabledeLectura/Escrituraquesirve
paraespecificarcualescontactossernusadoscomoentradaysalida.
PORT[B/C/D]:DataRegister(oregistrodedatos)delpuertoB,CD.EsunavariabledeLectura/Escritura.
PIN[B/C/D]:InputPinsRegister(oregistrodepinesdeentrada)delpuertoB,CD.Variabledeslolectura.
Porejemplo,paraespecificarloscontactos9a13comosalidasyel8comoentrada(puestoqueelpuertoDusalospinesdelaplacaArduino8al13
digitales)bastarautilizarlasiguienteasignacin:
DDRD=B11111110;

Comosehapodidocomprobar,elconocimientodellenguajeC,permitelaprogramacinenArduinodebidoalasimilitudentresteyellenguaje
nativodelproyecto,loqueimplicaelaprendizajedealgunasfuncionesespecficasdequedisponeellenguajedelproyectoparamanejarlosdiferentes
parmetros.Sepuedenconstruiraplicacionesdeciertacomplejidadsinnecesidaddemuchosconceptosprevios.

AVRLibc
LosprogramascompiladosconArduino(salvoenlasplacasconCorteXM3)seenlazancontraAVRLibc22porloquetienenaccesoaalgunasdesus
funciones. AVR Libc es un proyecto de software libre con el objetivo de proporcionar una biblioteca C de alta calidad para utilizarse con el
compiladorGCCsobremicrocontroladoresAtmelAVR.Secomponede3partes:
avrbinutils
avrgcc
avrlibc
LamayoradellenguajedeprogramacinArduinoestescritaconconstantesyfuncionesdeAVRyciertasfuncionalidadesslosepuedenobtener
haciendousodeAVR.25
Interrupciones
Lassealesdeinterrupcinsonlassiguientes:
cli():desactivalasinterrupcionesglobales
sei():activalasinterrupciones
Estoafectaraltemporizadoryalacomunicacinserial.LafuncindelayMicroseconds()desactivalasinterrupcionescuandoseejecuta.
Temporizadores
LafuncindelayMicroseconds()creaelmenorretardoposibledellenguajeArduinoquerondalos2s.Pararetardosmspequeossedebeutilizarla
llamadadeensamblador'nop'(nooperacin).Cadasentencia'nop'seejecutarenunciclodemquina(16MHz)deaproximadamente62,5ns.
Manipulacindepuertos
LamanipulacindepuertosconcdigoAVResmsrpidaqueutilizarlafuncindigitalWrite()deArduino.
EstablecerBitsenvariables
cbiysbisonmecanismosestndar(AVR)paraestablecerolimpiarbitsenPORTyotrasvariables.

DiferenciasconProcessing
La sintaxis del lenguaje de programacin Arduino es una versin simplificada de C/C++ y tiene algunas diferencias respecto de Processing.26 27
DebidoaqueArduinoestbasadoenC/C++mientrasqueProcessingsebasaenJava,existenvariasdiferenciasencuantoalasintaxisdeambos
lenguajesyelmodoenqueseprograma:
Arreglos
Arduino
intbar[8]
bar[0]=1

Processing
int[]bar=newint[8]
bar[0]=1

intfoo[]={0,1,2}
intfoo[]={0,1,2} obien
int[]foo={0,1,2}
Impresindecadenas
Arduino

Processing

Serial.println("helloworld") println("helloworld")
inti=5
Serial.println(i)

inti=5
println(i)

inti=5
Serial.print("i=")
Serial.print(i)
Serial.println()

inti="5"
println("i="+i)

EjemplosencillodeprogramacinenArduino
ElprimerpasoantesdecomprobarquelainstalacinescorrectayempezaratrabajarconArduino,esusarejemplosprcticosquevienendisponibles
coneldispositivo.Serecomiendaabrirelejemploled_blinkelcualcreaunaintermitenciaporsegundoenunledconectadoenelpin13.
Elcdigonecesarioeselsiguiente:

#defineLED_PIN13
voidsetup(){
//Activadodelcontacto13parasalidadigital
pinMode(LED_PIN,OUTPUT);
}
//Bucleinfinito
voidloop(){
//EncendidodeldiodoLEDenviandounasealalta
digitalWrite(LED_PIN,HIGH);
//Tiempodeesperade1segundo(1000ms)
delay(1000);
//ApagadodeldiodoLEDenviandounasealbaja.
digitalWrite(LED_PIN,LOW);
//Tiempodeesperade1segundo
delay(1000);
}

BibliotecasenArduino
LasbibliotecasestndarqueofreceArduinosonlassiguientes:28

Serial
Lecturayescrituraporelpuertoserie.

EEPROM
Lecturayescrituraenelalmacenamientopermanente.29
read(),write()

Ethernet
ConexinaInternetmedianteArduinoEthernetShield.Puedefuncionarcomoservidorqueaceptapeticionesremotasocomocliente.Sepermiten
hastacuatroconexionessimultneas.30Loscomandosusadossonlossiguientes:
Servidor:Server(),begin(),available(),write(),print(),println()
Cliente:Client(),connected(),connect(),write(),print(),println(),available(),read(),flush(),stop()

Firmata
Esunabibliotecadecomunicacinconaplicacionesinformticasutilizandoelprotocoloestndardelpuertoserie.31

LiquidCrystal
ControldeLCDsconchipsetHitachiHD44780ocompatibles.32Labibliotecasoportalosmodosde4y8bits.

Servo
Biblioteca para elcontrol de servomotores.33 A partir de la versin 0017 de Arduino la biblioteca soporta hasta 12 motores en la mayora de las
placasArduinoy48enlaArduinoMega.Estossonloscomandosusados:
attach(),write(),writeMicroseconds(),read(),attached(),detach()

SoftwareSerial
Comunicacinserieencontactosdigitales.34 Por defecto Arduino incluye comunicacin slo en los contactos 0 y 1 pero gracias a esta biblioteca
puederealizarseestacomunicacinconlosrestantes.

Stepper
Controldemotorespasoapasounipolaresobipolares.35
Stepper(steps,pin1,pin2),Stepper(steps,pin1,pin2,pin3,pin4),setSpeed(rpm),step(steps)

Wire
EnvoyrecepcindedatossobreunareddedispositivososensoresmedianteTwoWireInterface(TWI/I2C).36
LasbibliotecasMatrixySprite de Wiring son totalmente compatibles con Arduino y sirven para manejo de matrices de diodos LED. Tambin se
ofreceinformacinsobrediversasbibliotecasdesarrolladaspordiversoscolaboradoresquepermitenrealizarmuchastareas.

Creacindebibliotecas

LosusuariosdeArduinotienenlaposibilidaddeescribirsuspropiasbibliotecas.37Ellopermitedisponerdecdigoquepuedereutilizarseenotros
proyectos,mantenerelcdigofuenteprincipalseparadodelasbibliotecasylaorganizacindelosprogramasconstruidosesmsclara.
Ejemplodebiblioteca
ElsiguienteejemplopermiteelenvodecaracteresmedianteelcdigoMorse:
SecreaelarchivoMorse.hqueincluyeladefinicindelaclaseMorsequetiene3funciones:unconstructor(Morse()),unafuncinparaenviar1
punto(dot())yunafuncinparaenviarunaraya(dash()).Lavariable_pinpermiteindicarelcontactoausar.

/*
Morse.hBibliotecaparaelenvodeCdigoMorse.
CreadoporDavidA.Mellis,el2denoviembrede2007.
Liberadoaldominiopblico.
*/

#ifndefMorse_h
#defineMorse_h

#include"WProgram.h"

classMorse
{
public:
Morse(intpin);
voiddot();
voiddash();
private:
int_pin;
};

#endif

DebesercreadoelarchivoMorse.cppconelcdigo,esdecirconlaimplementacindelosmtodosdeclarados:

/*
Morse.cppBibliotecaparaelenvodeCdigoMorse.
CreadoporDavidA.Mellis,el2denoviembrede2007.
Liberadoaldominiopblico.
*/

#include"WProgram.h"
#include"Morse.h"

Morse::Morse(intpin)
{
pinMode(pin,OUTPUT);
_pin=pin;
}

voidMorse::dot()
{
digitalWrite(_pin,HIGH);
delay(250);
digitalWrite(_pin,LOW);
delay(250);
}

voidMorse::dash()
{
digitalWrite(_pin,HIGH);
delay(1000);
digitalWrite(_pin,LOW);
delay(250);
}

Labibliotecacreadaaspuedeserusadamedianteelcomando#include.SisedeseaenviarunapeticindeauxilioSOSporelcontacto13bastaracon
llamaraMorse(13)yejecutarlasiguientesecuencia:
morse.dot();morse.dot();morse.dot();
morse.dash();morse.dash();morse.dash();
morse.dot();morse.dot();morse.dot();

EjemplosdeCdigo
LapginadeArduinocuentaconunaseriedeejemplosparacomenzaraentendersufuncionamiento,concomponentesbasetalescomoPantallas,
LEDs,Potenciometros,etc.
EjemplodeparpadeodeLED

/*
Blink
TurnsonanLEDonforonesecond,thenoffforonesecond,repeatedly.

Thisexamplecodeisinthepublicdomain.
*/

//Pin13hasanLEDconnectedonmostArduinoboards.

//giveitaname:
intled=13;

//thesetuproutinerunsoncewhenyoupressreset:
voidsetup(){
//initializethedigitalpinasanoutput.
pinMode(led,OUTPUT);
}

//thelooproutinerunsoverandoveragainforever:
voidloop(){
digitalWrite(led,HIGH);//turntheLEDon(HIGHisthevoltagelevel)
delay(1000);//waitforasecond
digitalWrite(led,LOW);//turntheLEDoffbymakingthevoltageLOW
delay(1000);//waitforasecond
}

EjemplodelecturadePotenciometro

/*
ReadAnalogVoltage
Readsananaloginputonpin0,convertsittovoltage,andprintstheresulttotheserialmonitor.
AttachthecenterpinofapotentiometertopinA0,andtheoutsidepinsto+5Vandground.

Thisexamplecodeisinthepublicdomain.
*/

//thesetuproutinerunsoncewhenyoupressreset:
voidsetup(){
//initializeserialcommunicationat9600bitspersecond:
Serial.begin(9600);
}

//thelooproutinerunsoverandoveragainforever:
voidloop(){
//readtheinputonanalogpin0:
intsensorValue=analogRead(A0);
//Converttheanalogreading(whichgoesfrom01023)toavoltage(05V):
floatvoltage=sensorValue*(5.0/1023.0);
//printoutthevalueyouread:
Serial.println(voltage);
}

Instalacinendiferentesentornos
Windows
Lospasosaseguirsonlossiguientes:
DescargarlasversionesmsrecientedeJavaRuntimeEnviroment(J2RE)ydelIDE
Arduino.
InstalarloscontroladoresFTDIUSB,conlaplacaArduinoconectada.
EjecutarelIDEArduinoparaabrirlainterfazyconfigurarelpuertoUSBdondeest
conectadalaplaca.

GNU/Linux
Para instalar Arduino en un sistema GNU/Linux necesitamos los siguientes programas
pararesolverlasdependencias:
Sunjavaruntime,jre.
avrgcc,compiladorparalafamiliademicrocontroladoresavrdeatmel.
avrlibc,libcdelcompiladoravrgcc.
En algunas distribuciones conviene desinstalar, si no es necesario, el programa "brltty"
que permite el acceso al terminal a personas invidentes. Para concluir, se descarga el
frameworkdeArduino,sedescomprimeyejecuta.

Equipodedesarrollo
El ncleo del equipo de desarrollo de Arduino est formado por MassimoBanzi, David
Cuartielles,TomIgoe,GianlucaMartino,DavidMellisyNicholasZambetti.

Pduino

InterfazdelentornodedesarrolloArduinoenelSistema
OperativoWindows.

PduinonacedelafusindelosproyectosPureDatayArduino.Ambosproyectosdefuenteabiertapermitentrabajarconinterfazgrfica.Cargandoel
firmwaredePureData(PD)alaplacaArduinosepuedeaccederaellamedianteellenguajedeprogramacingrfico.

Minibloq

Minibloq es un entorno grfico de programacin que puede generar cdigo nativo de Arduino y escribirlo directamente en la memoria flash de la
placa.Tieneunmodoquepermitevisualizarelcdigogenerado,elcualtambinpuedesercopiadoypegadoenelArduinoIDE,paralosusuariosque
intentan hacer el pasaje de una herramienta grfica a la programacin en sintaxis C/C++. Minibloq es de uso libre y sus fuentes tambin estn
disponiblesgratuitamente.Unacaractersticaimportante,esquepuedecorrertambinenlacomputadoraporttilOLPC,medianteelsoftwareWine.

PhysicalEtoys
Physical Etoys es una extensin libre y gratuita que permite que diversos dispositivos
electrnicoscomoLegoNXT,lasplacasArduino,Sphero,Kinect,JoystickWiimote,entre
otros,puedanserprogramadosfcilmenteyqueinteractenentresgraciasasusistemade
bloques.
EnelcasodeArduino,PhysicalEtoysofrecedosmodosdeprogramacin:
1. El modo "directo", en el cual los programas se ejecutan en la computadora del
usuarioylasrdenessetransmiteninmediatamenteatravsdelpuertoserie.
2. Elmodo"compilado",enelcuallosprogramassetraducenaC++ysebajanala
placa,paraluegoejecutarsedemaneraindependientedelacomputadora.
El modo "directo" permite modificar los programas y ver los cambios producidos de
manerainmediataenelcomportamientodelrobot,locualfacilitalaprogramacin,sobre
todo al usuario inexperto. Asimismo, permite ver constantemente los valores de los
sensoresyutilizarelrobot,porejemplo,comoparaadquirirdatos.
Elmodo"compilado",porsuparte,eliminaelretardoqueintroducelacomunicacincon
lacomputadora,locuallohacepreferibleparaeldesarrollodetareasautnomas,enlas
cualeslavelocidadderespuestadelrobotdebeserptima.

Vasetambin
BASICStamp
Impresin3D
Gumstix
Minibloq
MiniPC
OOPIC
PICAXE
RaspberryPi
PhysicalEtoys
Robot
X10

InterfazdelentornodedesarrolloArduinoS.O.GNU/Linux.

Referencias
1. PlacaArduinoSerial(http://arduino.cc/en/Main/ArduinoBoardSerial)
2.
Interview
with
Casey
Reas
and
Ben
Fry
(http://rhizome.org/editorial/2009/sep/23/interviewwithcaseyreasandbenfry/).
3. [1](http://wiring.org.co/)
4. abProjecthomepage(http://arduino.cc).
5. Arduino Due is finally here (http://arduino.cc/blog/2012/10/22/arduinodueisfinally
PatchPduino.
here/).
6. http://www.aec.at/en/prix/honorary2006.asp
7. Ars Electrnica Archiv (http://90.146.8.18/de/archives/prix_archive/prix_year_cat.asp?
iProjectID=13638&iCategoryID=12420)(enalemn).Consultadoel18defebrerode2009.
8.
Ars
Electronica
Archiv
/
ANERKENNUNG
(http://90.146.8.18/de/archives/prix_archive/prix_projekt.asp?iProjectID=13789#)(enalemn).
Consultadoel18defebrerode2009.
9. a bDavid Kushner (26 Oct 2011). The Making of Arduino (http://spectrum.ieee.org/geek
life/handson/themakingofarduino).TextopublicacinIEEESpectrumignorado(ayuda)
a
b
10.
Algo
de
Historia
para
comenzar
(http://platea.pntic.mec.es/~lmarti2/arduino/introardu/index.htm). Consultado el 22 de
diciembrede2013.
11. Google presenta ADK, interfaz basada en Arduino para Android
(http://blog.bricogeek.com/noticias/arduino/googlepresentaadkinterfazbasadaenarduino
paraandroid/).BricoGeek.com.12demayode2011.Consultadoel22dediciembrede2013.
PantalladeMinibloq.
12.
Accessory
Development
Kit
2012
Guide
(http://developer.android.com/tools/adk/adk2.html)(eningls).Consultadoel22dediciembre
de2013.
13. Terrence O'Brien (19 de septiembre de 2011). Arduino brings the (new) goods to Maker Faire New York, welcomes ARM into the fold
(http://www.engadget.com/2011/09/19/arduinobringsthenewgoodstomakerfairenewyorkwelcomes/)(eningls).Consultadoel22dediciembrede2013.
14. Xoscillo: A software oscilloscope that acquires data using an Arduino or a parallax.(http://code.google.com/p/xoscillo/)(eningls). Consultado el 22 de
diciembrede2013.
15. Joshua M. Pearce (14 de septiembre de 2012). Building Research Equipment with Free, OpenSource Hardware
(http://211.144.68.84:9998/91keshi/Public/File/41/3376100/pdf/1303.full.pdf)(eningls).Washington,EE.UU.:AmericanAssociationfortheAdvancementof
Scienc.p.3.doi:10.1126/science.1228183(http://dx.doi.org/10.1126%2Fscience.1228183).Consultadoel22dediciembrede2013.
16. Peter Kirn (20 de agosto de 2008). Aug 20 2008 Arduinome: An ArduinoBased Monome Clone, Behind the Scenes

17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.

(http://createdigitalmusic.com/2008/08/arduinomeanarduinobasedmonomeclonebehindthescenes/)(eningls).Consultadoel22dediciembrede2013.
HumaneReader(http://humaneinfo.com/reader.html)(eningls).Consultadoel22dediciembrede2013.
TheHumanePC(http://humaneinfo.com/pc.html)(eningls).Consultadoel22dediciembrede2013.
ArduinoPhone(http://www.instructables.com/id/ArduinoPhone/ArduinoPhone)(eningls).Consultadoel22dediciembrede2013.
EstebanZamorano(28denoviembrede2013).ConstruyetupropiocelularporUSD$200graciasaArduino(http://www.fayerwayer.com/2013/11/construye
tupropiocelularporusd200graciasaarduino/).Consultadoel22dediciembrede2013.
Interfacing with Other Software (http://www.arduino.cc/playground/Main/InterfacingWithSoftware). http://arduino.cc (en ingls). Consultado el 22 de
diciembrede2013.
abLanguageReference(http://arduino.cc/en/Reference/Extended).http://arduino.cc(eningls).Consultadoel22dediciembrede2013.
Serial (http://arduino.cc/en/Reference/Serial). http://www.arduino.cc (en ingls).
Consultadoel22dediciembrede2013.
Port Registers (http://arduino.cc/en/Reference/PortManipulation). http://www.arduino.cc
(eningls).Consultadoel22dediciembrede2013.
AVR Code (http://www.arduino.cc/playground/Main/AVR). http://www.arduino.cc (en
ingls).Consultadoel22dediciembrede2013.
Arduino/Processing Language Comparison (http://arduino.cc/en/Reference/Comparison?
from=Main.ComparisonProcessing).http://www.arduino.cc(eningls). Consultado el 22 de
diciembrede2013.
Language
Reference(API)/Processing
2+
(http://processing.org/reference/).
http://processing.org/(eningls).Consultadoel22dediciembrede2013."
Arduino Libraries (http://arduino.cc/en/Reference/Libraries). http://arduino.cc/ (en
ingls).Consultadoel22dediciembrede2013.
EEPROMLibrary(http://arduino.cc/en/Reference/EEPROM).http://www.arduino.cc(en
ingls).Consultadoel22dediciembrede2013.
Ethernet Library (http://arduino.cc/en/Reference/EEPROM). http://www.arduino.cc (en
ingls).Consultadoel22dediciembrede2013.
CombinacindeunacomputadoradebajocostoOLPC,el
Firmata Library (http://arduino.cc/en/Reference/Firmata). http://www.arduino.cc (en
softwareMinibloqyunaplacaArduino.
ingls).Consultadoel22dediciembrede2013.

LiquidCrystal
Library
(http://arduino.cc/en/Reference/LiquidCrystal).
http://www.arduino.cc(eningls).Consultadoel22dediciembrede2013.
Servo Library (http://arduino.cc/en/Reference/Servo). http://www.arduino.cc (en ingls). Consultado el 22 de
diciembrede2013.
SoftwareSerial Library (http://arduino.cc/en/Reference/SoftwareSerial). http://www.arduino.cc (en ingls).
Consultadoel22dediciembrede2013.
StepperLibrary(http://arduino.cc/en/Reference/Stepper).http://www.arduino.cc(eningls).Consultadoel22de
diciembrede2013.
Wire Library (http://arduino.cc/en/Reference/Wire). http://www.arduino.cc (en ingls). Consultado el 22 de
diciembrede2013.
Writing a Library for Arduino (http://arduino.cc/en/Hacking/LibraryTutorial). http://www.arduino.cc (en
ingls).Consultadoel22dediciembrede2013.

Bibliografa

Proyectodeunsemfororealizado
conArduinoyPhysicalEtoys.

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

Enlacesdeexternos
SitiowebProyectoArduino(http://www.arduino.cc/)(eningls)
SitiowebProyectoArduino(http://www.arduino.cc/es)(enespaolconmenoscontenidos)
[2](http://blog.arduino.cc/)(blogeningls)
ArduinoStackExchange(http://arduino.stackexchange.com/)sitiodepreguntasyrespuestas
Comparativadelosdistintosmodelosdisponibles(https://www.sparkfun.com/arduino_guide)
Algunosproyectosconarduinopasoapaso(http://www.bricogeek.com)(ejemplosconvideotutoriales)
DuinOS (http://web.archive.org/web/http://robotgroup.com.ar/duinos/wiki): Sistema operativo multitarea para Arduino desarrollado por
RobotGroup(http://robotgroup.com.ar)
Biicode(https://www.biicode.com/):AplicacinparagestionarlibrerasyproyectosdeArduino
EntornogrficodeprogramacinparaArduino(http://minibloq.org)
Winkhel:cmounproyectoArduinopuedeconvertirseenunproductoreal(http://www.winkhel.com)(enespaol)
ScadaparaArduino(http://www.acimut.com/monitoriza/monitorizaforarduino.html)
SRemote Control: Aplicacin Android para controlar Arduino por UDP o TCP (https://play.google.com/store/apps/details?
id=com.appopulus.remotecontrol&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5hcHBvcHVsdXMucmVtb3RlY29udHJvbCJd)
Ejemplo de uso de Arduino y Gambas: Grfica de datos de sensores (https://jsbsan.blogspot.com.es/2012/05/arduinoygambas3lecturay
graficosde.html)
Obtenidodehttp://es.wikipedia.org/w/index.php?title=Arduino&oldid=79263162
Categoras: Hardwarelibre Microcontroladores
Estapginafuemodificadaporltimavezel7ene2015alas14:30.
EltextoestdisponiblebajolaLicenciaCreativeCommonsAtribucinCompartirIgual3.0podranseraplicablesclusulasadicionales.
Lanselostrminosdeusoparamsinformacin.
WikipediaesunamarcaregistradadelaFundacinWikimedia,Inc.,unaorganizacinsinnimodelucro.

Grficadedatosdesensores
conectadosaArduino,programadoen
Gambas

You might also like