Вы находитесь на странице: 1из 11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

LenguajedeprogramacinArduino.Introduccin

Enestecaptulose
Sitio:

AulavirtualdeCEPIndalo

Curso:

IntroduccinaArduino

Libro:

LenguajedeprogramacinArduino.Introduccin

Imprimidopor: FranciscoCantnCallejn
Da:

jueves,12demarzode2015,07:08

http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

1/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

Tabladecontenidos
1Variablesyconstantes
2Estructurasdecontrol
3Operadoresyexpresiones
4Funcionesylibrerias

http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

2/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

1Variablesyconstantes
Antesdeempezarestecaptulohadequedarclaroqueelobjetivodeestecursono
esaprenderprogramacin.Laprogramacininformticaesunamateriaextensay
complejaquerequieredeestudioslargosydedicados.
EnestecursosepretendealcanzaraconocerelfuncionamientodeArduino.Para
ellosedarnnocionesdeprogramacinparapodercomprenderymodificarlos
programasexistentes.Ladocumentacinqueseincluyeacontinuacinpretende
portantoserunaaproximacin(avecesinexacta)allenguajedeprogramacin
usadoenArduino.
Alahoraderealizarunprogramahayciertasvariablesquenosinteresadefinir
parapodermodificarlasaposteriori.PorejemplosienelBlinkcreamosuna
variabledenominadaLEDsiposteriormentequeremoscambiarelpintanslo
tendremosquehacerloenunlugaryfacilitalalecturadelprograma:

intLED=13EstalneaindicaquehemoscreadounavariabledenombreLED,
esavariableesdetipointloqueindicaqueserunnmeroentero(enArduinoel
rangodenmerosenterosquesepuedeutilizaresde32768a32767)y
mediante=13leotorgamoselvalor"13"deformaqueelcompilador,cadavezque
lea"LED"entender"13"
http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

3/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

Tiposdedatos
Dependiendodeldatoquenecesitemosalmacenarrecurriremosauntipodedatou
otro.Ladeclaracindeltipodedatoesnecesariayaquelamemoriaenlos
sistemaseslimitadayaldeclararundatosereservaunespacioenlamemoriaque
nopodrserusadoporotravariable.
Deestaforma,demenoramayor(pornmerodebytesocupadosenmemoria)nos
encontramoscon:
byte.Almacenaunvalornumricode8bitssindecimales.Tienenunrango
entre0y255.
int..Enterossonuntipodedatosprimariosquealmacenanvaloresnumricos
de16bitssindecimalescomprendidosenelrango32,767to32,768.
long.Elformatodevariablenumricadetipoextendidolongserefiere
anmerosenteros(tipo32bits)sindecimalesqueseencuentrandentrodel
rango2147483648a2147483647.
float.Elformatodedatodeltipopuntoflotantefloatseaplicaa
losnmeroscondecimales.Losnmerosdepuntoflotantetienenunamayor
resolucinquelosde32bitsconunrangocomprendido3.4028235x1038a
3.4028235x1038

http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

4/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

