Beruflich Dokumente
Kultur Dokumente
Grupo Sabika
Revisado: 18/11/2013
Ejercicios de Arduino resueltos, Grupo Sabika 1
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 :
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.
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 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 : :
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:
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.
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:
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 : :
: -or 2luminosidad @ />>9 luminosidad L@.9 luminosidad@luminosidad&53 // -ade out 2-rom ma' to min3 4 analo!;rite2led, luminosidad39 dela?25.39 : :
1deo 'olucin: int led@E9 int ldr@.9 int lu0@.9 %oid setup234 pin"ode2E,678P7839 Serial,be!in2E(..39 :
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 : :
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 : : :
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 : :
//
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 :
/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 : :
/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.
/>
'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.
/(
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:
/A
'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
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
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 : :
55
I+"ercicios de Arduino resueltosI is licensed under a 4reative 4ommons Reconocimiento!Bo comercial 3.0 +spaAa =icense.
5C