EJERCICIOS DE ARDUINO RESUELTOS Grupo Sabika
Revisado: 18/11/2013 «Ejercicios de Arduino resueltos», Grupo Sabika
1
Instalar Entorno de Programación Arduino en Uuntu !"#$"#% "#$#&% '$"# ( '$#&) Para la instalación de Arduino se requieren ciertos paquetes para su funcionamiento... librt!"ava // Librería para comunicación serial avr!libc # $cc!avr // Pauete de compiladores para la pro!ramación de "icrocontroladores Atmel con Len!uaje # sun!"ava%!"re // "otor $a%a 1& Puede instalar estos paquetes desde '(naptic como si$ue: 'istema ) Administración ) *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!lecodecom/-iles/arduino&..1t!0 Para versiones de % bits ,amd%& )!et *ttp+//-ilesarduinocc/do)nloads/arduino&..1&t!0 3& -escomprimalo... Realiando doble clic sobre el arcivador o en una terminal con tar '%- arduino&..1t!0 & bquese en la carpeta... 4on el nave$ador de arcivos o mediante una terminal cd arduino&..1 5& +"ec6telo 7 Realiando doble clic sobre el arcivo llamado arduino o mediante un terminal /arduino • •
•
tra forma mu( sencilla de 9nstalar Arduino en buntu .10 ( 10.0 es a trav;s del repositorio de Arduino para buntu< 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 *. Aade el repositorio de ubuntu a las or$enes de softare de tu equipo. 2& >sudo apt!$et update@. Actutalia los or$enes de softare de tu equipo ( por tanto los repositorios. 3& >sudo apt!$et install arduino@. 9nstala Arduino con todas sus dependencias. & Arduino aparece en el >men6 Aplicaciones ) Pro$ramación ) Arduino@. Bota: las ordenes que ten$an >sudo@ delante requieren permisos de administrador ( por tanto pedirC la contrasea de adminsitrador. +n la actual buntu 10.10 desde el >centro de softare de buntu@ 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 luca durante 500 ms ( que se apa$ue durante 100 ms< este proceso se repetirC cclicamente. b"etivos: Reconocer partes de la placa. • Aprender a coneionar leds a la placa. • • Damiliariarse con el entorno de pro$ramación. • Reconocer las partes de un pro$rama de arduino. 4onocer órdenes como: pinEode< di$italFrite ( dela(. •
ídeo
'olución: %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 > al pin 2salida3 15 dela? 2>..39 //espera >.. ms pin 15 con > «Ejercicios de Arduino resueltos», Grupo Sabika
5
di!ital;rite215, L6;39 //en%ia . al pin 2salida3 15 dela? 21..39 //espera 1.. ms pin 15 con . :
Secuencia de leds$ 'e trata de encender ( apa$ar leds secuencialmente. =os leds deben estar conectados a los pines 5<%
ideo 'olución 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"ode2,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;rite2,<=G<39 dela?2tiempo39 «Ejercicios de Arduino resueltos», Grupo Sabika
C
di!ital;rite2,L6;39 dela?2tiempo39 di!ital;rite2B,<=G<39 dela?2tiempo39 di!ital;rite2B,L6;39 dela?2tiempo39 : 'olución 2: int tiempo@..9 int n9 %oid setup23 4 //comien0a la con-i!uracion -or 2n@>9nD9nFF3 4 pin"ode 2n, 678P7839 : : %oid secuencia23 4 -or 2n@>9nD9nFF3 4 di!ital;rite 2n, <=G<39 dela? 2tiempo39 di!ital;rite 2n, L6;39 dela? 2tiempo39 : : %oid loop23 4 secuencia239 : 'olución 3: int ledsH@4>,(,,B:9 // Ieclara %ariables tipo lista de %alores int tiempo@..9 int
[email protected] %oid setup23 4 //comien0a la con-i!uracion -or
[email protected] 4 pin"ode 2ledsnH, 678P7839 : : %oid secuencia23 4 -or
[email protected] 4 di!ital;rite 2ledsnH, <=G<39 dela? 2tiempo39 di!ital;rite 2ledsnH, L6;39 dela? 2tiempo39 : : %oid loop23 4 secuencia239 :
Cruce de sem,-oros$ 'e trata de un cruce de semCforos controlado por arduino< para ello utiliaremos en el primer semCforo los pines 3 ,led ro"o&< ,led ambar&< 5 ,led verde&< en el se$undo semCforo utiliaremos 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
>
b"etivos: • Damiliariarse con el entorno de pro$ramación. • Aprender a declarar variables tipo lista de valores. 'olución: int ledsH@45,C,>,(,,B39 int
[email protected] int tiempo@>..9 int n9 %oid setup23 4 -or
[email protected](9nFF3 4 pin"ode 2ledsnH,678P7839 : : %oid loop 23 4 di!ital;rite 2leds.H,<=G<39 di!ital;rite 2leds>H,<=G<39 dela? 2tiempo139 di!ital;rite 2leds>H,L6;39 di!ital;rite 2ledsCH,<=G<39 dela? 2tiempo39 di-ital;riteleds.H,L6;39 di!ital;rite 2ledsH,<=G<39 di!ital;rite 2ledsCH,L6;39 di!ital;rite 2leds5H,<=G<39 dela? 2tiempo139 di!ital;rite 2ledsH,L6;39 di!ital;rite2leds1H,<=G<39 dela? 2tiempo39 :
SOS con .umador$ 'e trata de un umbador que en códi$o morse ,pitidos lar$os/cortos& especifica una palabra< en nuestro caso ''. Para el que no lo sepa< la ' son tres seales ac6sticas de corta duración ( la tres seales ac6stica de lar$a duración. +l umbador debe estar conectado al pin 13< los pitidos cortos tendrCn una duración de 100 ms ( los lar$os 300 ms. +ntre letra ( letra debe pasar un tiempo de 300 ms ( entre ''s debe aber un tiempo de 1000 ms. Bota: -ebes usar variables para $uardar los t iempos que vas a usar. b"etivos: • Reconocer partes de la placa. • Aprender a coneionar un umbador a la placa. Damiliariarse con el entorno de pro$ramación. • 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
(
ideo 'olución: int
[email protected] //Ieclara la %ariable de ar!umento entero JcortoJ ? la iniciali0a con el %alor 1.. 2letra S3 int
[email protected] //tiempo entre letra ? letra int
[email protected] //%ariable de ar!umento entero Jlar!oJ ? la iniciali0a con el %alor 5.. 2letra 63 int
[email protected] //%ariable ar!umento entero JesperaJ ? la iniciali0a con el %alor 1... 2tiempo entre S6S & S6S3 int
[email protected] int 0umb@159 //P=K di!ital al ue conectamos el 0umbador %oid setup234 //comien0a la con-i!uracion pin"ode20umb,678P7839 : %oid loop234
[email protected] //=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
[email protected] //Aui esta la 6 di!ital;rite20umb, <=G<39 dela?2lar!o39 di!ital;rite20umb,L6;39 dela?2lar!o39 : dela?2pausa39
[email protected] di!ital;rite20umb, <=G<39 dela?2corto39 di!ital;rite20umb,L6;39 dela?2corto39 : dela?2espera39 //8iempo *asta repetir S6S de nue%o : 'olución 2: «Ejercicios de Arduino resueltos», Grupo Sabika
int
[email protected] int
[email protected] int
[email protected] int
[email protected] int
[email protected] %oid setup234 //comien0a la con-i!uracion pin"ode215,678P7839 : %oid s234 //comien0a el bucle para la letra S
[email protected] 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
[email protected] 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<%
«Ejercicios de Arduino resueltos», Grupo Sabika
B
ideo 'olución: int ledsH@4>,(,,B,,1.,11:9 int
[email protected] int tiempo@>.9 %oid setup23 4 //comien0a la con-i!uración -or
[email protected]9nFF3 4 pin"ode2ledsnH,678P7839 : : %oid loop23 4 -or
[email protected]9nFF3 4 di!ital;rite 2ledsnH,<=G<39 dela?2tiempo39 di!ital;rite 2ledsnH,L6;39 dela?2tiempo39 : -or 2n@(9n@.9n&&3 4 di!ital;rite 2ledsnH,<=G<39 dela?2tiempo39 di!ital;rite 2ledsnH,L6;39 dela?2tiempo39 : : 'olución 2 ,sin variable de listas de valores ,arra(&&: int
[email protected] int tiempo@>.9 %oid setup23 4 //comien0a la con-i!uración -or 2n@>9nD19nFF3 4 pin"ode2n,678P7839 : :
«Ejercicios de Arduino resueltos», Grupo Sabika
%oid loop23 4 -or 2n@>9nD19nFF3 4 di!ital;rite 2n,<=G<39 dela?2tiempo39 di!ital;rite 2n,L6;39 dela?2tiempo39 : -or 2n@119n@>9n&&3 4 di!ital;rite 2n,<=G<39 dela?2tiempo39 di!ital;rite 2n,L6;39 dela?2tiempo39 : : 'olución 3 ,Ee"orando el efecto visual&: int ledsH@4>,(,,B,,1.,11:9 int
[email protected] int
[email protected] %oid setup23 4 //comien0a la con-i!uración -or
[email protected]9nFF3 4 pin"ode2ledsnH,678P7839 : : %oid loop23 4 -or
[email protected]9nFF3 4 di!ital;rite 2ledsnH,<=G<39 dela?2tiempo39 di!ital;rite2ledsnF1H,<=G<39 dela?2tiempo39 di!ital;rite 2ledsnH,L6;39 dela?2tiempoM39 : -or 2n@(9n@.9n&&3 4 di!ital;rite 2ledsnH,<=G<39 dela?2tiempo39 di!ital;rite2ledsn&1H,<=G<39 dela?2tiempo39 di!ital;rite 2ledsnH,L6;39 dela?2tiempoM39 : :
Secuencia de leds con pulsador$ 'e trata de encender ( apa$ar leds secuencialmente al accionar un pulsador. +l pulsador debe estar conectado al pin < ( los leds a los pines 5<%
«Ejercicios de Arduino resueltos», Grupo Sabika
1.
• • •
Aprender a declarar una función ( llamarla cuando sea necesario. 4onocer órdenes como: di$italRead. 4onocer órdenes de control de pro$rama como: 9f.
ideo 'olución:
«Ejercicios de Arduino resueltos», Grupo Sabika
11
int cadenaledsH@4>,(,,B:9 int pulsador@C9 int tiempo@..9 int
[email protected] %oid setup23 4
[email protected] 4 pin"ode 2cadenaledsnH,678P7839 : pin"ode 2pulsador,=KP7839 : %oid -las*23 4 -or
[email protected] 4 di!ital;rite 2cadenaledsnH,<=G<39 dela? 2tiempo39 di!ital;rite 2cadenaledsnH,L6;39 dela? 2tiempo39 : : %oid loop23 4 i- 2di!italNead2pulsador3@@<=G<3 4 -las* 239 : : 'olución 2: int ledsH@4>,(,,B:9 int tiempo@..9 int pulsador@C9 int
[email protected] int %
[email protected] «Ejercicios de Arduino resueltos», Grupo Sabika
1
%oid setup234
[email protected] pin"ode2ledsnH,678P7839 : pin"ode2pulsador,=KP7839 Serialbe!in2(..39 : %oid monitori0a234 Serialprint2JEl %alor del pulsador es J39 Serialprintln2%alorpulsador39 dela?21...39 : %oid secuencia234
[email protected] di!ital;rite2ledsnH,<=G<39 dela?2tiempo39 di!ital;rite2ledsnH,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 umbador ( l a velocidad de la secuencia aumenta. =os leds deben estar conectados de los pi nes 5 a ,inclusives&< el umbador 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. b"etivos: Repaso de coneión de entrada di$ital a arduino ,pulsador&. • • Repaso de variables tipo lista de valores. • Repaso de declarar una función ( 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