Professional Documents
Culture Documents
DeWikipedia,laenciclopedialibre
Arduinoesunaplataformadehardwarelibre,basadaenunaplacaconunmicrocontroladoryun
entorno de desarrollo, diseada para facilitar el uso de la electrnica en proyectos
multidisciplinares.23
Arduino
"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
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