2Estructurasdecontrol
If(sicondicional)
ifesunestamentoqueseutilizaparaprobarsiunadeterminadacondicinse
cumple,comoporejemploaveriguarsiunvaloranalgicoestporencimadeun
ciertonmero,yejecutarunaseriedeoperacionesquesonlasqueseescriben
dentrodellaves.Silacondicinsecumpleentoncesseejecutanlasoperaciones
queestndentrodelasllaves.
Elformatoparaifeselsiguiente:
if(condicin){
ejecutaInstrucciones
}
If..else
Avecespuedesernecesarioircomprobandosiunavariablecumpleunas
determinadascondicionesunatrasotra.Porejemplo,parasaberenquerangoest
unnmeropodemosirpreguntandosecuencialmentesiestenrango04,59,10
14,...sucesivamente.
if(0<numero<5){
escribir("elnmeroestentre0y5")
}
elseif(5<=numero<9){
escribir("elnmeroestentre5y9")
}
elseif(9<=numero<15){
escribir("elnmeroestentre9y15)
}
else{
escribir("niideadeenquerangoestelnmero")
}
for
http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

5/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

Ladeclaracinforseusapararepetirunbloquedesentenciasunnmero
determinadodeveces.Cadavezqueseejecutanlasinstruccionesdelbuclese
vuelveatestearlacondicin.Ladeclaracinfortienetrespartesseparadaspor(),
vemoselejemplodesusintaxis:
for(inti=0i<20i++){
digitalWrite(13,HIGH)
digitalWrite(13,LOW)
}
Elejemploanteriorenciendeyapagaunledconectadoalpin13enunbuclede20
ejecuciones.Aliniciodelbuclesedeclaraunavariableentera"i"cuyovalorinicial=
0.Justodespusseindicaqueelbucleseejecutarhastaquelavariable"i"tenga
unvalorinferiora20yfinalmenteseindicacuantoseincrementalavariablecada
vezqueserepitaelbucle.(++enprogramacinequivalea+1,esdecir,lavariable
pasaavalerunenteromascadavezqueseejecutaelbucle).
while
Unbucledeltipowhileesunbucledeejecucincontinuamientrassecumplala
expresincolocadaentreparntesisenlacabeceradelbucle.Lavariablede
pruebatendrquecambiarparasalirdelbucle.
Lasituacinpodrcambiaraexpensasdeunaexpresindentroelcdigodelbucle
otambinporelcambiodeunvalorenunaentradadeunsensor.
Elsiguienteejemploejecutaunaseriedeinstruccionesmientrasestpulsadoun
botn.
While(boton==PULSADO){
instrucciones
}
do..while
Elbucledo..whileessimilarawhileconlanicadiferenciadequedo..whilese
ejecutaalmenosunavez.Esdecir,enwhilehaceelchequeodelavariablealinicio
delbucle,mientrasqueendo..whilelohacealfinal.
switch..case
Switchcasepermitehacerunaseriedecomparacionessinnecesidaddeacumular
unaseriedebuclesif..elseanidados.Secomparaelvalordeunavariableconel
valorespecificadoencadacase.Silosvalorescoincidenseejecutaelcdigo
dentrodelcasecorrespondienteyluegosesaledelasentenciaaadiendola
http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

6/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

palabrabreakalfinaldelconjuntodeinstrucciones.Sinoseaadebreakel
programaseguirejecutndosehastaencontrardichapalabra(esimportante
porquepuedeocurrirqueseejecutendos"cases"seguidos).Unposibleejemplode
sufuncionamiento:
switch(var){
case1:
//sivar=1seejecutaesto
break
case2:
//sivar=2seejecutaesto
break
//puedenhabertantoscasecomosenecesite.
default:
//sinadacoincideseejecutaesto
//esopcional
break
}

http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

7/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

3Operadoresyexpresiones
Cadalenguajedeprogramacintieneunaseriedepalabrasreservadasdelsistema
quenosepuedenutilizarporelprogramadorparadescribirvariablesofunciones
delosprogramas,porejemplo,nosepuedellamaraunavariablevoidosetup.Las
palabrasreservadasdellenguajesepuedenconsultarenesteenlace[0].
Tambienexistenunaseriedeoperadoresmatemticosusadosparacomparar,
evaluarymodificarvariables.Losoperadoresseexpresandelasiguienetmanera:
OperadoresAritmticos
Losoperadoresaritmticosqueseincluyenenelentornodeprogramacinson
suma,resta,multiplicacinydivisin.Susintaxisescomosigue:
y=y+3
x=x7
i=j*6
r=r/5
Laoperacionesseefectateniendoencuantaeltipodevariabledefinidaparacada
operando(int,bool,float,etc..),porloque,porejemplo,sidefinimos9y4
comoenteros,11/5devuelvederesultado2enlugarde5.5yaqueel11y5se
valoresdetipoentero.Comoestdescritoanteriormentecadatipodevariabletiene
unrangodevaloresquepuedetomar,deformaquesepuedegenerar
desbordamientoyunfuncionamientoinesperadosielresultadoexcedeelrangodel
tipodedato.
Silosoperandossondediferentestipos,paraelclculoseutilizareltipomas
grande.Estoesimportanteyaquesuponeunaumentodelamemoriadeprograma.
Paraevitarestosepuedeutlizarelcomando(int)NmeroDecimalparaadaptaruna
variabledeltipofloatatipoint,Porejemplo:i=(int)3,6estableceriiguala3
Asignacionescompuestas
Seimplementanparafacilitarlalabordelprogramador.Lasasignaciones
compuestascombinanunaoperacinaritmticaconunavariableasignada.Estas
soncomnmenteutilizadasenlosbucles.Lasasignacionescompuestaspueden
ser:
x++//igualquex=x+1
x//igualquex=x1
x+=y//incrementaxeny(x=x+y)
x=y//decrementaxeny(x=xy)
x*=y//multiplicaxpory
x/=y//dividexentrey
Operadoresdecomparacin
http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

8/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

Seutilizanparacomparardistintasvariables,comunmenteenestructuras
condicionalestipoifparacomprobarsisecumplelacondicinono.Sonlos
siguientes:
x==y//xesigualay
x!=y//xesdistintoay
x<y//xesmenorquey
x>y//xesmayorquey
x<=y//xesmenoroigualquey
x>=y//xesmayoroigualquey
Operadoreslgicos
Losoperadoreslgicosdevuelvenciertoofalsotrascomparadosexpresiones.
Existentresoperadoreslgicos,AND,ORyNOTqueamenudoseutilizanpara
contrastarlacondicindeentradaenbuclesifcuandonecesitamosquela
condicindependadedosvariables.Seutilizadelasiguientemanera:
AND
if(x>0&&x<5)//Tansloentrarenelbuclesixestentre0y5

OR
if(x>0||y>0)//Entraralbuclesialgunadelasdoscondicionesse
cumple(xoymayoresquecero)
NOT
if(!x>0)//Entrartanslosilaexpresinesfalsa
[0]:http://playground.arduino.cc/ArduinoNotebookTraduccion/Appendix7

http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

9/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

4Funcionesylibrerias
Sinuestroprogramatienebloquesdecdigoquevanatenerqueserusadosvarias
veces,podemosagruparesecdigoenunafuncindeformaquecadavezque
necesitemoseseconjuntodeinstruccionesnotendremosquevolveraescribirlas,
bastarconllamaraesafuncindesdecualquierpuntodelprograma.Las
funcionessedeclaranenfuncindeltipodevalorquedevuelvencuandoson
llamadasosinodevuelvenuntipodevalorsecolocarlapalabrareservadavoid
(vacoeningls)delantedeladeclaracindelafuncin.
Enpocaspalabras:Unafuncinessimplementeungrupodecdigoquesellama
bajounnombreyquepuededevolverunvalor(ono)alterminardeejecutarse.
Seusaraas:
miFuncion()//conestoavisamosalcompiladorqueexisteestafuncin
//(yaqueestpordebajodedondeserusada)
voidloop()//cdigodelprograma
{
miFuncion()//aqullamamosalafuncinquehemoscreado
}
voidmiFuncion()//yestaesnuestrafuncin,elconjuntodeinstruccionesque
usamos.
{
conjuntodeinstruccionesqueejecuto
}

Librerias
Cuandoelconjuntodeinstruccionesquesenecesitaanidaresconsiderabely
ademspuedeserreutilizadoendistintosprogramassehandeutilizarlaslibreras.
EstaslibrerassehandeinstalarenelIDEdeArduinoenunarutaespecficao
bienmedianteelmenpresentebajoSketch>importarlibrera.
Unavezimportadasehadellamardesdenuestroprogramaparapoderser
utilizada.Cuandosehaceestallamadaelcdigodelalibreraseincorporaa
nuestroprogramayportantoaumentaeltamaoqueocuparalsercompilado.
ExistenunaseriedelibrerasoficialesdeArduinoquevienenincluidasenelIDE
pordefectooquesepuedendescargardesdelapginaoficialdeArduino
(http://arduino.cc/en/reference/libraries).
Tambienexisteunagrancantidaddelibrerasconfuncionesmuydiversascuyo
http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

10/11

12/3/2015

Lenguaje de programacin Arduino. Introduccin

cdigoesdelibredescargayhansidoelaboradasensumayoraporpersonas
annimasalasquenohaymanerademostrarleselagradecimientoporeltrabajo
realizado).RepositoriosdelibrerassonelArduinoPlaygroundolacomunidadde
cdigoGithub
Graciasalaslibrerasnoesnecesariocomprendercomofuncionacada
componentedenuestrosistema(inclusopodemosdesconocerloporcompleto)tan
sloconsabercmosellamaalalibreraysuusosersuficienteparausar
pantallas,sensores,robots,memorias,tarjetasdememoria,...
ElconjuntodelibrerasdisponiblesesunadelasfortalezasdeArduinocreadapor
sucomunidaddeusuariosquehacenqueelusodeArduinoseasencilloy
accesibleagentededistintosperfiles.

http://aula.cepindalo.es/moodle/mod/book/tool/print/index.php?id=6483

11/11

Вам также может понравиться