Está en la página 1de 34

EJERCICIOS DE ARDUINO RESUELTOS

Grupo Sabika

Revisado: 18/11/2013
Ejercicios de Arduino resueltos, Grupo Sabika 1

Instalar Entorno de Programacin Arduino en U untu !"#$"#% "#$#&% '$"# ( '$#&)


Para la instalacin de Arduino se requieren ciertos paquetes para su funcionamiento... libr t !"ava // Librera para comunicacin serial avr!libc # $cc!avr // Pa uete 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 cone ionar 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 .um ador$


'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 cone ionar 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 //A ui 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

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

%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 cone in 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: 4one in 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 mC ima< para lue$o ir de mC ima a m3nima. =os valores de salidas anal$icas van del m3nimo 0 al mC imo 255. 8b"etivos: 4one ionado 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 e terna. 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 mC ima ,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 cone in de entrada anal$ica a arduino ,ldr&. 4one ionado 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 e terna. 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 cone in de entrada anal$ica a arduino ,ldr&. Repaso cone ionado 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 e terna. 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 cone in de entrada anal$ica a arduino ,ldr&. Repaso cone ionado 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 4aria le$


'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 cone in de entrada anal$ica a arduino ,ntc&. Repaso cone ionado 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 4aria le !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 cone in de entrada anal$ica a arduino ,ntc&. Repaso cone ionado 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 mC imo ,255&< si el pulsador se desactiva se mantendrC su luminosidad /asta que el valor de luminosidad lle$ue a su mC imo ,255& pulsando nuevas veces< si esto ocurre la luminosidad pasarC a valor nulo ,0&. 8b"etivos: Repaso de cone ionado de entradas di$itales. Repaso de rden di$italRead. Repaso de cone ionado 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*e uea 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-: cone ionado ( 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 e tra"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 cone ionado 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 cone ionado<( atiende a la e presin:

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 //blo ue 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 //blo ue 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

Gra adora 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