Beruflich Dokumente
Kultur Dokumente
Grupo Sabika
Revisado: 20/11/2010
Ejercicios de Arduino resueltos, Grupo Sabika 1
EJERCICIOS DE ARDUI+O$
Led parpadeante$
%e trata de conectar un led al pin1.< -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 conexionar 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 & /. %e deben encender & posteriormente apa"ar los leds desde el pin 5 al /< 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 declarar 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 .: 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 . *led ro o$< 0 *led ambar$< 5 *led verde$< en el se"undo semCforo utili1aremos los pines # *led ro o$< G *led ambar$ & / *led verde$. =a secuencia de funcionamiento debe ser : ro o 1 H verde 2 durante . se"undos< ro o 1 H ambar 2 durante 500 ms< verde 1 H ro o 2 durante . se"undos< ambar 1 - < ro o 2 durante 500 ms.
>
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 :
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:
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</<:<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.
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 : :
%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 . *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 : :
4onocer rdenes como: di"italRead. 4onocer rdenes de control de pro"rama como: 9f.
1ideo %olucin:
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 conexin 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.
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: 4onexin 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:
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 : :
dela?25.39 : :
1deo %olucin: int led@E9 int ldr@.9 int lu0@.9 %oid setup234 pin"ode2E,678P7839 Serial,be!in2E(..39 : %oid monitori0a234 Serial,print2JEl %alor de lu0 es ,,,J39 Serial,println2lu039 dela?21...39 :
Ejercicios de Arduino resueltos, Grupo Sabika 1A
%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 : :
1deo %olucin: int ledsGH@4E,1.,11:9 int tiempo@5..9 int ldr@.9 int n@.9 int lu0@.9 %oid setup234 -or2n@.9n@/9nFF3 4 pin"ode2ledsGnH,678P7839 : Serial,be!in2E(..39
Ejercicios de Arduino resueltos, Grupo Sabika 1B
: %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 : : :
1E
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 : %oid monitori0a234
Ejercicios de Arduino resueltos, Grupo Sabika /.
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 : :
//
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 :
: :
Termmetro de leds$
/ 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.
1deo Antes del pro"rama al"unas consideraciones: a$ ?ras -acer varias medidas sobre la variacin de temperatura & resistencia de la ntc< =oren1o 8lmo extra 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 conexionado la B?4 a las entradas anal"icas de la si"uiente manera reali1ando un divisor de tensin.
Ejercicios de Arduino resueltos, Grupo Sabika /C
?eniendo en cuenta que un divisor de tensin "en;rico tiene el si"uiente conexionado<& atiende a la expresin:
%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
Ejercicios de Arduino resueltos, Grupo Sabika />
//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 : 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
Ejercicios de Arduino resueltos, Grupo Sabika /(
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 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 leds5 %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
/A
: //*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 -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 : :
/B
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 :
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 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 : :
5.
I) ercicios de Arduino resueltosI is licensed under a 4reative 4ommons Reconocimiento-Bo comercial ..0 )spaAa =icense.
51