You are on page 1of 34

EJERCICIOS DE ARDUINO

RESUELTOS
Grupo Sabika
Revisado: 18/11/2013
Ejercicios de Arduino resueltos, Grupo Sabika 1
Instalar Entorno de Programacin Arduino en Uuntu !"#$"#% "#$#&% '$"# ( '$#&)
Para la instalacin de Arduino se requieren ciertos paquetes para su funcionamiento...
librt!"ava // Librera para comunicacin serial
avr!libc # $cc!avr // Pauete de compiladores para la pro!ramacin de "icrocontroladores Atmel
con Len!uaje #
sun!"ava%!"re // "otor $a%a
1& Puede instalar estos paquetes desde '(naptic como si$ue: 'istema ) Administracin ) *estor de Paquetes
'(naptic +n la ventana del '(naptic proceda a seleccionar cada uno de los paquetes mencionados desde
una consola ,terminal& escribiendo lo si$uiente: sudo apt&!et install libr't'&ja%a a%r&libc !cc&a%r
sun&ja%a(&jre
2& -escar$ue arduino desde su pa$ina .eb en /ttp://arduino.cc/ o abra una terminal ( escriba lo si$uiente:
Para versiones de 32 bits ,i38%& )!et *ttp+//arduino,!oo!lecode,com/-iles/arduino&../1,t!0
Para versiones de %0 bits ,amd%0& )!et *ttp+//-iles,arduino,cc/do)nloads/arduino&../1&/,t!0
3& -escomprimalo...
Reali1ando doble clic sobre el arc/ivador o en una terminal con tar '%- arduino&../1,t!0
0& 2b3quese en la carpeta...
4on el nave$ador de arc/ivos o mediante una terminal cd arduino&../1
5& +"ec6telo 7
Reali1ando doble clic sobre el arc/ivo llamado arduino o mediante un terminal ,/arduino
8tra forma mu( sencilla de 9nstalar Arduino en 2buntu :.10 ( 10.00 es a trav;s del repositorio de Arduino
para 2buntu< para ello se$uimos los si$uientes pasos en un terminal de =inu< >men6 Aplicaciones )
Accesorios ) ?erminal@:
1& >sudo add!apt!repositor( ppa:arduino!ubuntu!team*. AAade el repositorio de ubuntu a las or3$enes de
soft.are de tu equipo.
2& >sudo apt!$et update@. Actutali1a los or3$enes de soft.are de tu equipo ( por tanto los repositorios.
3& >sudo apt!$et install arduino@. 9nstala Arduino con todas sus dependencias.
0& Arduino aparece en el >men6 Aplicaciones ) Pro$ramacin ) Arduino@.
Bota: las ordenes que ten$an >sudo@ delante requieren permisos de administrador ( por tanto pedirC la
contraseAa de adminsitrador.
+n la actual 2buntu 10.10 desde el >centro de soft.are de 2buntu@ se instala directamente.
Ejercicios de Arduino resueltos, Grupo Sabika /
EJERCICIOS DE ARDUI+O$
Led parpadeante$
'e trata de conectar un led al pin13< /aciendo que lu1ca durante 500 ms ( que se apa$ue durante 100 ms< este
proceso se repetirC c3clicamente.
8b"etivos:
Reconocer partes de la placa.
Aprender a coneionar leds a la placa.
Damiliari1arse con el entorno de pro$ramacin.
Reconocer las partes de un pro$rama de arduino.
4onocer rdenes como: pinEode< di$italFrite ( dela(.
1deo
'olucin:
%oid setup23 4 //comien0a la con-i!uracion
pin"ode215, 678P7839 //con-i!ura el pin 15 como de salida
: //termina la con-i!uracion
%oid loop23 4 //comien0a el bucle principal del pro!rama
di!ital;rite215, <=G<39 //en%ia >1 al pin 2salida3 15
dela? 2>..39 //espera >.. ms pin 15 con >1
Ejercicios de Arduino resueltos, Grupo Sabika 5
di!ital;rite215, L6;39 //en%ia .1 al pin 2salida3 15
dela? 21..39 //espera 1.. ms pin 15 con .1
:
Secuencia de leds$
'e trata de encender ( apa$ar 0 leds secuencialmente. =os leds deben estar conectados a los pines 5<%<G ( 8.
'e deben encender ( posteriormente apa$ar los leds desde el pin 5 al 8< con un tiempo de duracin de
encendido ( apa$ado de 200 milise$undos.
Bota: en una se$unda soucin la secuencia principal del pro$rama debe estar reproducida en una funcin a la
que llamarC el pro$rama principal.
8b"etivos:
Damiliari1arse con el entorno de pro$ramacin.
Aprender a declarar variables ( variables tipo lista de valores.
Aprender a declarar una funcin ( llamarla cuando sea necesario.
1ideo
'olucin 1:
int tiempo@/..9 //declara una %ariable como entero ? de %alor /..
%oid setup23 4 //comien0a la con-i!uracion
pin"ode2>,678P7839
pin"ode2(,678P7839
pin"ode2A,678P7839
pin"ode2B,678P7839
:
%oid loop23 4 //comien0a el bucle principal del pro!rama
di!ital;rite2>,<=G<39
dela?2tiempo39
di!ital;rite2>,L6;39
dela?2tiempo39
di!ital;rite2(,<=G<39
dela?2tiempo39
di!ital;rite2(,L6;39
dela?2tiempo39
di!ital;rite2A,<=G<39
dela?2tiempo39
Ejercicios de Arduino resueltos, Grupo Sabika C
di!ital;rite2A,L6;39
dela?2tiempo39
di!ital;rite2B,<=G<39
dela?2tiempo39
di!ital;rite2B,L6;39
dela?2tiempo39
:
'olucin 2:
int tiempo@/..9
int n9
%oid setup23 4 //comien0a la con-i!uracion
-or 2n@>9nDE9nFF3 4
pin"ode 2n, 678P7839
:
:
%oid secuencia23 4
-or 2n@>9nDE9nFF3 4
di!ital;rite 2n, <=G<39
dela? 2tiempo39
di!ital;rite 2n, L6;39
dela? 2tiempo39
:
:
%oid loop23 4
secuencia239
:
'olucin 3:
int ledsGH@4>,(,A,B:9// Ieclara %ariables tipo lista de %alores
int tiempo@/..9
int n@.9
%oid setup23 4 //comien0a la con-i!uracion
-or 2n@.9nDC9nFF3 4
pin"ode 2ledsGnH, 678P7839
:
:
%oid secuencia23 4
-or 2n@.9nDC9nFF3 4
di!ital;rite 2ledsGnH, <=G<39
dela? 2tiempo39
di!ital;rite 2ledsGnH, L6;39
dela? 2tiempo39
:
:
%oid loop23 4
secuencia239
:
Cruce de sem,-oros$
'e trata de un cruce de semCforos controlado por arduino< para ello utili1aremos en el primer semCforo los
pines 3 ,led ro"o&< 0 ,led ambar&< 5 ,led verde&< en el se$undo semCforo utili1aremos los pines % ,led ro"o&< G
,led ambar& ( 8 ,led verde&. =a secuencia de funcionamiento debe ser : ro"o 1 H verde 2 durante 3 se$undos<
ro"o 1 H ambar 2 durante 500 ms< verde 1 H ro"o 2 durante 3 se$undos< ambar 1 ! < ro"o 2 durante 500 ms.
Ejercicios de Arduino resueltos, Grupo Sabika >
8b"etivos:
Damiliari1arse con el entorno de pro$ramacin.
Aprender a declarar variables tipo lista de valores.
'olucin:
int ledsGH@45,C,>,(,A,B39
int tiempo1@5...9
int tiempo/@>..9
int n9
%oid setup23 4
-or 2n@.9nD(9nFF3 4
pin"ode 2ledsGnH,678P7839
:
:
%oid loop 23 4
di!ital;rite 2ledsG.H,<=G<39
di!ital;rite 2ledsG>H,<=G<39
dela? 2tiempo139
di!ital;rite 2ledsG>H,L6;39
di!ital;rite 2ledsGCH,<=G<39
dela? 2tiempo/39
di-ital;riteGledsG.H,L6;39
di!ital;rite 2ledsG/H,<=G<39
di!ital;rite 2ledsGCH,L6;39
di!ital;rite 2ledsG5H,<=G<39
dela? 2tiempo139
di!ital;rite 2ledsG/H,L6;39
di!ital;rite2ledsG1H,<=G<39
dela? 2tiempo/39
:
SOS con .umador$
'e trata de un 1umbador que en cdi$o morse ,pitidos lar$os/cortos& especifica una palabra< en nuestro caso
'8'. Para el que no lo sepa< la ' son tres seAales ac6sticas de corta duracin ( la 8 tres seAales ac6stica de
lar$a duracin.
+l 1umbador debe estar conectado al pin 13< los pitidos cortos tendrCn una duracin de 100 ms ( los lar$os
300 ms. +ntre letra ( letra debe pasar un tiempo de 300 ms ( entre '8's debe /aber un tiempo de 1000 ms.
Bota: -ebes usar variables para $uardar los tiempos que vas a usar.
8b"etivos:
Reconocer partes de la placa.
Aprender a coneionar un 1umbador a la placa.
Damiliari1arse con el entorno de pro$ramacin.
Reconocer las partes de un pro$rama de arduino.
Aprender a como declarar variables.
4onocer rdenes de control de pro$rama como: for.
Ejercicios de Arduino resueltos, Grupo Sabika (
1ideo
'olucin:
int corto@1..9 //Ieclara la %ariable de ar!umento entero JcortoJ ? la iniciali0a con el %alor 1.. 2letra S3
int pausa@5..9//tiempo entre letra ? letra
int lar!o@5..9 //%ariable de ar!umento entero Jlar!oJ ? la iniciali0a con el %alor 5.. 2letra 63
int espera@1...9//%ariable ar!umento entero JesperaJ ? la iniciali0a con el %alor 1... 2tiempo entre S6S &
S6S3
int n@.9
int 0umb@159 //P=K di!ital al ue conectamos el 0umbador
%oid setup234 //comien0a la con-i!uracion
pin"ode20umb,678P7839
:
%oid loop234
-or2n@.9nD59nFF34 //=teracion en la ue la %ariable n comien0a con el %alor .
di!ital;rite20umb, <=G<39 // ? %a aumentando en 1 en cada ciclo *asta ue toma el %alor /,
dela?2corto39 // con lo ue las instrucciones comprendidas entre los corc*etes
di!ital;rite20umb,L6;39 // se repiten 5 %eces
dela?2corto39
:
dela?2pausa39 //8iempo entre letras
-or2n@.9nD59nFF34 //Aui esta la 6
di!ital;rite20umb, <=G<39
dela?2lar!o39
di!ital;rite20umb,L6;39
dela?2lar!o39
:
dela?2pausa39
-or2n@.9nD59nFF34
di!ital;rite20umb, <=G<39
dela?2corto39
di!ital;rite20umb,L6;39
dela?2corto39
:
dela?2espera39 //8iempo *asta repetir S6S de nue%o
:
'olucin 2:
Ejercicios de Arduino resueltos, Grupo Sabika A
int tcorto@1..9
int tlar!o@5..9
int pausa@5..9
int espera@1...9
int n@.9
%oid setup234 //comien0a la con-i!uracion
pin"ode215,678P7839
:
%oid s234 //comien0a el bucle para la letra S
-or2n@.9nD59nFF3 4
di!ital;rite 215,<=G<39
dela? 2tcorto39
di!ital;rite 215,L6;39
dela? 2tcorto39
:
:
%oid o234 //comien0a el bucle para la letra 6
-or2n@.9nD59nFF3 4
di!ital;rite 215,<=G<39
dela? 2tlar!o39
di!ital;rite 215,L6;39
dela? 2tlar!o39
:
:
%oid loop234 //se ejecuta el bucle principal en el orden si!uiente
s239
dela?2pausa39
o239
dela?2pausa39
s239
dela?2espera39
:
Coc/e 0ant,stico.
'e trata de encender ( apa$ar G leds secuencialmente. =os leds deben estar conectados a los pines
5<%<G<8<:<10 ( 11.
'e deben encender ( apa$ar los leds desde el pin 5 al 11< con un tiempo de encendido ( apa$ado de 50 ms<
mCs tarde se deben encender ( apa$ar los leds desde el pin 11 al 5< con un tiempo de encendido ( apa$ado de
50 ms. =a secuencia se debe repetir indefinidamente.
+l efecto del pro$rama es el de las luces delanteras de nuestro querido I4oc/e fantCsticoI.
8b"etivos:
Damiliari1arse con el entorno de pro$ramacin.
Repasar declaracin de variables tipo lista de valores.
Repasar rdenes de control de pro$rama como: for.
Ejercicios de Arduino resueltos, Grupo Sabika B
1ideo
'olucin:
int ledsGH@4>,(,A,B,E,1.,11:9
int n@.9
int tiempo@>.9
%oid setup23 4 //comien0a la con-i!uracin
-or 2n@.9nDA9nFF3 4
pin"ode2ledsGnH,678P7839
:
:
%oid loop23 4
-or 2n@.9nDA9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
dela?2tiempo39
di!ital;rite 2ledsGnH,L6;39
dela?2tiempo39
:
-or 2n@(9nL@.9n&&3 4
di!ital;rite 2ledsGnH,<=G<39
dela?2tiempo39
di!ital;rite 2ledsGnH,L6;39
dela?2tiempo39
:
:
'olucin 2 ,sin variable de listas de valores ,arra(&&:
int n@.9
int tiempo@>.9
%oid setup23 4 //comien0a la con-i!uracin
-or 2n@>9nD1/9nFF3 4
pin"ode2n,678P7839
:
:
Ejercicios de Arduino resueltos, Grupo Sabika E
%oid loop23 4
-or 2n@>9nD1/9nFF3 4
di!ital;rite 2n,<=G<39
dela?2tiempo39
di!ital;rite 2n,L6;39
dela?2tiempo39
:
-or 2n@119nL@>9n&&3 4
di!ital;rite 2n,<=G<39
dela?2tiempo39
di!ital;rite 2n,L6;39
dela?2tiempo39
:
:
'olucin 3 ,Ee"orando el efecto visual&:
int ledsGH@4>,(,A,B,E,1.,11:9
int n@.9
int tiempo@5.9
%oid setup23 4 //comien0a la con-i!uracin
-or 2n@.9nDA9nFF3 4
pin"ode2ledsGnH,678P7839
:
:
%oid loop23 4
-or 2n@.9nDA9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
dela?2tiempo39
di!ital;rite2ledsGnF1H,<=G<39
dela?2tiempo39
di!ital;rite 2ledsGnH,L6;39
dela?2tiempoM/39
:
-or 2n@(9nL@.9n&&3 4
di!ital;rite 2ledsGnH,<=G<39
dela?2tiempo39
di!ital;rite2ledsGn&1H,<=G<39
dela?2tiempo39
di!ital;rite 2ledsGnH,L6;39
dela?2tiempoM/39
:
:
Secuencia de leds con pulsador$
'e trata de encender ( apa$ar 0 leds secuencialmente al accionar un pulsador. +l pulsador debe estar
conectado al pin 0< ( los leds a los pines 5<%<G ( 8.
'e deben encender ( posteriormente apa$ar los leds desde el pin 5 al 8< con un tiempo de duracin de
encendido ( apa$ado de 200 milise$undos.
Bota: la secuencia principal del pro$rama debe estar reproducida en una funcin a la que llamarC el
pro$rama principal.
8b"etivos:
Damiliari1arse con el entorno de pro$ramacin.
Aprender a conectar una entrada di$ital a arduino ,pulsador&.
Aprender a declarar variables tipo lista de valores.
Ejercicios de Arduino resueltos, Grupo Sabika 1.
Aprender a declarar una funcin ( llamarla cuando sea necesario.
4onocer rdenes como: di$italRead.
4onocer rdenes de control de pro$rama como: 9f.
1ideo
'olucin:
Ejercicios de Arduino resueltos, Grupo Sabika 11
int cadenaledsGH@4>,(,A,B:9
int pulsador@C9
int tiempo@/..9
int n@.9
%oid setup23 4
-or2n@.9nDC9nFF3 4
pin"ode 2cadenaledsGnH,678P7839
:
pin"ode 2pulsador,=KP7839
:
%oid -las*23 4
-or 2n@.9nDC9nFF3 4
di!ital;rite 2cadenaledsGnH,<=G<39
dela? 2tiempo39
di!ital;rite 2cadenaledsGnH,L6;39
dela? 2tiempo39
:
:
%oid loop23 4
i- 2di!italNead2pulsador3@@<=G<3 4
-las* 239
:
:
'olucin 2:
int ledsGH@4>,(,A,B:9
int tiempo@/..9
int pulsador@C9
int n@.9
int %alorpulsador@.9
Ejercicios de Arduino resueltos, Grupo Sabika 1/
%oid setup234
-or2n@.9nDC9nFF34
pin"ode2ledsGnH,678P7839
:
pin"ode2pulsador,=KP7839
Serial,be!in2E(..39
:
%oid monitori0a234
Serial,print2JEl %alor del pulsador es ,,,J39
Serial,println2%alorpulsador39
dela?21...39
:
%oid secuencia234
-or2n@.9nDC9nFF34
di!ital;rite2ledsGnH,<=G<39
dela?2tiempo39
di!ital;rite2ledsGnH,L6;39
dela?2tiempo39
:
:
%oid loop234
%alorpulsador@di!italNead2pulsador39
monitori0a239
i- 2%alorpulsador@@134
secuencia239
:
:
Ruleta de la -ortuna$
'e trata de cinco leds que se van encendiendo ( apa$ando formando una secuencia< el "u$ador debe dar al
pulsador cuando el led intermedio se enciende< si acierta funciona un 1umbador ( la velocidad de la
secuencia aumenta.
=os leds deben estar conectados de los pines 5 a : ,inclusives&< el 1umbador al pin 10< el pulsador al pin 11.
+l tiempo inicial entre encendido ( encendido de leds debe ser 200 ms< si se acierta se decrementa el tiempo
en 20 ms< si el tiempo entre encendidos lle$ase a 10 ms< se devuelve el tiempo a 200 ms.
8b"etivos:
Repaso de conein de entrada di$ital a arduino ,pulsador&.
Repaso de variables tipo lista de valores.
Repaso de declarar una funcin ( llamarla cuando sea necesario.
Repaso de rdenes como: di$italRead.
Repaso de rdenes de control de pro$rama como: Dor< 9f.
Ejercicios de Arduino resueltos, Grupo Sabika 15
1deo
'olucin:
int ledsGH@4>,(,A,B,E:9
int n@.9
int tiempo@/..9
int 0umbador@1.9
int pulsador@119
%oid setup 234
-or2n@.9nD>9nFF3 4
pin"ode2ledsGnH,678P7839
:
pin"ode20umbador,678P7839
pin"ode2pulsador,=KP7839
:
%oid compruebaacierto234
i-2di!italNead2pulsador3@@<=G< OO n@@/3 4
di!ital;rite20umbador,<=G<39
dela? 21...39
di!ital;rite20umbador,L6;39
tiempo@tiempo&/.9
i-2tiempoD1.34
tiempo@/..9:
:
:
%oid loop 23 4
-or2n@.9nD>9nFF3 4
di!ital;rite2ledsGnH,<=G<39
dela?2tiempo39
compruebaacierto239
di!ital;rite2ledsGnH,L6;39
dela?2tiempo39
:
:
Ejercicios de Arduino resueltos, Grupo Sabika 1C
Termostato$
'e trata de un dispositivo que /a$a funcionar un motor ( un led cuando la temperatura supera cierto umbral.
Para ello conectaremos una ntc a la entrada anal$ica 0< un led al pin 5 ( un motor de corriente continua al
pin 10. 4uando la temperatura lle$ue a cierto umbral de volta"e ,entre 0 ( 1020& que nosotros decidamos< se
conectarCn a la ve1 el diodo led ( el motor que puede tener unas aspas de ventilador en su e"e para enfriar la
ntc. AdemCs se deberC visionar el valor de volta"e en la entrada anal$ica ,valor entre 0 ( 1020& en una
consola en el P4.
8b"etivos:
4onein de entrada anal$ica a arduino ,ntc&.
Jrdenes como: analo$Read.
Kisuali1ar datos en consola de puerto serie< con rdenes como: 'erial.be$in< 'erial.print.
Repaso de rdenes de control de pro$rama como: 9f else.
1deo
'olucin:
Ejercicios de Arduino resueltos, Grupo Sabika 1>
int led@>9
int ntc@.9
int motor@1.9
int medida@.9
int ni%el@A..9 //%ariable ue !uarda el lmite de temperatura al ue se acti%a el %entilador
%oid setup234
pin"ode2led,678P7839
pin"ode2motor,678P7839
Serial,be!in2E(..39
:
%oid monitori0a234 //procedimiento ue en%a al puerto serie, para ser ledo en el monitor,
Serial,print2JLa medida es ,,,J39
Serial,println2medida39
Serial,print239
dela?21...39 //para e%itar saturar el puerto serie
:
%oid loop234
medida@analo!Nead2ntc39
monitori0a239
i-2medidaLni%el34 //si la sePal del sensor supera el ni%el marcado+
di!ital;rite2led,<=G<39 //se enciende un a%iso luminoso
di!ital;rite2motor,<=G<39 //arranca el motor
:
else4 // si la sePal estQ por debajo del ni%el marcado
di!ital;rite2led,L6;39
di!ital;rite2motor,L6;39 // el motor se para
:
:
Aumentar ( disminuir intensidad luminosa de led !-ading)$
'e trata aumentar ( disminuir la luminosidad de un led usando la capacidad de ofrecer una tensin variable
que da una salida anal$ica. Para ello se conecta un led al pin 11 ( se provoca que su luminosidad pase de
m3nima a mCima< para lue$o ir de mCima a m3nima. =os valores de salidas anal$icas van del m3nimo 0 al
mCimo 255.
8b"etivos:
4oneionado de salidas anal$icas ,po.er .it/ module p.m&.
4onocer rdenes como analo$Frite.
'olucin:
int luminosidad @ .9 // %ariable para asi!nar la luminosidad al led
int led @ 119 // pin del led
%oid setup23
4
// en el setup no *a? ue con-i!urar nada
:
%oid loop23
4
-or 2luminosidad @ . 9 luminosidad D@ />>9 luminosidad@luminosidadF53 // -ade in 2-rom min to ma'3
4
analo!;rite2led, luminosidad39 // ilumina el led con el %alor asi!nado a luminosidad 2entre . ? />>3
dela?25.39 // espera 5. ms para ue se %ea el e-ecto
Ejercicios de Arduino resueltos, Grupo Sabika 1(
:
-or 2luminosidad @ />>9 luminosidad L@.9 luminosidad@luminosidad&53 // -ade out 2-rom ma' to min3
4
analo!;rite2led, luminosidad39
dela?25.39
:
:
Lu. de led en -uncin de la lu.$
'e trata de un dispositivo que /a$a lucir un led mCs o menos en funcin de la lu1 eterna. Para ello
conectaremos una ldr a la entrada anal$ica 0 ( un led al pin :. 4uando la lu1 se encuentre entre 0 ( 512 el
led debe colocarse en el nivel de potencia mCima ,255&< si la lu1 se encuentra entre valores 512 ( 1020 el
debe lucir al nivel de potencia %0. AdemCs se deberC visionar el valor de volta"e en la entrada anal$ica
,valor entre 0 ( 1020& en una consola en el P4.
8b"etivos:
Repaso conein de entrada anal$ica a arduino ,ldr&.
4oneionado de salidas anal$icas.
Jrdenes como: analo$Frite.
Repaso de visuali1ar datos en consola de puerto serie< con rdenes como: 'erial.be$in< 'erial.print.
Repaso de rdenes de control de pro$rama como: 9f else.
1deo
'olucin:
int led@E9
int ldr@.9
int lu0@.9
%oid setup234
pin"ode2E,678P7839
Serial,be!in2E(..39
:
Ejercicios de Arduino resueltos, Grupo Sabika 1A
%oid monitori0a234
Serial,print2JEl %alor de lu0 es ,,,J39
Serial,println2lu039
dela?21...39
:
%oid loop234
lu0@analo!Nead2ldr39
monitori0a239
i-2lu0D>1/ OO lu0L@.34
analo!;rite2led,/>>39
:
i-2lu0L@>1/ OO lu0D@1./C3 4
analo!;rite2led,(C39
:
:
Lu. de leds en -uncin de la lu.$ 1ersin 2$
'e trata de un dispositivo que /a$a lucir tres leds mCs o menos en funcin de la lu1 eterna. Para ello
conectaremos una ldr a la entrada anal$ica 0 ( los leds a los pines :<10 ( 11. 4uando la lu1 se encuentre
entre G%8 ( 1023 los leds debe colocarse en el nivel de potencia %0< si la lu1 se encuentra entre valores 512 (
G%G los leds deben lucir al nivel de potencia 12G< si la lu1 se encuentra entre valores 25% ( 511 los leds deben
lucir al nivel de potencia 1:1< si la lu1 se encuentra entre valores 0 ( 255 los leds deben lucir al nivel de
potencia 255. AdemCs se deberC visionar el valor de volta"e en la entrada anal$ica ,valor entre 0 ( 1020& en
una consola en el P4.
8b"etivos:
Repaso conein de entrada anal$ica a arduino ,ldr&.
Repaso coneionado de salidas anal$icas.
Repaso rdenes como: analo$Frite.
Repaso de visuali1ar datos en consola de puerto serie< con rdenes como: 'erial.be$in< 'erial.print.
Repaso de rdenes de control de pro$rama como: 9f else.
1deo
'olucin:
int ledsGH@4E,1.,11:9
int tiempo@5..9
int ldr@.9
int n@.9
int lu0@.9
Ejercicios de Arduino resueltos, Grupo Sabika 1B
%oid setup234
-or2n@.9n@/9nFF3 4
pin"ode2ledsGnH,678P7839
:
Serial,be!in2E(..39
:
%oid monitori0a23 4
Serial,print2JEl %alor de la lu0 es ,,,J39
Serial,println2lu039
dela?21...39
:
%oid loop234
lu0@analo!Nead2ldr39
monitori0a239
i- 2lu0D@1./5 OO lu0L@A(B3 4
-or 2n@.9n@/9nFF3 4
analo!;rite2ledsGnH,(C39
dela?2tiempo39
:
:
i- 2lu0D@A(A OO lu0L@>1/3 4
-or 2n@.9n@/9nFF3 4
analo!;rite2ledsGnH,1/A39
dela?2tiempo39
:
:
i- 2lu0D@>11 OO lu0L@/>(3 4
-or 2n@.9n@/9nFF3 4
analo!;rite2ledsGnH,1E139
dela?2tiempo39
:
:
i- 2lu0D@/>> OO lu0L@.3 4
-or 2n@.9n@/9nFF3 4
analo!;rite2ledsGnH,/>>39
dela?2tiempo39
:
:
:
Lu. de leds en -uncin de la lu.$ 1ersin 3$
'e trata de un dispositivo que /a$a lucir tres leds mCs o menos en funcin de la lu1 eterna. Para ello
conectaremos una ldr a la entrada anal$ica 0 ( los leds a los pines :<10 ( 11. +l valor de la entrada
anal$ica 0 estC comprendido entre 0 ( 1020< ( el valor de la luminosidad de los leds entre 0 ( 255. =os leds
deben lucir entre 0 ( 255 en funcin del valor de la entrada anal$ica 0< siendo su valor inversamente
proporcional al valor de la entrada anal$ica 0 ,de 0 a 1020&< o sea a mCs lu1 menor intensidad luminosa de
los leds.
8b"etivos:
Repaso conein de entrada anal$ica a arduino ,ldr&.
Repaso coneionado de salidas anal$icas.
Repaso rdenes como: analo$Frite.
Repaso de visuali1ar datos en consola de puerto serie< con rdenes como: 'erial.be$in< 'erial.print.
Ejercicios de Arduino resueltos, Grupo Sabika 1E
Repaso de rdenes de control de pro$rama como: 9f else.
1deo
'olucin:
int ldr@.9
int ledsGH@4E,1.,11:9
int n@.9
int medida@.9
int lu0led@.9
%oid setup234
-or 2n@.9nD59nFF3 4
pin"ode2ledsGnH,678P7839
:
Serial,be!in2E(..39
:
Ejercicios de Arduino resueltos, Grupo Sabika /.
%oid monitori0a234
Serial,print2JLa medida de lu0 es ,,,J39
Serial,println2medida39
Serial,print2JLa lu0 a dar en los leds es ,,,J39
Serial,println2lu0led39
dela?21...39
:
%oid loop234
medida@analo!Nead2ldr39
lu0led@/>>&2medida/C39
monitori0a239
-or 2n@.9nD59nFF34
analo!;rite2ledsGnH,lu0led39
dela?2/..39
:
:
Termostato con 4elocidad de motor 4ariale$
'e trata de diseAar un dispositivo que /a$a lucir un led ( funcionar el motor de un ventilador cuando la
temperatura lle$ue a cierto valor umbral ,entre 0 ( 1020&. Para ello conectaremos una ntc a la entrada
anal$ica 0< el led al pin 13 ( el motor al pin :. +l motor debe funcionar a cierto nivel de potencia a ele$ir
entre 0 ( 255. AdemCs se deberC visionar el valor de volta"e en la entrada anal$ica ,valor entre 0 ( 1020& en
una consola en el P4.
8b"etivos:
Repaso conein de entrada anal$ica a arduino ,ntc&.
Repaso coneionado de salidas anal$icas.
Repaso rdenes como: analo$Frite.
Repaso de visuali1ar datos en consola de puerto serie< con rdenes como: 'erial.be$in< 'erial.print.
Repaso de rdenes de control de pro$rama como: 9f else.
'olucin:
int motor@E9
int led@159
int ntc@.9
int temperatura@.9
%oid setup234
pin"ode2led,678P7839
pin"ode2motor,678P7839
Serial,be!in2E(..39
:
%oid monitori0a234
Serial,print2JEl %alor de temperatura es ,,,J39
Serial,println2temperatura39
dela?21...39
:
%oid loop234
temperatura@analo!Nead2ntc39
monitori0a239
i-2temperaturaL>5.34
di!ital;rite2led,<=G<39
Ejercicios de Arduino resueltos, Grupo Sabika /1
analo!;rite2motor,/..39
:
else 4
di!ital;rite2led,L6;39
di!ital;rite2motor,L6;39
:
:
Termostato con 4elocidad de motor 4ariale !1ersin 2)$
'e trata de un dispositivo que /a$a $irar un motor mCs o menos rCpido en funcin de la temperatura. Para
ello conectaremos una ntc a la entrada anal$ica 0 ( un led al pin : ( el motor al pin 10. +l valor de la
entrada anal$ica 0 estC comprendido entre 0 ( 1020< ( el valor del la tensin del pin 10 entre 0 ( 5 voltios
,entre 0 ( 255&. +l motor debe $irar a una velocidad entre 0 ( 255 en funcin del valor de la entrada
anal$ica 0< siendo su valor directamente proporcional al valor de la entrada anal$ica 0 ,de 0 a 1020&< o sea
a mCs temperatura mCs velocidad del motor. AdemCs el led del pin : debe encenderse.
8b"etivos:
Repaso conein de entrada anal$ica a arduino ,ntc&.
Repaso coneionado de salidas anal$icas.
Repaso rdenes como: analo$Frite.
Repaso de visuali1ar datos en consola de puerto serie< con rdenes como: 'erial.be$in< 'erial.print.
Repaso de rdenes de control de pro$rama como: 9f else.
'olucin:
Ejercicios de Arduino resueltos, Grupo Sabika //
int ntc@.9
int led@159
int motor@E9
int n@.9
int temperatura@.9
int %elocidadmotor@.9
%oid setup234
pin"ode2led,678P7839
pin"ode2motor,678P7839
Serial,be!in2E(..39
:
%oid monitori0a234
Serial,print2JEl %alor de la temperatura es ,,,J39
Serial,println2temperatura39
dela?21...39
:
%oid loop234
temperatura@analo!Nead2ntc39
monitori0a239
%elocidadmotor@temperatura/C9
di!ital;rite2led,<=G<39
analo!;rite2motor,%elocidadmotor39
:
Aumentar luminosidad de led con pulsador !-ading)$
'e trata de aumentar la luminosidad de un diodo led conectado al pin 11 a trav;s de la activacin de un
pulsador. +l pulsador debe estar conectado al pin 2. Eientras el pulsador estC conectado aumenta la
luminosidad del led /asta lle$ar a su valor mCimo ,255&< si el pulsador se desactiva se mantendrC su
luminosidad /asta que el valor de luminosidad lle$ue a su mCimo ,255& pulsando nuevas veces< si esto
ocurre la luminosidad pasarC a valor nulo ,0&.
8b"etivos:
Repaso de coneionado de entradas di$itales.
Repaso de rden di$italRead.
Repaso de coneionado de salidas anal$icas.
Repaso de rden analo$Frite.
'olucin:
int led @ 119 // ele!imos el pin del led
int pulsador @ /9 // ele!imos el pin del pulsador
int '@.9 // con-i!uramos la %ariable para incrementar el %alor de luminosidad
%oid setup23
4
pin"ode2led, 678P7839 // declaramos led como salida
pin"ode2pulsador, =KP7839 // declaramos pulsador como entrada
:
%oid loop23
4
)*ile 2di!italNead2pulsador3 @@ <=G< OO 'D@/>>3 // c*euea si el pulsador estQ pulsado ? ' es menor
de />>
Ejercicios de Arduino resueltos, Grupo Sabika /5
4
analo!;rite2led,'39 // aumenta la luminosidad del led en -uncin del tiempo de acti%acin de pulsador
dela?2/.39
'@'F59
:
i- 2'L/>>3 4
'@.9 // asi!na el %alor . a '
analo!;rite2led, .39 // apa!a el led
:
:
Control de motor de Corriente Cont5nua !DC) con Arduino$
'e trata de controlar el encendido< sentido de $iro ( potencia de un motor de corriente cont3nua. +l motor
debe $irar en un sentido al tope de potencia durante cinco se$undos< se detendrC durante dos se$undos (
volverC a $irar en sentido contrario a tope de potencia durante cinco se$undos deten3endose mCs tarde.
4omo se$undo paso de la prCctica debe reali1ar la maniobra anterior ( mCs tarde repetirla a mitad de
potencia. +l motor debe estar conectado a los pines G ( 8 para su control de $iro ( usaremos el pin 5 para
reali1ar el control de potencia de arduino usCndolo como salida anal$ica ,PFE&.
Bota: para esta prCctica vamos a utili1ar el c/ip =-2:3-.
8b"etivos:
4onocer c/ip =2:3-: coneionado ( control mediante pines.
Repaso a rdenes como analo$Frite ( di$italFrite.
Antes de reali1ar el pro$rama vamos a dar informacin sobre el c/ip =-2:3- ( reali1ar al$unas
consideraciones sobre el mismo.
'i invertimos la polaridad de un motor de continua ,motor -4& conse$uimos que $ire /acia el lado contrario.
Para poder /acer esto ( para poder suministrar la alimentacin adecuada a este tipo de motores< la solucin
ideal es utili1ar lo que se conoce como un driver de motores -4. +ste driver es un c/ip que alimenta los
motores a un volta"e diferente ,3K en nuestro caso&< ( mediante 2 entradas di$itales controlaremos /acia
donde $ira el motor.
+l c/ip que utili1aremos ,=2:3- o =2:3B+& nos permite controlar 2 motores de continua conectando 0
salidas di$itales de nuestra placa ,2 para cada motor&. -e estas dos salidas de cada motor si ponemos la
primera a L9*L ( la se$unda a =8F $irarC /acia un lado ( si lo /acemos a la inversa $irarC /acia el lado
contrario.
-escripcin 4/ip =2:3-/M,puente L&:
+s un circuito inte$rado o c/ip< que puede ser utili1ado para controlar simultCneamente la velocidad (
direccin de dos motores de continua ,contiene dos puentes L&. =a diferencia entre el modelo =3:3- (
=2:3M< es que el primero viene con diodos de proteccin que evita los daAos producidos por los picos de
volta"e que puede producir el motor..
Ejercicios de Arduino resueltos, Grupo Sabika /C
4ontiene 0 pines di$itales ,2<G<10< 15& son los que ponen 9BP2? en el dibu"o< para controlar la direccin de
los motores< /a( dos por cada motor a controlar. Para controlar su sentido de $iro ten$o que poner un pin a
>L9*L@ ( el otro a >=8F@< si pon$o los dos a >=8F@ el motor se detiene.
=os pines ,1<:& admiten como entrada una seAal PFE< ( se utili1a para controlar la velocidad de los
motores con la t;cnica de modulacin de anc/o de pulso< salidas anal$icas.
=os motores van conectados entre los pines ,3< %& ( ,11<10&< son los que ponen 82?P2? en el $rCfico.
=as patillas 8 ( 1% son las de alimentacin ( se tienen que poner ambas entre 10 ( 15 voltios a una fuente de
alimentacin< as3 como< debemos conectar las patillas nombradas como *B- ,tierra& a 0 voltios de nuestra
fuente de alimentacin.
Ejercicios de Arduino resueltos, Grupo Sabika />
'olucin:
%oid setup23
4
pin"ode2A, 678P7839 // declaramos el pin A como salida
pin"ode2B, 678P7839 // declaramos el pin B como salida
:
%oid secuencia23 // -uncin ue reali0a la secuencia de mo%imiento del motor
4
di!ital;Nite 2A, <=G<39
di!ital;rite 2B9L6;39
dela? 2>...39
di!ital;Nite 2A, L6;39
di!ital;rite 2B9L6;39
dela? 2/...39
di!ital;Nite 2A, L6;39
di!ital;rite 2B9<=G<39
dela? 2>...39
di!ital;Nite 2A, L6;39
di!ital;rite 2B9L6;39
dela? 2/...39
:
%oid loop23
4
analo!;rite 2>, />>39
secuencia239
analo!;rite 2>,1/B39
secuencia239
:
Termmetro de leds$
8 leds lucen o se apa$an e"erciendo de escala termom;trica. +n funcin de la temperatura lucen mCs cantidad
de leds o menos. ?ambi;n se monitori1a en tiempo real ,cada se$undo&< el valor de la temperatura en $rados
4elsius.
Ejercicios de Arduino resueltos, Grupo Sabika /(
1deo
Antes del pro$rama al$unas consideraciones:
a& ?ras /acer varias medidas sobre la variacin de temperatura ( resistencia de la ntc< =oren1o 8lmo etra"o
la si$uiente ecuacin emp3rica< que pone en relacin ambas ma$nitudes de la ntc
< a(udado de 8pen8ffice 4alc< su /orno< su fri$or3fico ( su buen /acer.
b& Lemos coneionado la B?4 a las entradas anal$icas de la si$uiente manera reali1ando un divisor de
tensin.

?eniendo en cuenta que un divisor de tensin $en;rico tiene el si$uiente coneionado<( atiende a la
epresin:

c& 8perando en nuestro caso:


sustitu(endo Kout por su valor:


Ejercicios de Arduino resueltos, Grupo Sabika /A
sustitu(endo Rntc por su valor:

'olucin 1:
int 0umbador@C9 //asi!na a la %ariable 0umbador el %alor C
int ledsGH@4>,(,A,B,E,1.,11,1/:9 //de-ine %ariable en -orma de lista llamada leds con B %alores
int ntc@.9 //asi!na a la %ariable ntc el %alor .
int temperatura@.9 //asi!na a la %ariable temperatura el %alor .
int n@.9 //asi!na a la %ariable n el %alor .
int m@.9 //asi!na a la %ariable m el %alor .
-loat temperatura/@.9
-loat temperatura5@.9
%oid setup234 //comien0a la con-i!uracin
-or 2n@.9nDB9nFF3 4
pin"ode2ledsGnH,678P7839
: //*ace ue los %alores de la lista de la %ariable leds del . al A 2del > al 1/3 lo asi!ne a los pines ? los
declara como de salida
pin"ode20umbador,678P7839 //la %ariable 0umbador 2C3 es el pin ue pone como de salida
Serial,be!in2E(..39 // *ace ue comience la comunicacin con el puerto serie 2pantalla de salida3
:
%oid monitori0a234 //-uncin monitori0a sir%e para mostrar la temperatura de la K8# en %alores desde . a
1./C
Serial,print2JEl %alor de temperatura en !rados #elsius es ,,,J39
//Serial,println2temperatura39
//Serial,println2temperatura/39
Serial,println2temperatura539
dela?21...39
:
%oid apa!aleds234 // -uncin ue sir%e para apa!ar todos los leds
-or 2m@.9mDB9mFF3 4
di!ital;rite2ledsGmH,L6;39
:
:
%oid loop234 //bloue principal del pro!rama, ue se repite *asta el in-inito ? mQs alla
temperatura@analo!Nead2ntc39 // lee el %alor entre . ? 1./C de la entrada anal!ica anal!ica . 2%alor
de la %ariable ntc3
temperatura/@21./C..../temperatura3&1....9
temperatura5@2&/B,E3Mlo!2temperatura/3F//C,>>9
monitori0a239 // llama a la -uncin monitori0a
apa!aleds239 // llama a la -uncin apa!aleds
i-2temperatura5D1/34 //si la temperatura es menor a 1/ !rados, apa!a todos los leds
apa!aleds239
:
i-2temperatura5L1/OOtemperatura5D@1534 // si la temperatura se encuentra entre 1/ ? 15 !rados
enciende el led primero 2salida di!ital >3
di!ital;rite2ledsG.H,<=G<39
:
i- 2temperatura5L15Otemperatura5D@1C3 4 // si la temperatura se encuentra entre 15 ? 1C !rados
enciende los leds 1 ? / 2salidas di!itales > ? (3
di!ital;rite2ledsG.H,<=G<39
di!ital;rite2ledsG1H,<=G<39
Ejercicios de Arduino resueltos, Grupo Sabika /B
:
i- 2temperatura5L1COOtemperatura5D@1>3 4 // si la temperatura se encuentra entre 1C ? 1> !rados
enciende los leds 1,/ ? 5 2salidas di!itales >,( ? A3
di!ital;rite2ledsG.H,<=G<39
di!ital;rite2ledsG1H,<=G<39
di!ital;rite2ledsG/H,<=G<39
:
i- 2temperatura5L1>OOtemperatura5D@1(3 4 // si la temperatura se encuentra entre 1> ? 1( !rados
enciende los leds 1,/,5 ? C 2salidas di!itales >,(,A ? B3
di!ital;rite2ledsG.H,<=G<39
di!ital;rite2ledsG1H,<=G<39
di!ital;rite2ledsG/H,<=G<39
di!ital;rite2ledsG5H,<=G<39
:
i- 2temperatura5L1(OOtemperatura5D@1A3 4 // si la temperatura se encuentra entre 1( ? 1A !rados
enciende los leds 1,/,5,C ? > 2salidas di!itales >,(,A,B ? E3
di!ital;rite2ledsG.H,<=G<39
di!ital;rite2ledsG1H,<=G<39
di!ital;rite2ledsG/H,<=G<39
di!ital;rite2ledsG5H,<=G<39
di!ital;rite2ledsGCH,<=G<39
:
i- 2temperatura5L1AOOtemperatura5D@1B3 4 // si la temperatura se encuentra entre 1A ? 1B !rados
enciende los leds 1,/,5,C,> ? ( 2salidas di!itales >,(,A,B,E ? 1.3
di!ital;rite2ledsG.H,<=G<39
di!ital;rite2ledsG1H,<=G<39
di!ital;rite2ledsG/H,<=G<39
di!ital;rite2ledsG5H,<=G<39
di!ital;rite2ledsGCH,<=G<39
di!ital;rite2ledsG>H,<=G<39
:
i- 2temperatura5L1BOOtemperatura5D@1E3 4 // si la temperatura se encuentra entre 1B ? 1E !rados
enciende los leds 1,/,5,C,>,( ? A 2salidas di!itales >,(,A,B,E,1. ? 113
di!ital;rite2ledsG.H,<=G<39
di!ital;rite2ledsG1H,<=G<39
di!ital;rite2ledsG/H,<=G<39
di!ital;rite2ledsG5H,<=G<39
di!ital;rite2ledsGCH,<=G<39
di!ital;rite2ledsG>H,<=G<39
di!ital;rite2ledsG(H,<=G<39
:
i- 2temperatura5L1EOOtemperatura5D@/.3 4 // si la temperatura se encuentra entre 1E ? /. !rados
enciende los leds 1,/,5,C,>,(,A ? B 2salidas di!itales >,(,A,B,E,1.,11 ? 1/3
di!ital;rite2ledsG.H,<=G<39
di!ital;rite2ledsG1H,<=G<39
di!ital;rite2ledsG/H,<=G<39
di!ital;rite2ledsG5H,<=G<39
di!ital;rite2ledsGCH,<=G<39
di!ital;rite2ledsG>H,<=G<39
di!ital;rite2ledsG(H,<=G<39
di!ital;rite2ledsGAH,<=G<39
:
i- 2temperatura5L/.3 4 // si la temperatura es ma?or de /. !rados enciende todos los leds 1,/,5,C,>,(,A ? B
2salidas di!itales >,(,A,B,E,1.,11 ? 1/3
di!ital;rite2ledsG.H,<=G<39
di!ital;rite2ledsG1H,<=G<39
Ejercicios de Arduino resueltos, Grupo Sabika /E
di!ital;rite2ledsG/H,<=G<39
di!ital;rite2ledsG5H,<=G<39
di!ital;rite2ledsGCH,<=G<39
di!ital;rite2ledsG>H,<=G<39
di!ital;rite2ledsG(H,<=G<39
di!ital;rite2ledsGAH,<=G<39
:
dela?21...39 // espera un se!undo
:
Otra solucin usando -or para el encendido de los leds6
'olucin 2:
int 0umbador@C9 //asi!na a la %ariable 0umbador el %alor C
int ledsGH@4>,(,A,B,E,1.,11,1/:9 //de-ine %ariable en -orma de lista llamada leds con B %alores
int ntc@.9 //asi!na a la %ariable ntc el %alor .
int temperatura@.9 //asi!na a la %ariable temperatura el %alor .
int n@.9 //asi!na a la %ariable n el %alor .
int m@.9 //asi!na a la %ariable m el %alor .
-loat temperatura/@.9
-loat temperatura5@.9
%oid setup234 //comien0a la con-i!uracin
-or 2n@.9nDB9nFF3 4
pin"ode2ledsGnH,678P7839
: //*ace ue los %alores de la lista de la %ariable leds del . al A 2del > al 1/3 lo asi!ne a los pines ? los
declara como de salida
pin"ode20umbador,678P7839 //la %ariable 0umbador 2C3 es el pin ue pone como de salida
Serial,be!in2E(..39 // *ace ue comience la comunicacin con el puerto serie 2pantalla de salida3
:
%oid monitori0a234 //-uncin monitori0a sir%e para mostrar la temperatura de la K8# en %alores desde . a
1./C
Serial,print2JEl %alor de temperatura en !rados #elsius es ,,,J39
//Serial,println2temperatura39
//Serial,println2temperatura/39
Serial,println2temperatura539
dela?21...39
:
%oid apa!aleds234 // -uncin ue sir%e para apa!ar todos los leds
-or 2m@.9mDB9mFF3 4
di!ital;rite2ledsGmH,L6;39
:
:
%oid loop234 //bloue principal del pro!rama, ue se repite *asta el in-inito ? mQs alla
temperatura@analo!Nead2ntc39 // lee el %alor entre . ? 1./C de la entrada anal!ica anal!ica . 2%alor
de la %ariable ntc3
temperatura/@21./C..../temperatura3&1....9
temperatura5@2&/B,E3Mlo!2temperatura/3F//C,>>9
monitori0a239 // llama a la -uncin monitori0a
apa!aleds239 // llama a la -uncin apa!aleds
i-2temperatura5D1/34 //si la temperatura es menor a 1/ !rados, apa!a todos los leds
apa!aleds239
Ejercicios de Arduino resueltos, Grupo Sabika 5.
:
i-2temperatura5L1/OOtemperatura5D@1534 // si la temperatura se encuentra entre 1/ ? 15 !rados
enciende el led primero 2salida di!ital >3
-or 2n@.9nD19nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
i- 2temperatura5L15Otemperatura5D@1C3 4 // si la temperatura se encuentra entre 15 ? 1C !rados
enciende los leds 1 ? / 2salidas di!itales > ? (3
-or 2n@.9nD/9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
i- 2temperatura5L1COOtemperatura5D@1>3 4 // si la temperatura se encuentra entre 1C ? 1> !rados
enciende los leds 1,/ ? 5 2salidas di!itales >,( ? A3
-or 2n@.9nD59nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
i- 2temperatura5L1>OOtemperatura5D@1(3 4 // si la temperatura se encuentra entre 1> ? 1( !rados
enciende los leds 1,/,5 ? C 2salidas di!itales >,(,A ? B3
-or 2n@.9nDC9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
i- 2temperatura5L1(OOtemperatura5D@1A3 4 // si la temperatura se encuentra entre 1( ? 1A !rados
enciende los leds 1,/,5,C ? > 2salidas di!itales >,(,A,B ? E3
-or 2n@.9nD>9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
i- 2temperatura5L1AOOtemperatura5D@1B3 4 // si la temperatura se encuentra entre 1A ? 1B !rados
enciende los leds 1,/,5,C,> ? ( 2salidas di!itales >,(,A,B,E ? 1.3
-or 2n@.9nD(9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
i- 2temperatura5L1BOOtemperatura5D@1E3 4 // si la temperatura se encuentra entre 1B ? 1E !rados
enciende los leds 1,/,5,C,>,( ? A 2salidas di!itales >,(,A,B,E,1. ? 113
-or 2n@.9nDA9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
i- 2temperatura5L1EOOtemperatura5D@/.3 4 // si la temperatura se encuentra entre 1E ? /. !rados
enciende los leds 1,/,5,C,>,(,A ? B 2salidas di!itales >,(,A,B,E,1.,11 ? 1/3
-or 2n@.9nDB9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
i- 2temperatura5L/.3 4 // si la temperatura es ma?or de /. !rados enciende todos los leds 1,/,5,C,>,(,A ? B
2salidas di!itales >,(,A,B,E,1.,11 ? 1/3
-or 2n@.9nDB9nFF3 4
di!ital;rite 2ledsGnH,<=G<39
:
:
dela?21...39 // espera un se!undo
Ejercicios de Arduino resueltos, Grupo Sabika 51
:
Graadora de ritmos$
'e trata de una ca"a dnde se dan unos $olpes con una cadencia< ( posteriormente el 1umbador pie1oel;ctrico
del sistema repite los $olpes dados.
'olucin:
int led@159
int pie0oelectrico@19
int medida@.9
int ni%el @ >9 //%alor de la sePal anal!ica ue establecemos como lmite de la sensibilidad del sensor
int 0umbador@1.9
int numero!olpes @ .9 //%ariable ue lle%a la cuenta del nR de !olpes
int tiempo @ .9 //%ariable ue lle%a la cuenta del tiempo entre cada par de !olpes
int n@.9
int cadenatiemposGH@ 4.,.,.,.,.,.,.,.,.,.,.,.,.,.,:9 //cadena en la ue se !uardarQn los tiempos entre
!olpes
int cadena!olpesGH@4/,5,C,>,(,A,B,E,1.,11,1/,15,1C,1>:9 //cadena en la ue lle%amos la cuenta de los
!olpes
%oid setup23 4
pin"ode2led,678P7839
pin"ode20umbador,678P7839
Serial,be!in2E(..39 //inicia la comunicacin con el puerto serie del ordenador ?
: //establece la %elocidad de trans-erencia
%oid !uardatiempos234 //procedimiento ue !uarda los tiempos entre !olpes en una cadena
-or 2n@. 9nD1C 9nFF34
i- 2numero!olpes@@cadena!olpesGnH34 //compara el %alor del contador de !olpes con los %alores de la
cadena
cadenatiemposGnH @tiempo9 //para asociar el primer tiempo con / !olpes, el se!undo con 5 !olpes ? as
sucesi%amente
: //a tra%Ss de la posicin ue ocupan en las cadenas
:
:
%oid si-inrepro234 //procedimiento ue reproduce, con una se cuencia de pitidos la secuencia de !olpes
dela?2>..39 //las tres primeras lneas producen el primer pitido
di!ital;rite20umbador, <=G<39
dela?2>.39
di!ital;rite20umbador, L6;39
-or2n@. 9nD2numero!olpes&139 nFF34 //iteracin ue produce los pitidos a partir del se!undo
dela?2cadenatiemposGnHM1..39 //incorporando los tiempos ue se *an !uardado, el multiplicar por 1.. es
un ajuste emprico
di!ital;rite20umbador, <=G<39 //ue tiene en cuenta los tiempos ue pasan mientras se ejecuta el
pro!rama
dela?2>.39
di!ital;rite20umbador, L6;39
: //cuando termina la reproduccin+
numero!olpes@.9 //se reinician las %ariables para poder comen0ar con otra secuencia
tiempo@.9
:
%oid loop23 4
Ejercicios de Arduino resueltos, Grupo Sabika 5/
medida @ analo!Nead2pie0oelectrico39 //actuali0amos el %alor de la sePal del sensor
i- 2medida L@ ni%el3 4 //si la sePal supera el lmite
di!ital;rite2led,<=G<39 //se enciende el LEI
Serial,print2J86#T J39 //se en%an caracteres por el puerto serie
Serial,println2medida39
dela?21..39
numero!olpes @ numero!olpesF19 //aumenta en uno el contador de !olpes
!uardatiempos239 //!uardamos el tiempo en su cadena
tiempo @ .9 //cada %e0 ue se !uarda un tiempo el contador se pone a . para empe0ar a contar el si!uiente
dela?21..39 //espera para no obtener una lectura mUltiple de un solo !olpe
di!ital;rite2led,L6;39
: //si no *a? una sePal de intensidad su-iciente+
dela?21..39 //espera para no saturar el puerto serie
tiempo @ tiempo F19 //aumenta el contador de tiempo
i-22numero!olpesL.3OO2tiempo L@5.334 //si pasa muc*o tiempo despuSs de al menos un !olpe+
di!ital;rite2led,<=G<39 //se considera ue se *a terminado ? comien0a la reproduccin
si-inrepro239
di!ital;rite2led,L6;39
:
:
Ejercicios de Arduino resueltos, Grupo Sabika 55
0uentes de conocimiento utili.adas6
/ttp://....arduino.cc/
/ttp://....arduino.cc/es/
/ttp://arduino.cc/es/'ecundaria/'ecundaria
/ttp://arduino!ubuntu.blo$spot.com/
/ttp://visualp5.net/visualp5net!taller!arduino./tml
/ttps://sites.$oo$le.com/a/divinec/ild/i$/sc/ool.or$/electronics/Lome/Arduino!=essons
=ibro N4omputacin D3sica en 'ecundariaO de "arco Antonio Nodr!ue0 VernQnde0 =ibro publicado
ba"o licencia 4reative4ommons!Attribution!'/are AliPe 2.0:
I+"ercicios de Arduino resueltosI is licensed under a 4reative 4ommons Reconocimiento!Bo comercial 3.0
+spaAa =icense.
Ejercicios de Arduino resueltos, Grupo Sabika 5C

You might also like