0% encontró este documento útil (0 votos)
165 vistas174 páginas

Arduino Libro de Proyectos Oficial

Arduino Libro de Proyectos Kit oficial

Cargado por

Luk Grijan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
165 vistas174 páginas

Arduino Libro de Proyectos Oficial

Arduino Libro de Proyectos Kit oficial

Cargado por

Luk Grijan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF o lee en línea desde Scribd
Está en la página 1/ 174
ARDUINO LIBRO DE PROYECTOS tos seo Z 2 ol aaa i ml te ARDUINO LIBRO DE PROYECTOS lo autores del libro de proyectos de Arduino en inglés “ARDUINO PROJECTS BOOK": Roe eet eet Corea cals DISENO Y DIRECCION DE ARTE srt) Glogio Olivero, Mario Clardull, Vanessa Poll, Michelle Netiolo en La a aad Coenen emer os Pee Perot Se) ene ce eco ened rane eat} Michael shiloh, Michelle Nebiolo, Katia De Coi, Alessandro Buat, Federico Vanzati, David Mell, Luisa Castiglion| aS Muchas gracias a toda la comunidad de Arduino por su continua Cie a ‘También gracias en especial al equipo de Fritzing: algunas de las Tee ee ee ee libro son tomadas 0 modificadas del proyecto Open-Source de a ene ) Gracias de corazén a Paul Badger por la libreria ‘CapacitveSensor” Pe aoc ety Dee ee crete Tots Creative Commons Reconocimiento - NoComercial-Compartiigual 3.0 del 2012 por Arduino LIC. Esto quiere decir que puede copiar, Ree ete Geer ee ee eer et ry manera que sugiera que estamos de acuerdo con usted o con el uso Paneer eet ceeres nen ete Tata econ ‘Términos completos de a licencia: Orme ee ee ey Dee ee een ors Lamencién de otros productos y nombres de compafias dentro de este libro también son marcas de sus respectivas compafias ene eect ee es bsico sin garantias adicionales. i bien todas las precauciones eee ere ones Dre a enone ere Eres el perjuicio producidos por cualquier persona entidad ene Eeeree a ener er ite nieetr eee eer nd ee eee eee ee ee eee TCL? Arduino. Ce ee cee ey ET Segunda edicién, Mayo 2013, reece ‘Autor: Florentino Blas Femngndez Cueto (Tino Fernindez) Eremns CO ee a NoComercal Compartirigual 3.0 del 2015 por futureworkss aad iguel Carlos de Castro Miguel, Ingeniero Quimico y Profesor de Tecnologia Poets a ed ‘Traducido by Tino Ferndndez Cueto 00 INTRODUCCION 01 Conozca sus herramientas 02 Interface de nave espacial 03 Medidor de enamoramiento 04 Lampara de mezcla de colores 05 Indicador del estado de dnimo 06 Theremin controlado por luz 07 Teclado musical 08 Reloj de arena digital 09 Rueda de colores motorizada 10 Zootropo 11 La Bola de Cristal 12 Mecanismo de bloqueo secreto 13 Lampara sensible al tacto 14 Retocar el logotipo de Arduino 15 Hackear botones AZ Glosario Apuntes y libros recomendados ‘Traducido by Tino Ferndndez Cueto Todo el mundo, cada dia, utiliza la tecnologia. La mayoria de nosotros deja la programacién a ingenieros porque pensamos que programar y la electrénica son complicadas y dificiles de entender. En la actualidad estas actividades pueden ser divertidas y excitantes. Gracias a Arduino, disefadores, artistas, personas con un hobby y estudiantes de todas las edades estan aprendiendo a crear cosas que se iluminan, mueven y responden ante personas, animales, plantas y el resto del mundo. Durante afios Arduino ha sido usado como “cerebro” en miles de proyectos, cada uno més creativo que el anterior. Una comunidad de colaboradores a nivel mundial ha participado en esta plataforma de cédigo abierto desde personas dedicadas a la programacién, fabricantes, los cuales han contribuido a crear lun nuevo mundo de participacién, cooperacién y colaboracion. ‘Arduino es abierto y simple. Se basa en lecciones que hemos aprendido ensefiando en nuestras clases. Si al comenzar asume la idea de que aprender a.usar la tecnologia digital es simple y accesible, podra hacerlo. De esta forma la electronica y la programacién podran ser herramientas que cualquiera pueda usar, como los pinceles y la pintura. Este libro le guia a través de lo basico de una forma sencilla, con proyectos creativos para que los construya y aprenda. Una vez que domine lo basico, tendr en sus manos programas y circuitos que puede utilizar para crear algo hermoso y hacer que alguien sonria con su invento. BIENVENIDO A Ce een clei) cic teeta eae ea urs microcontroladores, los cuales hacen que Ped etas teeter cu Un Cees Vee eg ae eee CU eo Cee eee eM ee een en Me Tete algunos cepillos de dientes. Solo hacen una tarea en conereto y sino se da cuenta de CT te ee ea Re ee a bien su trabajo. Han sido programados para detectar y controlar una actividad median- ee toy Pe MR ne ea eae ence Dee eg ee Rene ee ce ony Det Tene Ree ce i ue koe Teen eo Re en a Rare etd en energia fisica, como la luz el calor y el movimiento. Dee eee ME er SO ee ees a ee ewe aR ss Sin embargo, los microcontroladores y la electrénica que se une con ellos son solo el Ce ee a eee) CMe ete ec ee aC eect et ee CR em aaa re aC Ren a in Cn Un indicador para decirle a la gente si est4 ocupado o no lo esta. En otro proyecto pondré Cee Sn ee er Cea) ee? Arduino puede hacer que tus proyectos realicen su cometido pero solamente tu Pr Sd em ce ee ae ea) CE vee eet Arduino fue disefiado para ayudarte a hacer cosas. Para conseguirlo, intentamos que tan- COE tee Cc eee ee es) Be Ce eee gS eC Cee se Cue AUC ene nee ee a informacién a través de la pagina web de Arduino en: OMPONENTE Aen Cay ‘Arduino Uno - La tarjeta de desarrollo del mmicrocontrolador la cual serd el corazén de tus proyectos. Es.un simple ordenador, pero uno con el cual todavia no puedes realizar nada. Construirds circuits e interfaces para hacer cosas y decirle al microcontrolador como trabajar ‘con otros componentes. (Clip para Bater‘a - Se utiliza para conectar una bateria de 9V alos cables de alimentacion y asi conectarla ala placa Arduino. Traducido by Tino Fernéindez Cueto Placa de pruebas - Una placa sobre la cual puede montar componentes electrSnicos. Es como un panel con agujeros, con filas de agujeros que le permite conectar juntos cables y componentes electrénicos. También estén disponibles tarjetas sobre las que hay que soldar y también sin necesidad de usar un soldador como la mostrada aqut ¢ & > Condensadores - Estos componentes almacenan y devuelven energia eléctrica en un circuito. Cuando el voltaje del crcuito es mas alto que el que est almacenado en el condensador, la corriente fluye de circuto al condensador, dindole una carga. Cuando la tensin del Circuito es mas baja, la energia eléctrica almacenada en el condensador es devuelta al circuito. A menudo se colocan entre los terminales positivo y negative de una alimentacién de un sensor o un motor para ayudar a suavizar las fluctuaciones de tensién que se puedan producir. Motor de continua (DC) - Convierte la energia eléctrica en cenergia mecénica cuando la electricidad es aplicada a sus terminales. Una bobina de hilo dentro del motor produce ‘un campo magnético cuando la corriente eléctrica continua (DC) fluye a través de él ates /wu futuroworkss.com Este campo magnético producido en la bobina atrae y repele al campo magnético de los imanes interiores haciendo que la bobina de hilo gire en al interior. Si se invierte la tensién aplicada el motor gira en sentido contrario. ——_———— Diodo - Conduce la electricidad en una sola direcci6n. Es Util usarlo en un circuito con un motor o una carga que ‘consuma una gran cantidad de corriente eléctrica. Los ddiodos tienen polaridad, esto quiere decir que hay que ‘olocarlos deuna forma determinada (polarizado) dentro del circuito. Colocado de esta manera (correctamente polarizado) permite que la corriente eléctrica pase a través, de él, Colocado al reves (inversamente polarizado) no deja pasar la corriente eléctrica El diodo tiene dos terminales, Uno de ellos llamado énodo, el cual se conecta dentro de Un circuito al punto donde mas tension existe. El otro terminal lamado cétodo, se conecta a otro punto con una tension inferior con respecto al punto en donde se conecta ¢l dnado. El cétodo normalmente se indica mediante una franja de color blanco en uno de los lados del cuerpo del iodo. Papel celofan (rojo, verde, azul) - Son filtros que dejan pasar diferentes longitudes de onda de la luz. Cuando se utilizan con una foto resistencia (sensor), pueden hacer que el sensor solo reaccione a una cantidad de luz que entra en €l filtro de color, de manera que otras luces de otras, longitudes de onda no hacen reaccionar al sensor. Puente-H - Se trata de un circuito que permite controlar la polaridad de la tension aplicada aun carga. El puente-H en kit es un circuito integrado, pero se puede construira partir de un nimero determinado de componentes discretos (resistencias, condensadores y transistores). Traducido by Tino Fernéindez Cueto eee, ——— — - Cables puente - utilzarlos para conectar unos componentes con otros sobre la placa de prueba, y la tarjeta de Arduino. Diodos Emisores de Luz (LEDs) - Un tipo de diodo que eemite luz cuando la corriente lo atraviesa. Como en todos los diodos, la cortiente solo fluye en un sentido a través de estos componentes. Estar probablemente familiarizado con allos al verlos como indicadores dentro de una gran variedad de dispositivos electrénicos. El nado, que normalmente se conecta al positivo de la alimentacién, es generalmente el terminal mas largo, y el cétodo el terminal mas corto. Pantalla de Cristal Liquido (LCD) - Un tipo de pantalla numérica o grafica basado en cristal iquido. Los LCDs estan disponibles en varios tamaiios, formas y estilos. El que se incluye con este kit dispone de 2 filas con 16 caracteres en. cada una de ellas. ates /wu futuroworkss.com Tira de pines macho - Estos pines se conectan en zocalos hembra, como los que tiene una placa de pruebas. Permiten conectar otros elementos electrénicos con mucha facilidad. ‘Optoacoplador - Permite conectar dos crcuitos que no tienen en comtin la misma fuente de alimentacién. En su interior hay un pequefo diodo led que, cuando se tlumina, hace que un foto-receptor cerre un interruptor interno. Cuando se aplica una tension al terminal + (positive), el diodo led emite luz y el interruptor interno se cierra, Las dos salidas reemplazan a un interruptor en el circuito secundario. Zumbador piezo eléctrico - Un componente eléctrico que se puede usar para detectar vibraciones y generar ruidos. Foto resistencia - (también llamada foto célula 0 resistencia dependiente de la luz). Se trata de una resistencia variable que cambia su resistencia segun el nivel de luz que incide sobre su superficie. Traducido by Tino Fernéindez Cueto Potenciémetro - Una resistencia variable con tres terminales. Dos de estos terminales estén conectados a los extremos de una resistencia fifa. El terminal central se puede mover a través de la superficie de a resistencia fija (dispone de un mando), consiguiendo de esta forma dos valores diferentes de resistencia segin el terminal extremo que se tome como referencia. Cuando los terminales extremos del potenciémetro se conectan entre una tensién y masa, en el terminal central aparece una tensién que es proporcional al giro del mando central, entre cero (un extreme] y la maxima tension (el otro extremo). Pulsador - Interruptores momentaneos que cierran un circuito cuando son presionados. Se colocan con facilidad sobre la placa de pruebas, Son buenos para abrir o cerrar el paso a una seiial, Resistencias - Se opone al paso de a corriente eléctrica en Un circuito, dando como resultado a un cambio en ta tension y en dicha corriente. El valor de las resistencias se mide en ohmios (se representa por la letra griega omega: Q). Las bandas de colores en un lado de la resistencia indica su valor (ver la tabla de codigo de colores de la resistencia en la pagina 41). ates /wu futuroworkss.com ‘Servo motor - Un tipo de motor reductor que solo puede girar 180 grados. €s controlado por las sefiales eléctricasen formato de pullos que son enviadas desde la tarjeta ‘Arduino. Estos pulsos le dicen al motor a que posicién se debe de mover. Sensor de temperatura - Cambia la tension de salida que suministra dependiendo de la temperatura que tenga su ‘encapsulado, Sus terminales extremnos se conectan entre tuna tension y masa. El voltaje del terminal central cambia segiin este componente este més caliente o mas fri ‘Sensor de inclinacién - Un tipo de interruptor que se abre ose cierra dependiendo desu orientacién. Normalmente son cilindros huecos con una bola de metal en su interior la ‘ual hard que los dos terminales se unana través de esta bola cuando se incline en una determinada direccién. ih Transistor - Componente de tres terminales que puede trabajar como un interruptor electrénico. Es til para controlar corrientes y tensiones grandes como la de los motores. Un terminal se conecta a masa, otro terminal a un elemento que se quiera controlar (motor, bombilla, zumbador) y el tercer terminal se conecta a una salida de Traducido by Tino Fernéindez Cueto Arduino. Cuando el transistor recibe una tensién de control a través del terminal que est conectado a Arduino, cierra Jos terminales extremos, entre masa el terminal donde se conecta el elemento, de manera que dicho elemento recibe la energia necesaria que lo hace funcionar (gira, emite luz, genera un sonido}. Cable USB - Permite conectar la placa Arduino Uno a un ordenador para que se pueda programar. También proporciona la alimentacién necesaria tanto a la placa Arduino como a todos los componentes electronicos que forman parte de los proyectos de este kit. ates /wu futuroworkss.com foe Bienvenido a Arduino! Bru Neo seer oketualerte yoo uci ican on ee a [eerste a fe ites sco ° Ree ea) A Pee ery ae = eo rer tu) Arie) Traducido by Tino Fernéndee Cueto 0 RCs Cees Resa ocrd Coons! ere a Megas cat) —- eo g Eneste libro le mostraremos los circuitos de dos formas distintas, como ilustraciones realistas y como esquemas electrénicos. Las ilustraciones le dan Meee ene ace eke cs ee eet la placa de pruebas para realizar un proyecto. Los esquemas, en su lugar, Re et ere he eee Ree ee nT en eC ee ea ee cconcisa pero no muestran como se van a montar sobre la placa de pruebas. Los esquemas y los simbolos son la forma en como se representan los crcuitos Cee one me a eke) Be ees eee ese cra ete ce ‘electronicos, asi que aprender a entender como funciona un circuito de esta forma es una habilidad muy valorada. En esta hoja se muestran los simbolos CO eee eeu aL i i it A PLACA ARDUIN ‘Conector de alimentacién Botén de reset Este conector se utiliza para Puesta a cero del micro- alimentar la placa Arduino controlador ATmega cuando no esta conectada un puerto USB. Acepta tensiones entre 7 y 12V Puerto USB LEDs TRY RX ‘Usado para alimentary cargar Estos diodos LEDs indican cuando sereaiza una comunicacin entre ‘Arduino y el ordenador. Parpadean rpidamente cuando se carga el programa asicomo durante la ‘comunicacion serie. Uti parala depuracion. {os programas a su Arduino, y para la comunicacién con el programa de Arduino (mediante {a instruccion Serial.printin() etc.) Pins Digitales Usar estos pins con las instrucciones digitalRead), digitalWrite(), y analogWrite(). LLinstruccion analogWritel) solo trabaja con ls pin con 2 elsimbolo PWM, H Ei Pin 13LED Elinico componente que acta como dispostve de saida incorporado a su Arduino Uno. Lousaré cuando ejecute su primer programa. Este LED es muy iti para la depuracion. Pines GND y 5V Microcontrolador ATmega Usar ests pins para proporcionar Elcorazén dela placa Arduino Uno una tensin de-+5V y masa para los reuitos extemos ala placa. Led de Encendido Entradas Analégicas _] Indica que la placa Arduino Usar estos pins con la esta siendo alimentada, Util instruction analogRead() parala depuracién ‘Traducido by Tino Fernandez Cueto tes //wurfutureworkss.com Introduccién Bienvenido a Arduino! ‘Su Kit de Inicio incluye una base de madera pre- cortada de ensamblaje facil para montar en ella todos sus proyectos, tanto los que son de este libro, ‘como aquellos que no lo son, sera mas sencillo. Para montarla, sacar la base de madera de la cajay ‘seguir las instrucciones que se muestran en las. imagenes de la derecha, Tenga cuidado de utilizar solo las piezas que se muestran, y no perder ninguna de ella: las cuales necesitara para algunos de los proyectos que se incluyen en esta obra. iAsi que adelante! ‘Traducido by Tino Ferndindez Cueto ‘http://www. futureworkss.com Presionar hasta separar todas las piezas ‘Colocar las piezas marcadas con una “A" dentro de los agujeros de las esquinas, con la finalidad de crear el soporte para la base Retire con cuidad el papel protector de la placa Pegerla placa de pruebas sobre la base de madera, de pruebas pproxima ala Arduino Uno Introduecién 14 Bienvenido a Arduino! OTRAS COSAS QUE VAA NECESITAR Bieri de Woltas Una caja ala que leha perforado unos agujeros Una pequefia fuente de luz como una linterna Herramientas bdsicas como un destornillador Material conductor como papel de aluminio 0 malla de cobre Un conector con cable para la bateria de °V Papel de color Cualquier conector con cable que tenga por lo menos un interruptor 0 un pulsador, y que este dispuesto a usar, valdra pare realizar este trabajo Tijeras Soldador de estaiio y estafio Un vigjo CD 0 DVD (solo es necesario en el Proyecto 15) Ginta y goma ‘Traducido by Tino Ferndindez Cueto 4 BS PREPARACION ANTES DE QUE COMIENCE A CONTROLAR EL MUNDO A SU ALREDEDOR, NECESITA DESCARGAR EL ENTORNO INTEGRADO DE DESARROLLO (IDE) DE ARDUINO PARA PODER PROGRAMARLO- EI IDE de Arduino le permite escribir los programas y cargarlos a Sees Dee a Men na Coloquela placa Arduino y el cable USB cerca de su ordenador. er teas Geo aes este Suu ES nn IC) Pe Pea nee Make rind Eee aerate ae net cea Ciautanioe ales teain os Introduccién Lapreparacién! INSTALACION EN WINDOWS Traducide by Tino Fernéndez Cueto 16 Versién online arduino.cc/windows Después de finalizar la descarga hacer doble click sobre el fchero “install Arduino”. Si se abre una ventana emergente de seguridad de Windows, pulsar sobre “Ejecutar” o “Permitir’ y aceptar los términos de la licencia al pulsar sobre el baton “I Agree”, Pulsar sobre "Next para seleccionar la carpeta en donde se va aiinstaar el IDE y entonces pulsar sobre el bot6n “Install Después de que el software de Arduino se haya instalado, conectar la placa Arduino al ordenador a través del cable USB. La placa se alimenta automaticamente a través de esta conexién USB del ordenador, en ese ‘momento el LED verde (etiquetado como ON) en la placa Arduino se encendera. ‘Windows inicia el proceso de instalacién del controlador cuando la placa se ‘conecta. El ordenador no podré encontrar el controlador sin ayuda, es necesario indicarle en que carpeta se localiza. 2] Windows XP: Sil programa de actuaizacién de Windows pregunta acerca de Ia ruta del controlador, seleccionar “Si, s6lo esta vez" y después “Instalar desde una lista 0 una ubicacién especifica (cecomendado)"; b) Vista o Windows 7: En Windows 7 si se abre una ventana emergente en donde le pide si instalar el controlador automaticamente o buscarlo en el ordenador escoger buscar el controlador en el ordenador. En Vista, continuar con el paso siguiente al escoger la opcidn recomendada. Sila instalacién no comienza automaticamente, pulsar sobre el botén de Inicio ¥ abrir el Panel de Control. Entonces, dirgirse al Administrador de Dispositivos siguiendo estos pasos: a] Windows XP: Cambiar a Vista Clasica -> Systema -> Hardware > ‘Administrador de Dispositivos b) Windows Vista: Vista Clasica -> Administrador de Dispositivos ©) Windows 7: Sistema y Seguridad ~ Sistema > Administrador de Dispositivos d) Buscar el dispositivo Arduino dentro de la categoria “Otros Dispositivos” 0 "Dispositivos Desconocidos" y seleccionar “Actualizar Contralador’ 0 “Actualizar Controlador del programa” al pulsar el botén derecho del raton. Pulsar sobre “Examinar” y seleccionar la carpeta “Controladores" (no la ‘arpeta de los controladores USB FTD!) de la carpeta de Arduino. Presionar “OK" y “Siguiente”. Si se abre una ventana emergente con el logo de Windows, pulsar sobre “Continuar de todas formas". Ahora Windows instala el controlador. Dentro de la ventana de Administracidn de Dispositivos, bajo la categoria de “Puertos (COM & LPT}" podra ver un puerto similar a “Arduino UNO (COMA)”. iEnhorabuena! Acaba de instalar el IDE de Arduino en su computadora, http://w futureworkss.com Introduccién Lapreparacién! INSTALACION EN MAC OS X INSTALACION EN LINUX Traducide by Tino Fernéndez Cueto 7 Versién online arduino.cc/windows Siusted est usando la versi6n 10.8 (Mountain Lion) 0 posterior, dirgirse a las “Preferencias del Sistema’ y abrir el panel de "Seguridad & Privacidad’. En la pestafia “General” bajo el encabezado “Permitir descargar aplicaciones desde", hacer dick en “Desde cualquier lugar". Una vez que e! IDE de Arduino se ha descargado, hacer doble click sobre el fichero zip para descomprimirlo, Copiar la aplicacién Arduino a la carpeta de Aplicaciones, o cualquier otro sitio ‘en donde desee instalar el software. Conectar la placa Arduino al ordenador a través del cable USB. La placa se alimenta autométicamente a través de esta conexin USB del ordenador, en ‘ese momento el LED verde (etiquetado como ON) en la placa Arduino se ‘encendera. No necesita instalar ningin controlador para trabsjar con la placa. Dependiendo de la versién del sistema operativo OS X que se este ejecutando, podria aparecer una ventana emergente con un mensaje pidiéndole si desea abrir las “Preferencias del Sistema”. Hacer click sobre el botdn de “Preferencias de Red’ y después en “Aplicar”, El gestor de ventanas Uno de Mac mostrar "No configurado", pero el entorno IDE ya esta listo. Pude salir de "Preferencias del Sistema” iEnhorabuena! El entorno de Arduino ha sido instalado y ya esté listo para ‘comenzar con los proyectos Siusted esta usando Linux, por favor visite la pagina web para ver como se hace. Arduit jinux Introduccién 18 Lapreparacién! COMUNICACION — Afora queya ha instalado el IDE de Arduino y esta seguro de que su ordenador puede comunicarse con la placa, es ef momento de comprobar si puede cargar un programa en CONARDUINO) | Que 4. Hacer doble click sobre la aplicacién de Arduino para abrirla. Si el entorno IDE esta en un lenguaje que no es el suyo, puede cambiarlo al seleccionar el menti “Archivo” y escoger “Preferencias”. En la ventana que se abre y dentro del “Editor de idioma” escoger el lenguaje que desee. Reiniciar el programa para que tenga efecto. Buscar “the ‘environment page " dentro de esta pagina para obtener més informacion: arduino.cc/ide 2. Navegar para abrir un sketch de ejemplo que hace que el diodo led de la placa Arduino parpadee (la palabra sketches como se llama a los programas en Arduino). Seleccionar el mend “Archivo” escoger “Ejemplos” a continuacién "OBasics’ y por ultimo “Blink”. om we Cantera. aes sa om Snopes Conger ela 3. Deberia de abrirse una nueva ventana con un texto dentro. Dejar la ventana como esta por ahora, y seleccionar su placa Arduino desde: Herramientas > Placa 4, Escoger el puerto serie en donde su placa Arduino esta conectada desde el ment de: Herramientas > Puerto a) En Windows: Probablemente aparecerd con el nero més alto de puerto COM. No pasar nada si se equivoca al escoger este numero de puerto, simplemente no funcionara. b)_ En Mac: Deberd aparecer algo parecido a /dev/tty.usbmaderm en este sistema, Por lo general aparecen dos, seleccionar uno cualquiera de ellos. 5, Para cargar el Sketch que hace que el diodo led parpadee a su Arduino, presionar el boton Subir en la esquina superior izquierda de la ventana. Ver la figura 1 Traducide by Tino Ferndndez Cueto 4 Fig.2 INFORMACION ADICIONAL Traducide by Tino Ferndndez Cueto 4 6. 19 Debe de ver una barra indicando el progreso de carga del sketch cerca de a esquina inferior derecha del IDE de Arduino, y los diodos led de a placa Arduino con las etiquetas Txy RX estaran parpadeando en el momento de la carga. Sila carga se ha realizado ‘correctamente, e! IDE mostrara el mensaje SUBIDO en la esquina inferior izquierda. ‘Nos pocos segundos de completar la carga del Sketh, debe de ver como el diado led amarillo, con la etiqueta L cerca, comienza a parpadear. Ver figura 2. Sies asi, ifelicidades! Acaba de conseguir programar Arduino para que el diodo led de la placa parpadee ‘A veces su nuevo Arduino esta ya programado con el Sketch de parpadeo, asi que no puede saber si realmente lo acaba de programar. En este caso, cambiar dentro de la instruccion “delay” el tiempo que aparece entre paréntesis a 100, y volver a subir de nuevo el sketch de parpadeo. Ahora el diodo led de la placa debe de parpadear mas rapido. iFelicidades! ;Usted realmente tiene el control!. Ahora es el momento de comenzar con cl proyecto mimero 1. (No necesita guardar ninguno de los cambios que ha realizado.) Si tiene problemas con alguno de los pasos descritos anteriormente, por favor mirar las sugerencias para solucionar los problemas a través de la siguiente pagina web: arduino.cc/trouble Mientras se esta preparando para realizar |os proyectos de este libro, puede dirigirse a la siguiente pagina para obtener mas informacién acerca del entorno de programacién de Arduino. : ides También puede visitar estas dos paginas: ~ Ejemplos de utilizacién de sensores y actuadores carduino.cc/tutorial La referencia para el lenguaje de Arduin arduino.cc/exai Q1 it Coen ee Tene fooled es) estan Noy De a atone! 21 ICONOZCA SUS| USTED VA A MONTAR UN CIRCUITO SENCILLO CON ALGUNOS, PULSADORES, UN DIODO LED, Y UNA RESISTENCIA Descubra: La teoria bésica de la electrcidad, como se trabaja con una placa de prueba y ‘como se conectan componentes en serie y en paralelo Tiempo: 30 MINUTOS Nivel: bajo La dectricidad es un tipo de energia, como al calor la gravedad o la uz. La energia eléctricafluye través de los conductores, como los cables. Puede transformar la energia eléctrica en otras formas de cenergia para hacer algo interesante, como encender una luz o hacer algo de ruido a través de un altavoz. Los componentes que podria usar para hacer esto, como altavoces 0 bombillas, son transductores eléctricos. Los transductores transforman otros tipos de energia en energia eléctrica y viceversa. Los Componentes que transforman otras formas de energia en energia eléctrica son a menudo llamados sensores, y los componentes que conwvierten la energia eléctrica en otras formas de energia se conocen algunas veces con el nombre de actuadores. Construia cicuitos para hacer que la electricidad circule a través de diferentes componentes, Se trata de circuitos en bucles cerrados mediante cables con una fuente de energia (como una bateria) y algin componente que haga algo itil con la energia; este componente se suele llamar carga. En un circuito, la electricidad fluye desde un punto con el potencial de energia mas alto (normalmente se conoce como el positivo o + de la fuente de energia) aun punto con el potencial de energia més bajo. Lamasa (a menudo representado con el signo -" o GND) es normalmente el punto con el menor potencial de energia en un circuito. En los circuitos que va a construir la corriente eléctrica solo circula en una direccién. Este tipo de circuits se llaman de corriente directa 0 DC. Por otro lado en los circuitos con corriente alterna (AC) la electricidad cambia de direccién 50 0 60 veces por segundo (dependiendo de donde usted viva). Este es el tipo de electricidad que puede encontrar en un enchufe de la pared de una habitacion, Existen una serie de términos con los cuales debe de familarizarse cuando trabaje con circuitos eléctricos. Corriente (medida en amperios, o amps; con el simbolo A} es la cantidad de carga eléctrica due circula a través de un determinado punto de un circuito, Tensién (medido en voltios, con el simbolo V)es la diferencia de energfa entre un punto de un circuitoy otro que se toma como referencia. Y por Lltimo, resistencia (medida en ohmios; can el simbolo ©) representa cuanto se opone un componente a que la energia eléctrca fluya a través de él Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 01 Conozea sus herramientas Desplazamiento de las rocas para ‘entender como fluyela corriente eléctrica Figura UN PAR DE COSAS SOBRE LOS CIRCUITOS sv led ed ote sarilo ° or) Lacortente en (1) = correnteen (2) + coriente (3) = coriente en (4) Figura Traducide by Tino Feméndez Cueto Una forma de imaginar como funciona todo lo explicado con anterioridad es imaginar un acantilado con una pendiente por donde se deslizan unas rocas cuesta abajo, como se muestra en la figura 1. Cuando mayor sea el acantilado mayor energia tendran las rocas para llegar hasta la parte inferior. La altura del acantlado es como la tension en un circuito: cuando mayor es el voltaje en la fuente de energia, mayor energia puede usar. Cuanto mas rocas tenga, mas cantidad de energia se desplaza hacia abajo por el acantilado. El numero de rocas es como lacorriente en un circuito elétrico, Las rocasal desplazarse por la pendiente del acantilado tropiezan con los arbustos y pierden algo de energ(a al aplastarlos y poder pasar por encima de ellos. Los arbustos son como las. resistencias en un circuito, ofreciendo una oposicién al paso dela electricidad ala vez que la convierten en otras formas de energia (como calor, sonido, etc). Oo Oo Corriente (I) Tensién (V) Resistencia (R) ~ En.un circuito es necesario que exista un camino desde la fuente de energia (alimentacién) hasta el punto de menor energia (masa). Sino existe un camino por donde la energia se pueda mover, el ircuito no funcionard, = Toda la energfa eléctrica es utlizada por los componentes que forman parte de Un circuito, Cada componente convierte parte de esa energla en otra forma de energia. En cualquier circuito, todas las tensiones se convierten en otra forma de cenergia (luz, calor, sonido, etc.) ~ El flujo de corriente en un punto especfico en un circuto siempre sera el mismo que entra y que sale ~ Lacorriente eléctrica siempre busca el camino de menor resistencia hacia masa. Siexisten dos caminos postbles, la mayoria de la corriente eléctrica circulara por el camino con menor resistencia. Si dispone de una conexién en donde se conectan los puntos de alimentacién y masa juntos directamente y sin resistencia, se produciré un cortocircuito; la corriente sera demasiado grande al no disponer de tuna resistencia que reduzca su valor. En un cortocicuito, la fuente de alimentacin y los cables convierten la energia eléctrica en luz y calor, se producirén chispas y/o una explosion. Si alguna vez ha cortocircuitado una bateria yavisto chispas sabré lo peligroso que un cortocircuito que puede ser. http://w. futurenorkss.com 23 QUE ES UNA PLACA DE PRUEBAS _|aplacadepruebas es el primer lugar en donde montaré sus circuitos. La que se incluye en el kit no necesita soldar nada para montar los componentes encima, es como un juego de LEGO en formato electrénico. La filas verticales y horizontales de la placa de pruebas, como se muestra en la figura 3, conducen la electrcidad a través de los conectores de metal fino que hay debajo del plstico con agujeros. Los 5 agujeros de cada fila horizontal estén Lafila del medio rompe la conectados eléctrcamente a través de las conexién entre los dos tiras de metal en el interior de la placa de pruebas lados dela placa Las tras verticales que recorren toda la longitud de la placa esté eléctricamente conectada. Estas tiras se suelen usar para las conexiones de alimentacién y masa. La parte superior de la placa de pruebas y las conexiones que hay debajo ‘ALIMENTACION ALIMENTACION Lo Figura 3 AREA DE MONTAJE Tiras metélicas conductoras Las tiras conductoras en el interior de laplaca de pruebas. Figura 4 Traducido by Tino Fernéndez Cueto hi Proyecto 0% ca sus herramientas Figura 5 fet Traducide by Tino Ferndndez Cueto 24 A través de estos proyectos, podra ver dos vistas de los circuitos: una vista sobre la placa de pruebas (como en la figura 5), que se parece a las cosas de su kit. La otra es a vista de esquema (como en la figura 6), se trata de una forma mas abstracta de mostrar las relaciones entre los componentes de un circuito. Un esquema no siempre muestra donde se colocan los componentes unos con respectos 2 otros, pero si que muestra como estan conectados 25 SUS PRIMEROS COMPONENTES Un LED, 0 diodo emisor de luz, es un componente que convierte la energ(a eléctrica en energia luminosa. Los LEDs son componentes que tienen polaridad, esto quiere decir que solo circula corriente a través de ellos en una sola direccién. El terminal mas largo del LED es lamado énodo, se conectard a la alimentacién. El terminal mas corto es el cétodo y se conectara a masa. Cuando la tensién es aplicada al énodo del ed y el citodo est conectado a masa, el LED emite luz » €ATODO + ANODO Una resistencia es un componente que se opone al paso de la energia eléctrica (ver el istado de | ‘componentes para obtener informacion sobre las bandas de colores que tiene en un lado del cuerpo de la resistencia) Transforma parte de la energia eléctricaen calor. Si se coloca una resistencia en serie con un componente como un LED, el resultado sera que el diodo led recibe menos energia al consumir la resistencia esa energia que el LED no recibe. Esto permite poder alimentar alos ‘componentes con la cantidad de energia que necesitan. Puede usar una resistencia en serie con un LED para evitar que reciba demasiada tensién. Sin la resistencia, el led podria brillar con gran intensidad durante unos momentos, peo répidamente se quemers. Un interruptor interrumpe la cirulacién dela electricidad, abriendo el circuito cuando se abre. ‘é Cuando un interruptor esta cerrado, permite que el circuito se alimente. Hay muchos tipos de interruptores. Algunos de los que se incluye en el kit se llaman interruptores momentaneos, 0 pulsadores, porque solo se cieran cuando son presionados. CCONEXIONES DEL INTERRUPTOR SIMBOLOS EN EL ESQUEMA Estos dos terminales de un interruptor estin conectados entre si ie —W ‘A - Simbolo come interruptor Estos dos no estin conectades. Forma el interruptor Elinterruptor B - simboto como pulsador Figura 7 Traducide by Tino Feméndez Cueto http://w. futurenorkss.com Proyecto 01 26 | « 1s herramientas { Figura 8 free Traducide by Tino Femnéndez Cueto htt: x S Traducide by Tino Fernéndez Cueto 27 Va.a usar Ia placa Arduino en este proyecto, pero solo como una fuente de alimentacién. Cuando la conecte a un puerto USB o a una bateria de 9V, Arduino suministraré una tensién de SV entre su terminal de SV y su terminal de masa los cuales puede usar. 5V= 5 voltios, lo vera escrito de esta forma muchas veces. Sila placa Arduino est conectada a una baterfa o a un ordenador via USB, idesconectarla antes de montar el circuito! Conectar un cable rojo al terminal de SV de Arduino y conectar el otro extremo de este cable en una de las columnas del bus de a placa de pruebas rmarcada con el simbolo +. Conectar el terminal de masa de Arduino con un cable negro ala linea adyacente en donde se ha conectado el cable rojo y en la columna marcada con el simbolo-. Es til para guardar una relacion entre los colores de los cables (rojo para a alimentacién y negro para la masa) a lo largo del cicuito. ‘Ahora que ha alimentado la placa, coloque el pulsador en el centro de la placa de pruebas. E! pulsador se situa en el centro en una direccién. La parte curva delos terminales del pulsador apuntan hacia el centro de la placa. Usar una resistencia de 220 ohmios para conectar la alimentacian (columna ‘marcada con +Ja uno de los lados del pulsador. Las ilustraciones de las resistencias en este libro son con 4 bandas. Su kit puede tener una mezcla de resistencias con 4 y 5 bandas. Usar la ilustracién adjunta para verificar que esta usando la resistencia adecuada en este proyecto. Mirar la pagina 41 para ‘obtener mas informacién sobre el cddigo de colores de las resistencias. Enel otra lado del pulsador, canectar el nado (terminal largo) del diodo LED. Con un cable conectar el cdtodo (terminal corto) del LED a masa. Cuando este todo listo, enchutar el cable USB ala placa Arduino. Una vez que todo esta preparado, presionar el botén. El diodo LED deber& encenderse.jLe felicito, acaba de que conseguir que el crcuito funcione! Una ver que se haya cansado de presionar el botén para encender la luz, es el momento de mejorar las cosas afiadiendo un segundo botan. Usted va.a colocar componentes sobre la placa de pruebas en serie yen paralelo. Los componentes en serie se colocan unos detrés de otros y los componentes en paralelo se conectan uno al lado del otro http://w futureworkss.com Proyecto 01 28 sus herramientas Una vez que ha desconectado la fuente de alimentacién afiadir un pulsador cerca del que ya esta montado en la placa de pruebas. Conectar un cable para conectarlos en serie como se muestra en la figura 10. Conectar el 4nodo (terminal largo) del LED al segundo pulsador. Conectar el catodo del LED 2 masa. Alimentar de nuevo la placa Arduino: ahora para encender el LED, necesita presionar los dos pulsadores a la ver. Puesto queestn en serie, ambos deben ser cerrados para que el circuito funcione. ; Los dos pulsadores estén en serie. Esto quiere decir que circula la misma cori te a través de ellos, asi que ambos tienen que ser presionados ala vez para que el LED se encienda Figura 10 Traducide by Tino Ferndindez Cueto http.//wu futurewere: 29 ‘Ahora que ha dominado el arte de las cosas en serie, es el momento de conectar los pulsadores en paralelo. Dejar los pulsadores y el diodo LED donde estén, pero quitar la conexidn entre los dos pulsadores. Colocar un cable desde cada pulsador ala resistencia Unir e! otro extremo de cada pulsador al diodo LED, como muestralla figura 12. Ahora cuando se presiona cualquier botn, el circuito funciona y el diodo led se enciende. Estos dos pulsadores estan en paralelo. Esto significa que la cortiente eléctrica se divide entre ellos. Si cualquier pulsador es presionado, el diado LED se encendera Figura 12, err CrTce ky} Traducide by Tino Ferndindez Cueto http.//m futuro Proyecto 01 30 Conozes sus herramientas ENTENDIENDO LA LEY DE OHM V=IeR I=V/R R=V/I /|\8 © & Corriente, voltaje y resistencia estan todos relacionados. Cuando cambia uno de Puede usar este circulo para estos pardmetros en un circuit, afecta alos demas. La relacién que existe entre recordar las relaciones entre ellos se conoce como ley de Ohm, en honor a Georg Simon Ohm quien la descubrié. voltae, corrientey resistencia, TENSION (V) = CORRIENTE (I) x RESISTENCIA Ponga su dedo sobre cualquiera ae ae baie de los tres, yverd como se rela- | Al medirintensdad (amperios) en los crcuitos que vaya a montar, ls valores ciona con los otros dos. seran del rango de miliamperios. Un miliamperio vale la milésima parte de un Traducide by Tino Ferndndez Cueto 4 amperio En el circuit dela figura 5 se aplica una tensi6n de 5 voltios. La resistencia tiene un valor de 220 ‘ohmios, Para averiguar la corriente que usa el LED, reemplazar los valores en la ecuacién de la Ley de ‘Ohm. Por tanto 1=V/R; 1=5 /220=0.023 amperios, este valor equivale ala 23 milésima parte de un amperio, 23 miliamperios (23mA) que consume el diodo LED. Este valor es casi el mAximo con el cual puede trabajar con seguridad este tipo de diodo LED, es por eso que se utiliza un resistencia de 220 chmios. Puede usar este proyecto de varias formas diferentes, o creando su propio pulsador (se puede realizar con dos trozos de papel de aluminio con un cable), o creando una combinacion de pulsadores y LEDs ‘en paraleloy en serie. ¢Qué sucede cuando coloca tres o cuatro LEDs en serie?, zqué sucede cuando se colocan en paralelo?, gpor qué funcionan de_la forma eno hacen? Un multimetro o polimetro es un instrumento de medida con e! cual puede medi a cantidad de resistencia, corriente y voltaje en un circuito. Por ahora no es necesario usarlo en estos proyectos, pero es importante disponer de uno para buscar una averia cuando un circuito no funcione. Puede ver una buena descripcién de como usar uno a través de esta pagina web manejo basico del polimetro ae Reagek ae eee ana Reel te Ame eM ee Reece) Me ek am ee emai rei t d eee eM ee A eee le meget) sistema interactivo muy simple: un usuario presiona un MAR eee Me eI Oe aoe ts Tae mR me ee ee ees Led yarn Traducide by Tino Ferndnder Cueto Q2 elm reken Reh PA EICIED] Se a a Deak = Temperatura_de Referencias? && ‘Temperatura < Temperatura_de_Referencias4){ 27 digitalWrite(2, HIGH): 28 cigitalwrite(3, Low); 29 digitalWrite(4, LOW); 30 Jelse (1(Temperatura >= Temperatur: 1_de_Referenciass 6.6 ‘Temperatura < Temperatura_de_Reterencias6)( a4 cigitalWrite(2, HIGH); 32 cigitaiwirite(3, HIGH): 33 cligitalweite(4, LOW): 24 Jelse if(Temperatura >= Temperatura_de_Referenciasé)t 35 clipitalWrite(2, HIGH} 36 igitalWrite(3, HIGH); 7 igitalWrite(4, HIGH): sd 39 delay(100); ao} Crear un interface para que dos personas puedan comprobar la compatibilidad entre ambos. Debe de decidir de que tipo de compatibilidad se trata, y como actuardn sobre el sensor. ;Quizas deberdn de juntar sus manos para generar el sufciente calor? :Tal vez tengan que abrazarse? :Que piensa? ene es Pept miata analogRead() junto con el monitor serie ha podido ver lo que ocurre dentro de su Arduino. Ahora ya puede usar un mayor nuimero de sensores anald entradas. Fe Traducide by Tino Fernéndez Cueto http://w. futurenorkss.com Te Ny4O139 Tadvd ae Pret EA enero Totorl (? Reka eRe) ee aL ed rela eka hie E tl tat Porter n erat eo =— INGREDIENTES: De a atone! 53 DE COLORES WWI aS USANDO UN DIODO LED TRI-COLOR Y TRES FOTO RESISTENCIAS, VA A CREAR UNA LAMPARA QUE CAMBIA SUAVEMENTE LOS COLORES DEPENDIENDO DE LAS CONDICIONES DE LA ILUMINACION AMBIENTE Descubra: salida analégica, cambio de escala de rango Tiempo: 45 MINUTOS Proyectos en los que se basa: 1,2,3 Nivel: bajo-medio Hacer que los diodos LEDs parpadeen puede ser divertido, pero ise pueden usar para atenuar suavemente la luz que emiten o para producir una mezcla de colores? Se podria pensar que es solo cuestién de disminuir a tensién que se le aplicaa un LED para conseguir que su luz se desvanezca. ‘Arduino no puede variar la tensién de salida de sus pins, solo puede suministrar SV. Por lo tanto es necesario usar una técnica llamada Modulacién por Ancho de Pulso o PW/M (en inglés) para desvanecer suavemente la luz de los LEDs. PWM consigue que un pin de salida varie rapidamente su tensién de alto abajo (entre 5 y OV) durante un periodo fijo de tiempo. Este cambio de tensién se realizada tan rapido que el ojo humano no puede verlo. €s similar a a forma en las que se proyectan las peliculas de cine, se ppasan répidamente un ndmero de imagenes fjas durante un segundo para crear la ilusi6n de ‘movimiento. Cuando la tensién del pin cambia répidamente de alto (HIGH) a bajo (LOW) durante un periado fijo de tiempo, es como si se pudiese variar el nivel de la tension de ese pin. E porcentaje de tiempo que un pin esti en estado HIGH con respecto al tiempo total (periodo) se conoce con el nombre de relacién cicica. Cuando el pin esta en HIGH durante la mitad del periodo y en estado LOW durante la otra mitad, la relacién ciclica es del 50%. Una relacion ciclica baja hace que el diodo LED tenga una luz mucho mas tenue que con una relacién ciclica mas alta, La tarjeta Arduino Uno dispone de seis pins quese pueden usar con PWM (los pins digitales 3,5,6,9,10 y 11), los cuales se pueden identificar por el simbolo ~ que aparece Junto a su ndmero sobre la tarjeta, TEC) Para las entradas en este proyecto, se usaran foto resistencias (sensores que cambian su resistencia dependiendo de la cantidad de luz que llegue a su superficie, tambien se conocen con el nombre de foto células o resistencias dependientes de la uz LDR]. Si conecta uno de sus pin a Arduino, se puede medir el cambio de resistencia al analizar los cambios de tension en ese pin. Traducide by Tino Fernéndez Cueto 4 Proyecto 04 54 Lampara de mezela de colores MONTANDO EL CIRCUITO Figura 1 Figura 2 es OR Cty Traducide by Tino Fernéndez Cueto http://w. futurenorkss.com Traducide by Tino Fernéndez Cueto 55 Tal como lo ha estado haciendo en prayectos anteriores, conectar la placa de pruebas a la alimentacién y a masa. Colocar las tres foto resistencias en el centro que divide la placa de pruebas, como se muestra en la figura 1. Conectar un terminal o pin de cada foto resistencia directamente al positivo de la alimentacién. El otro extremo se conecta a una resistencia de 10 Kiloohmios la cual se conecta a masa. Esta resistencia esté en serie con la foto resistencia y juntos forman un divisor de tensién. La tensién que aparece en el punto de unién de estos dos componentes es proporcional a la relacion entre sus resistencias, segtin la Ley de Ohm (ver el proyecto niimero 1 para saber més sobre la Ley de Ohm). Como el valor de la foto resistencia cambia cuando la luz incide en ella la tensién en este punto de union también cambia, Conectar el punto de unién entre la foto resistencia y la resistencia de 10K al pin de entrada analégico AO, Ai y A2respectivamente usando un cable para realizar la conexin, Coger las tres iminas de papel celofn ycolocar cada una sobre cada foto resistencia. Colocar el celofan rojo sobre la foto resistencia conectada ala entrada AO, el verde sobre la que se conecta ala entrada Al, y e! azul sobre la conectada a la entrada A2. Cada uno de estos papeles de colores actuan como filtros de luz y solo dejan pasar una determinada longitud de onda (color) hacia el sensor sobre el que estan encima, El papel de color rojo solo deja pasar la luz roa, el papel verde solo deja pasar la luz verde, y el pape! azul solo doja pasar la luzazul, Esto permite detectar los niveles relativos de color de la luz que reciben lossensores. EILED con cuatro pins es un diodo LED RGB de cStodo comiin. Este diodo LED tiene los elementos rojo, verde y azul separados en su interior, y un masa comin (el cétodo). Al aparecer una diferencia de tensi6n entre el catodo y las tensiones de salida de los pins de Arduino en formato PWM (los cuales se conectan a los ‘anodos del LED a través de unas resistencias de 220 ohmis), serd posible hacer que el LED varie la iluminaci6n de sus tres colores. Observar que el pin mas largo del LED, insertado en la placa de pruebas, se conecta a masa (ver Figura 1). Conectar los otros tres pins del LED a los pins dgitales 9,10 y 11 de Arduino y en serie con cada uno de ellos una resistencia de 220 ohmios. Asegurarse que cada cable del LED se conecta correctamentea su pin PWM correspondiente, tl y como se puede ver en la Figura 1 de la izquierda, http://w futureworkss.com Proyecto 04 56 Lampara de mezcla de colores EL CODIGO Un par de constantes titles Variables para guardar las lecturas de los sensores asi como el nivel de intensidad de cada luz Establecer como funcionan los pins digitales y configurar el puerto serie Leyendo el valor de cada sensor de luz Informe de las lecturas del sensor de luz al ordenador Definir como variables de tipo constante y entero los pins que se van a usar para las entradas y las salidas, y asi saber que LED se enciende segun el color de la luz que incide enel sensor correspondiente, Para el sensor que detecta la luz roja el LED de color rojo, el LED verde para el sensor de luz de color verde y el LED azul para el sensor de luz azul, variables para almacenar los valores leidos de los sensores asi como atras variables en donde almacenar estos valores después de realizar una conversion para ppoder variar la luminosidad de los LEDs. Se pueda usar el tipo de variable entero para todas estas variables. Dentro del apartado de configuracion del programa “setup()" establecer la comunicacion serie a 9600 baudios por segundo. Como en el ejemplo anterior, seusa esta opcién para ver los valores que se leen delos sensores de luz y que se mostrarén en el monitor serie. ‘Ademés ser posible ver un mapa de valores, los cuales se usardn para varia la luminosidad de los diodos LEDs. Aqui tambign se define los pins de los LEDs como salidas mediante la instruccién pinMode(). Enla parte de ejecucién del bloque del programa en si “loop\)" se leen los valores de los sensores en las entradas analégicas AO, Ai y A2 mediante la instruccién analogRead() y a continuacién se almacenan estos valores en las variables que comienzan con el nombre “ValorSensor Se coloca una instruccion de retraso “delay()” entre cada instruccin de lectura analogica “analogRead()” para que el convertidor anal gico-digital (ADC) pueda realizar su trabajo. Imprimir los valores de los sensores en una sola linea, El texto “\t’ equivale a presionar la tecla "tab" de! teclado para realizar una tabulacién al comienzo de la linea. Traducide by Tino Fernéndez Cueto http://w futureworkss.com one aus 7 8 9 10 11 12 57 const int PinLedVerde = 9; const int PinLedRojo = 11; const int PinLedAzul = 10; const int PinEntradaLDR_Rojo = AO; const Int PinEntradaLDR_Verde = A1; const int PinEntradaLDR_Azul = A2; int ValorSensorRojo = 0; Int ValorSensorVerde = int ValorSensorAzul = 0; int ValorRojo = 0; int ValorVerde = 0; int ValorAzul = 0; 13 void setup() { 14 15 16 17 Serial, begin(9600); pinMode(PinLedVerde,OUTPUT); pinMode(PinLedRojo,OUTPUT); pinMode(PinLedAzul, OUTPUT); 18} 19 void loop() { 20 21 22 23 24 25 26 27 28 29 30 ValorSensorRojo = analogRead(PinEntradaLDR_Rojo); delay(5); ValorSensorVerde = analogRead(PinEntradaLDR_Verde); delay(5); ValorSensorAzul = analogRead(PinEntradaLDR_Azul); Serial.print("Mapa de valores sensores \t Rojo: Serial.print(ValorSensorRojo); Serial.print("\t Verde: "); Serial.print(ValorSensorVerde); Serial.print("\t Azdl: "); Serial.print(ValorSensorAzul); Traducide by Tino Feméndez Cueto http://w. futurenorkss.com Proyecto 04 58 Lmoara de mezcla de colores Convertir las lecturas de los sensores Informe de los niveles de iluminacién célculados para los diodos LEDs Establecer los niveles de iluminacién para los LEDs COMO SE UTILIZA La instruccién que cambia el brillo del diodo LED a través de PWM se llama analogWrite() Necesita dos argumentos, el pin sobre el que se escribe y un valor comprendido entre Oy 255. Este segundo nlimero representa la relacin ciclica que aparecera en el pin que se especifique como salida en Arduino. Un valor de 255 colocard en estado alto (HIGH) el pin de salida durante todo el tiempo de esta serial, haciendo que el diodo LED que esta cconectado 2 este pin brille con su maxima intensidad luminosa, Para un valor de 127 colocara el pin ala mitad del tiempo que dur la seal (periodo), haciendo que el diado LED brille menos que con 255. O se puede fjar el pin en estado bajo (LOW) durante todo el petiodo, de manera que el diodo LED no alumbrara. Los valores de lectura del sensor de 0 2 1023 hay que convertirlos a valores de 0.2 255 para trabajar dentro del rango de PWM, como se menciona al comienzo de este parrafo. Por tanto los valores de lectura del sensor hay que dividirlos por 4 y los valores convertidos entre 0 y 255 se utilizaran con la instruccién analogWrite() para variar el brillo de los diodos LEDs. Mostrar en el monitor serie un mapa de valores después de dividir por 4 as lecturas de los sensores Una vez que Arduino ha sido programado y conectado, abrir e! monitor serie. El diodo LED probablemente mostrar un color blanco apagado, dependiendo del color de la luz predominante en la habitacién donde este montado este proyecto. Fijarse en los valores: delos sensores que aparecen en el monitor serie, si se encuentra en un entorno con una iluminacién que no varia, los ndmeros que aparecen apenas van a variar, se mantendrén envvalores bastantes constantes. ‘Apagar la luz de la habitacién en donde esté el circuto con Arduino montado y ver como varian ahoralos valores de los sensores en el monitor serie. Usando una linterna, luminar cada sensor (LDR) individualmente y observar como los valores cambian en el monitor serie, ademés de ver como cambia el color que emite el diodo LED. Cuando se cubre las, foto resistencias con papel celofan de color, estos sensores solo reaccionarén a una luz de una determinada longitud de onda, es decir, que solo son sensibles a un tipo de color en cconsonancia con el color del papel celofén que tienen encima. De esta forma se consigue cambiar cada uno de los colores que emite el diodo LED independientemente. Traducide by Tino Fernéndez Cueto http://w futureworkss.com 59 31 ValorRojo = ValorSensorRojo/4; 32 ValorVerde = ValorSensorVerde/4; 33 ValorAzul = ValorSensorAzul/4; 34. Serlal.print("Mapa de valores de los sensores \t Rojo: 35 Serial.print(ValorRojo); 36 Serial.print("\t Verde: 37 Serial.print(ValorVerde); 38 Serial.print("\t Azul: "); 39 Serial.print(ValorAzul); 40 analogWrite(PinLedRojo, ValorRojo); 41 analogWrite(PinLedVerde, ValorVerde); 42 analogWrite(PinLedAzul, ValorAzul); 43} Puede fijarse que la salida de la foto resistencia no trabaja dentro de todo el rango de 0.a 1023. Esto esta bien en este proyecto, pero para obtener una explicacién mds detallada sobre como calibrar el rango de lectura del sensor ver el proyecto ruimero 6. | Probablemente se habr fijado que av del billo del diodo LED no es lineal. Cuando ef LED esta ala mitad del valor de PWM a 127 (mitad del brill}, aparece mucho menos brillante. Esto es debido aque nuestros ojos no perciben las variaciones del brill inealmente. El brillo del LED no solo depende del valor de_lainstruccién analogWrite(), sino también de la distancia de la luz desde el difusor, la distancia de los ojos a la luz, y el brillo del LED en relacién con otra luz que pueda haber en la habitacién. | ecomo podria usar este proyecto para saber sien el exterior hace un buen dia mientras usted est trabajando en el interior? {Que otros tipos de sensores, en lugar de las resistencias LOR, se pueden usar para controlar los colores del diodo LED? Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 04 60 Lampara de mezcla de colores ‘Aungue el diodo LED no deja de ser un lampara, la luz que produce nada tiene que ver con la luz de una lampara. Existen varias formas de difuminar la luz dl diodo LED para que se parezca alaluz que produce una bombilla de incandescencia, Realizar un agujero en una pelota de ping pong figura 4)para colocarla encima del diodo LED y de esta forma difuminar la luz que produce. Otra forma de hacerlo es colocando pegamento transparente sobre el LED o lijando su superficie. No importa que procedimiento itilice, se va a perder un poco de brillo cuando se difumine la luz, pero al final probablemente obtendra tuna luz mucho mas agradable. Wetec lea eel eR eM elm em aera ne AU ren rate Au gles oon uel permite a los componentes conectados a los pines PWM 3, 5, 6, 9, 100 11, tl lames re( kee eRe Rae eee Cortar una bola de ping pong para colocarla encima de! diodo led Figura 4 Traducido by Tino Fernéndez Cueto hi @5 POET Tore eC cesy o)— Ero) eC kera ce) Bre Toye td O€LAWOIONSLOd ae Sante) INGREDIENTES. De a atone! 63 Mee) Dai) USAR UN SERVOMOTOR PARA REALIZAR UN MEDIDOR MECANICO PARA INDICAR EL ESTADO DE HUMOR QUE TIENE EN ESE D/A Descubra: mapa de valores, servomotores, utilizacién de librerias incorporadas Tiempo: 1 HORA Proyectos en los que se basa: 1,2,3.4 Nivel: bajo-medio Los servomotores son un tipo especial de motores que no giran alrededor de un circulo continuamente, sino se mueven a una posicion especifica y permanecen en ella hasta que se les diga que se muevan de nuevo. Los servos solo suelen girar 180 grados (la mitad de un circulo). Combinando uno de estos ‘motores con un pequetio cartén hecho a mano, sera capaz de decirle a la gente si deberian venir y preguntar si necesita 0 no ayuda para su préximo proyecto. De la misma forma que se ha usado PWM los LEDs en el proyecto anterior, los servomotores necesitan un niimero de impulsos para saber que angulo deben de girar. Los impulsos siempre tienen los mismos intervalos (periodo), pero el ancho de estos impulsos puede variar entre 1000 y 2000 micro segundos. Si bien es posible escribir cédigo para generar estos impulsos, el software de Arduino incluye una libreria que permite controlar el motor con facilidad. Ya que el servomotor solo gira 180 grads y la entrada analdgica varfa de 0 a 1023, es necesario usar una funcién llamada map() para cambiar la escala de los valores que produce el potenciémetro. Una de las grandes cosas que tiene la comunidad de Arduino es el talento de la gente quien aumenta su funcionalidad a través de software adicional. De esta forma es posible que cualquiera escribalibrerias para aumentar la funcionalidad de Arduino. Existen librerias para una gran variedad de sensores y actuadores y otros cispositives con la que los usuarios han contribuido en esta comunidad. El software libre extiende la funcionalidad de un entorno de programacién. El software de Arduino viene con un ‘nimero de librerfas que son titiles para trabajar con el hardware o lo datos. Una de las librerias inckiida esta disefiada para ser usada con servomotores. Cuando se escriba el cédigo ser necesario importar esta librerfa yasise podré controlar el servomotor. Traducide by Tino Fernéndez Cueto 4 Proyecto 05 64 Indica stado de animo Figura 4 Traducide by Tino Femnéndez Cueto htt: 0 Conectar la tension de +5V y lamasa a un lado de las tiras verticales de la placa de pruebas desde la placa de Arduino, @ _Conedar e potenciémetro sobre la placa de pruebas y conectar uno de los pins extremos a +5V y el otro extremo a masa. Un potencidmetro es un tipo de divisor de tension. Cuando se gira el mando del potenciémetro, se cambia larelacion de tension entre el terminal central y el terminal conectado al positive de alimentacién. Es posible leer el valor de este cambio usando una entrada analégica de Arduino. Conectar por tanto el terminal central ala entrada analdgica AO. De esta forma se controlaré la posicion del servomotor. Elservo tiene tres cables que salen de su interior. Uno de ellos es la © sitnentacon color rojo, otto esta masa (color nego} y el tercero (blanc) es el cable de control a través del cual recibir la informacion desde Arduino. Conectar tres pins macho de la tira de pins al conector hembra de los cables del servomotor (ver figura 3). Conectar estos pins machos ala placa de prueba de manera que cada pin se conecte a una fila diferente. Conectar la alimentacién de +5V al cable rojo la masa al cable negro y el cable blanco al pin 9 de Arduino, @ _ “u2ndoel servomotor empieza a moverse, consume mucha més corrente due si ya estuviese moviéndose. Esto produciré una pequetia caida de tensin en laplaca. Si se coloca un condensador de 100uF entre el positive y lamasa cerca del conector del servomotor como se muestra en la figura 1, se podré atenuar cualquier caida de tensién que se pueda producir, También se puede colocar un condensador de la misma capacidad entre los extremos del potenciémetro, entre positivo y la masa. Estos condensadlores son llamados condensadores de desacoplo porque reducen, o desacoplan, los cambios, causados en la linea de alimentacién por los componentes del resto del Gircvito, Hay que tener mucho euidado al conectar estos condensadores ya aque tienen polaridad. Hay que fijarse que uno de los pins del condensador esta indicado con un signo menos (-), por tanto debera conectarse @ masa y elotro pin a positivo. Si se equivoca y coloca algtin condensador con la polaridad contraria podria explotar. El servomotor viene con un conector hembra, asi {que ser necesario afiadirle un conector macho de tres pins para poder conectarlo a la placa de pruebas. Figura 3 Traducido by Tino Ferndndez Cueto hn Proyecto 05 Indicador del etado de snimo EL CODIGO Importar libreria Creacién del objeto Servo Declaracién de variales Asociar el objeto Servo conel pin de Arduino inicializar el puerto serie Lectura del valor del potenciémetro Convertir los valores del potenciémetro avalores para el servo Girando el servo Para usar la ibrerta del servomotor primero tiene que importarla. Esto afiade nuevas funciones al sketch desde la libreria. Para referise ala libreria servo, es necesario crear un nombre de esta ibreria en una variable (MiServo). Esto se conoce con el nombre den objeto. Cuando se hace esto, se crea un nombre Unico que tendré todas las funciones y capacidades que la liberia servo posee. A partir de este punto en el programa, cada vez que se utilice el nombre MiServo, se podra usar todas esas funciones y capacidades de la libreria servo. Poner una variable de tipo constante entero con un nombre para el pin que se une al potenciémetro (PinPot), y nombres de variables de tipo entero para guardar el valor de la entrada analdgica (ValorPot)y el valor del angulo (Angulo) al que el servomotor se debe de mover. Dentro de la funcion setup() es necesario decirle a Arduino que pin esta unido al servorotor Se incluye una comunicacién serie con el ordenador para verificar los valores del potenciémetro y ver como se convierten estos valores a angulos para el servomotor. Dentro de la funcién loop(), se procede a leer la entrada analogica (AQ) donde se conecta el terminal central del potenciémetro y a continuacion mostrar este valor en el monitor serie y en la pantalla de un ordenador. Para crear valores a partir de la entrada analogica que se puedan usar con el servomotor, se puede hacer de una forma muy facil usando la instruccién map(). Esta instruccion trabaja con escalas de niimeros. En este caso cambia la escala de valores entre 0-1023 a valores entre 0-179. Necesita cinco argumentos: el ntimero que debe de ser escalado (en este caso dentro de la variable ValorPot), el valor minimo de la entrada (0), el valor maximo de la entrada (1023), el valor minimo de la salida (0) y el valor maximo de la salida (179). El resultado se guarda dentro de la variable Angulo. Finalmente, es el momento de mover el servomotor. El comando MiServo.write( Angulo) mueve el servomotor al éngulo que se indica dentro de la variable Angulo del argumento de esta instruccién. A final de la funcién loop() secolaca un retraso de 100 mili segundos delay(100) para que el servo tenga tiempo a moverse a su nueva posicién. Traducide by Tino Fernéndez Cueto http://w futureworkss.com 67 #include Servo MiServo; int const PinPot= AO; int ValorPot; int Angulo; void setup() { MiServo.attach(9); Serial.begin(9600); ) void loop() { ValorPot = analogRead(PinPot); Serial.print("Posicion del potenciometro: Serial,print(ValorPot); Angulo = map(ValorPot, 0, 1023, 0, 179); Serial.print(" , Angulo Serial.printin(Angulo); MiServo.write(Angulo); delay(100); ) Traducide by Tino Feméndez Cueto http://w futur Proyecto 05 68 Indicador del etado de snimo ‘COMO SE UTILIZA Traducide by Tino Ferndndez Cueto 4 Una ver que Arduino ha sido programado y alimentado, abrir el monitor serie desde el IDE de Arduino. Deberd de mostrar una serie de valores similares a estos: Posicion del potenciometro: 137 , Angulo: 23, Posicion del potenciometro: 242 , Angulo: 42 Cuando se gira el potenciometro se debe de ver como estos nuimeros cambian, ademas también el servomotor debe de girar a una nueva posicién. Observar la relacin entre el valor numérico de la variable del potenciémetro (Posicion del potenciémetro) y el valor ‘del ngulo en el monitor serie (Angulo) con respecto a la posicion real del servomotor. Estos valores deberan de estar en concordancia con el giro del potenciémetro, es decir, ‘cuando el potenciometro esté girado en sentido contrario a las agujas del rloj, en un ‘extrem, el valor valdra cero y el servomotor estard en una posicién, en cambio al girar el potenciémetro hasta el otro extremo, deberd de indicar un valor de 1023 y un angulo de 4179 de manera que el servonotor se mueva 180 grados en a sentido de las agujas del reloj. Hay que indicar que e! uso del potenciémetro como una entrada analégica permite variar celrango completo entre O y 1024. Esto los hace muy itiles para probar proyectos que utilicen entradas analégicas. Los servomotores son matores con un nimero de engranajes y algunos circuitos en su interior. La imecanica del interior proporciona una realimentacién al circuit, de manera que sabe siempre cual es su posicion. si bien pueda parecer que tiene limitado su rango de accion, es posible que consiga realizar una gran variedad de diferentes movimientos afadienddo mecanismos adicionales. Hay una serie de recursos que describen este tipo de mecanismos en detalle como robives.com/mechs y en el libro Making Things Move de Dustyn Roberts. El potenciémetro no es el Gnico sensor que puede usar para controlar la posicién del servomotor. Usando la misma configuracién fisica y un sensor diferente (por ejemplo, una flecha que se mueva para indicar varios estados de énimo), ¢queé clase de indicador se podria realizar? ¢Cémo se podria ‘modificar el proyecto para que trabajar con temperatura (como el medidor de enamoramiento) en lugar de usar un potenciémetro? ,Podria indicar la hora del dia usando una foto resistencia LDR? ¢Cémo habria que cambiar la escala de los valores de estos sensores para que funcionasen con el servomotor? een MILO en een oT oa Ree) aoe ne eee ECR aan Choe es eee aan ee eum eae ase a see cen m lm ny [etd Cecil eme aia -cse Rene tes Ahora que el proyecto esta en marcha y se puede mover, ya puede indicar alas personas si esta dispusto a ayudarles en sus proyectos o por el contrario prefiere estar solo y queno le molesten. Con unas tijeras, cortar un trozo de carton con la forma de una flecha. Colocar el servomotor a 90 sgrados (verificar el valor de! ngulo en el monitor serie sino esta seguro). Pega laflecha de carton sobre el brazo del servoriotor de manera que tenga la misma orientacion que el cuerpo. Ahora sera posible girar a lecha 180 grados cuando se gire el potenciémetro de un extremo a otro, Disponer de un trozo de papel més grande que el servomotor con laflecha encima y dibujar medio circulo sobre este papal. En uno de los extremos del circulo escribir “No entrar’. Enel otro extrema escribir “Puede pasar’. En ‘medio del arco escribir ‘Por favor lamar’. Colocar el servo con a flecha encima del papel. iFelicidades, ahora tiene una manera de decirle aa gente lo que est de ocupado con sus proyectos! Traducido by Tino Fernéndez Cueto 06 Pee CER ETC T} Senne LLL Ee Fed BET CICEL Lesley] — OoL991S0ZaId HOAVEWNZ INGREDIENTES: De a atone! 71 La POR LUZ| jHA LLEGADO EL MOMENTO DE HACER ALGO DE RUIDO! USANDO UNA FOTO RESISTENCIA Y UN ZUMBADOR, VAMOS A MONTAR UN THEREMIN CONTROLADO POR LA LUZ AD Descubra: generar sonido con la funcién tone(), calibrar sensores analégicos Tiempo: 45 MINUTOS Proyectos en los que se basa: 1,2,3,4 Nivel: bajo-alto Un Theremin es un instrumento que genera sonidos mediante el movimiento de las manos de un musico alrededor de este instrumento, Probablemente habrd oid alguno de ellos en peliculas de terror. El Theremin detecta donde se produce el movimiento de la mano del artista en relacién a dos antenas al poder leer la variacién de la carga capacitiva de estas antenas. Las antenas se conectan a un circuito analégico que crea los sonidos. Una de las antenas controla la frecuencia del sonido y la otra controla el volumen. Aunque Arduino no puede producir de una forma exacta los misteriosos sonidos de este instrumento, si que es posible emularlos usando la funci6n toned). La figura 1 muestra los diferentes tonos que se producen al usar analogwrite() y tone(), Esto posibilta que un transductor como pueda ser tn altavoz o un zumbador se mueva hacia delante y hacia atras a diferentes velocidades. PWM 50: analogwrite (50) Observa como este tono esta en estado bajo la mayoria del tiempo, pero la frecuencia es la misma que en el siguiente tono, PWM200. reai000 PWM 200: analogWrite (200) ‘Observa como en este tono la tension esta en estado alto (+5V) durante la mayoria del tiempo, pero la frecuencia sigue siendo la misma que para el tono anterior, PWMSO. sv TONE 440: tone(9, 440) Larelacién ciclica de este tono es del 50% (la imitad del tiempo esta en estado alto y la otra mmitad en estado bajo) y la frecuencia es la misma. TONE 880: tone(9, 880) Eneste tono la relacionciclca es igual que para ay ‘el tono de 440 pero la frecuencia vale el doble ° Figuad Ct 10. SEGUNOOS Traducide by Tino Ferndndez Cueto http://w futureworkss.com Proyecto 06 72 ‘Theremin controlado por luz En lugar de usar sensores capacitivos con Arduino, se utilizar una foto resistencia LDR para detectar la cantidad de luz. Al mover las manos sobre el sensor, se variardla cantidad de luz que llega ala superficie de la LDR, como se hizo en el proyecto numero 4 (lémpara de mezcla de colores). El cambio de tension en al pin de una entrada analégica de Arduino (AQ) determinar’ la frecuencia de la nota ‘que se vaa escuchar. La foto resistencia LDR se conectard a Arduino usando un divisor de tensién tal ycomo se hizo en el proyecto nlimero 4, Probablemente se habra dado cuenta de que en el proyecto 4 la lectura que se obtenia al usar analogRead() no cubria todo el rango de 0 a 1024, La resistencia fija conectada a masa limita la parte baja del rango y el brillo de la luz sobre la LDR limita la parte superior de este rango. En lugar de configurar el circuito para limitar el rango, se calibran las lecturas del sensor entre los valores alto y bajo, convirtiendo estos valores a frecuencias sonoras usando la funcién map() y de esta forma conseguir el mayor rango posible del Theremin. Un zumbador piezocléctrico es un componente electrénico que vibra cuando recibe electricidad. ‘Cuando se mueve desplaza el aie a su alrededor, creando ondas de sonido. MONTANDO EL CIRCUITO Figura 2 Traducide by Tino Ferndndez Cueto http://w futureworkss.com 73 roa UNO Pag Tradicionalmente el Theremin puede controlar la frecuencia y el volumen del sonido. En este proyecto solamente se podra controlar la frecuencia. Ya que no se puede controlar el volumen usando Arduino, es posible cambiar manualmente el nivel de tensién que le llega al zumbador. :Qué sucede sise conecta un potenciémetro en serie con el zumbador y conectado al pin 8? ,Y si se colocase otra foto resistencia? Dp Sobre la placa de pruebas, conectar los cables de alimentacién y masa desde la placa Arduino. Coger el zumbador y conectar uno de sus pins a masa, el otro pin conectarlo al pin digital 8 de Arduino, E) Colocar la foto resistencia LDR en la placa de pruebas, conectar uno de sus pins ala columna de alimentacion de +5V a través de un cable rojo. Conectar el otro extremo de la LDR al pin analdgico AO de Arduino ya masa través de una resistencia de 10 Kilo ohmios. Este circuito esel mismo que el divisor de tensién del proyecto nlimero 4, Traducide by Tino Ferndindez Cueto http.//m futuro Proyecto 06 4 ‘Theremin controlado por luz EL CODIGO Crear variables para calibrar el sensor Crear una constante paral indicador de calibracién Establecer el nimero del pin digital y ponerlo en estado alto Usar la instruccién While() para realizar la calibracién Comparar los valores del sensor para realizar la calibracién Indicar que la calibracién ha finalizado Traducide by Tino Fernéndez Cueto Crear una variable (Valordel!Sensor) que guarde la lectura del valor de la foto resistencia LDR usando lainstruccién analogRead{). A continuacién, crear dos variables, una para almacenar el valor maximo y otra para guardar el valor minimo (ValorMaximodelSensor y ValoMinimodelSensor). Se establece un valor inicial de 1023 para el valor minimo y un valor de 0 para el valor maximo. Cuando se ejecute el programa por primera vez, se comparan estos niimeros con los valores obtenidos en la LDR, para encontrar de esta forma los valores maximo y minimo del rango y poder asi calibrar el sensor. Crear una constante llamada PinLed. Se utiizara para indicar que el sensor esta siendo calibrado mientras el diodo LED de la placa Arduino permanezca encendido. Este diodo LED integrado se conecta al pin digital 13 de Arduino. Dentro de la funcién setup(), y usando la instruccién pinMode(), defini el pin del led (PinLed) como una salida (OUTPUT) y encender este diodo LED. Los siguientes pasos calibraran los valores maximo y minimo del sensor. Se utiliza la instruccién while() para ejecutar otras instrucciones varias veces durante 5 segundos. hile() ejecuta las instrucciones que contiene durante este tiempo hasta que ciertas condiciones se cumplen. Junto con lainstruccién while() se utiliza otra instruccién, mills(), paara saber el tiempo actual. Esta instruccién informa del tiempo que Arduino lleva funcionando desde que se ha sido encendido o desde que se hizo un reset. Dentro de lafuncién loop(), se realza la lectura del valor del sensor; si este valor es mayor que el valor que almacena la variable ValorMaximaSensor (inicialmente 0), se actualiza el valor de esta variable con el valor leido del sensor. AV igual ocurrra con la variable que almacena el valor minimo (ValorMinimoSensor, nicialmente con un valor de 41024), sil valor lefdo del sensor es menor esta variable almacenara este valor. ‘Cuando los 5 segundos han pasado, la ejecucion en bucle de la instruccion while() llegar a sufin. El diodo LED conectado al pin 13 de Arduino dejard de alumbrar,indicando que la calibracién ha finalizado. Se utilizarén los valores maximo y minimo que se acaban de guardar para establecer el rango de frecuencias en la parte principal del programa. Estas frecuenciasson las que se van a ofr a través del zumbador. http://w futureworkss.com ri) 1 Int ValordelSensor; 2 int ValorMinimoSensor = 1023; 3 int ValorMaximoSensor = 0; 4 const int PinLed = 13; 5 void setup(){ 6 pinMode(PinLed,13); while() 7 digitalWrite(PinLed,HIGH); arduino.cc/while 8 while(millis() < 5000) { 9 Valordelsensor = analogRead(A0); 10 _if{ValordelSensor > ValorMaximoSensor) { 11 ValorMaximoSensor = ValordelSensor; 4) 13 it{ValordelSensor < ValorMinimoSensor) { 14 ValorMinimoSensor = ValordelSensor; 5} 16} 17 digitalWrite(PinLed,Low); 18 ) Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 06 76 ‘Theremin controlado por luz Leer y guardar el valor del sensor Convertir el valor del sensor a frecuencia Reproducir la frecuencia (tono) COMO SE UTILIZA Dentro de la funcién loop(), se procede ala lectura del sensor conectado al terminal AO de Arduino para almacenarlo dentro de la variable ValordelSensor. Crear una variable llamada tono. El valor que se almacena dentro de esta variable tono se obtiene de cambiar de rango el valor lefdo del sensor y que esta guardado dentro de la variable ValordelSensor. Usar las variables ValorMaximoSensor y ValorMinimoSensor paara establecer los limites del rango que se va a cambiar de escala usando la funcién 1map(). Los valores iniciales de salida de la nueva escala estén comprendidos entre 50 y 4000. Estos niimeros representan el rango de frecuencias que Arduino va a generar a través del zumbador, es decir, produciré frecuencias comprendidas entre 50 y 4000 ciclos poor segundo. ‘A continuadén, se ejecuta la funcién tone() la cual produce un sonido, Esta funcién necesita de tres argumentos: el ndimero de pin de salida que producir el sonido (en este caso el pin 8) que frecuencia se va a generar (determinada por la variable tono) y durante ‘cuanto tiempo va a sonar esa nota (probar con 20 mili segundos para comenczar) Después de ejecutar la funcidn anterior se introduce un retraso de 10 mili segundos para que lede tiempo a Arduino a generar la nota. Se realiza mediante la instruc delay(10) Nada mas alimentar la placa Arduino se genera una ventana de 5 segundos para calibrar el sensor; esto se indica por que el diodo LED amarillo de la placa se enciende durante todo este tiempo. En este momento acercar la mano a la foto resistencia, a continuacion alejar la mano para no hacer sombra a dicha foto resistencia, de esta manera el programa establece los limites del rango de trabajo en funcién de la iluminacién ambiente. Los movimientos dela mano en el momento de realizar la calibracién deberén ser lo mas parecidos a los movimientos que se van a realizar después de a calibracién para generar los sonidos. Después de 5 segundos, lacalibracién estaré completada,y el diodo LED de la placa ‘Arduino se apagars. Cuando esto suceda, jse debe de escuchar un sonido a través del zumbador piezoeléctrico! Ahora si se mueva la mano sobre la foto resistencia deberé de variar I frecuencia de la nota que se escucha y de esta forma se podrin generar notas con diferentes frecuencias. El efecto final sera parecido a la musica de fondo que se suele escuchar en las peliculas de miedo. Traducide by Tino Fernéndez Cueto http://w futureworkss.com 7 19 vold loop(){ 20. ValordelSensor = analogRead{A0); 21 Inttono= map{ValordelSensor, ValorMinimoSensor,ValorMaximoSensor,50,4000); 22. tone(8,tono,20); 23 delay(10}; 24} El rango que se define dentro de la funcién map() es bastante amplio, se puede intentar modificar ‘estos valores para conseguir que las frecuencias que se generan se ajusten mas a su gusto sobre un estilo musical La funcién tone() trabaja de una forma muy parecida a PWM cuando se usa con la instruccién analogWrite(), pero con la diferencia que al usar esta instruccién la frecuencia de los impulsos ‘generados no cambia: es posible cambiar el ratio de los impulsos durante este periodo de tiempo y asi poder variar la relacién ciclica sin variar la frecuencia (ver figura 1, PWM 50 y PWM200). Con tone() también se envian impulsos pero ademas se puede cambiar la frecuencia de estos impulsos. La funcién tone() siempre produce impulsos con una relacién cilica del 50%, (la mitad del tiempo la sefial estd en estado alto y la otra mitad esta en estado bajo), puede ver un ejemplo en la figura 1 con los tonos de 440 y 880 (pagina 71). Con tonet) no se puede variar la relacién ciclica de una sefial. Ree ne eRe em eee eee eC Meee Puce eckson en) erie MC Ep eo eee ie a each] Per aN Ble we cg Ea ci Ta SoM er Ae eee Eee act eed ete Traducide by Tino Feméndez Cueto 4 Q7 Ree haere ery ee Coo ene omer UL) ces pre eke Li ek ie Eee | SUE La ian Cosel oe BELoy-el Cele) EU Prey) INGREDIENTES: De a atone! Circuito mixto con resistencias como entrada analégica Figura 1 Traducide by Tino Ferndndez Cueto http.//wu futurewere: 9 TECLADO MUSIC CON POCAS RESISTENCIAS Y PULSADORES VAMOS A CONTRUIR UN PEQUENO. TECLADO MUSICAL Descubra: circui 10 con resistencias, mat Tiempo: 45 8 Nivel: med Proyectos en los que se basa: 1,2,3,4,6 Alutilizar en este proyecto varias resistencias y pulsadores conectados auna entrada analogica de Arduino para generar diferentes tonos, se esta construyendo algo que se conoce con el nombre de Circuito mixto con resistencias. Esta es una forma de leer un niimero de pulsadores usando una entrada anal6gica. Es una técnica itil sino entiende como funcionan las entradas digitales. Se conectan un ndmero determinado de pulsadores en paralelo y conectados ala entrada analégica AO de Arduino. Cada uno de estos pulsadores se conectan al positivo de la alimentacién a través de una resistencia. Cuando se presiona un pulsador, aparece una tensién en el terminal de entrada analigico AO de Arduino, y segiin que pulsador se presione esta tensién seré diferente. i se presionan dos pulsadores al misino tiempo se consigue en la entrada anal6gica un tension que sera proporcional al valor dela resistencias en paralelo de los dos, pulsadores presionados. A final se trata de varios divisores de tensién conectados en paralelo los cuales se activan cada vez que se presione un pulsador. terry Poetry erry Proyecto 07 80 Tedado muscal La disposici6n de resistencias y los pulsadores conectados a esta entrada analégica se conoce con el nombre de circuito mixto Figura 2 Pe) tr} Traducide by Tino Femnéndez Cueto http'//wuw future worksco 81 Conectar el cable de alimentacién y la masa alla placa de pruebas como se hizo en proyectos anteriores. Conectar un pin del zumbador a masa. Conectar el otro pin al terminal 8 (salida digital) de Arduino, (Grierson aaa pac tl ycoma somata aaa ilustracién, La disposici6n de las resistencias y los pulsadores conectados a esta entrada analégica se conoce con el nombre de circuito mixto. Conectar el primer pulsador directamente ala alimentaci6n positiva, Conectar el segundo, el tercero yel cuarto pulsador a la alimentacién positiva através de una resistencia de 220 ‘ohmios, 10 kilo chmios y 1 mega ohmio respectivamente. Conectar todas las. salidas de los pulsadores entre si en un solo punto de unin, Conectar este punto dde unién amasa a través de una resistencia de 10Kilo ohmios, y también conectarla ala entrada anal6gica 0 de Arduino. Cada pulsador junto con la resistencias se comportan como un divisor de tensién en el momento de que un pulsador se presiona, Piensa en como mejorar este proyecto afadiendo un dibujo que Imite un tectado, Mientras que los sintetizadores analdgicos antiguos no tenfan un disefio atractivo, este teclado es elegante y ademas. digital. Preparar un pequeno trozo de cartén que se pueda cortar para acomodar los pulsadores y el zumbador. Colocar una etiquets a cada tecla para saber que nota suena en el momento de pulsarla. Traducide by Tino Fernéndez Cueto http://w. futurenorkss.com Proyecto 07 Tedado musical EL CODIGO La matriz Crear una matriz para guardar las frecuencias Establecer la comunicacién serie con el ordenador Leer el valor de la entrada analégica para enviarla al monitor serie Utilizar la instruccién if()..else para determinar que nota deberd de sonar 82 En este programa, sera necesario memoriza las frecuencias de las notas musicales que se vvan a ofr cuando se presione un pulsador. Se van a utilizar las frecuencias medias que se ccorresponden con la cuarta octava de las notas musicales de un piano, C4, D4, E4 y F4, ‘cuyas frecuencias son 262, 294, 330 y 349 ciclos por segundo o hercios. Para poder hacer todo esto se utliza una nueva case de variable lamada matriz. La matriz es una forma de almacenar diferentes valores que estan relacionados unos con otros, como las frecuencias de una escala musical, usando un solo nombre. E! uso de una mmatriz permite acceder ala informacion que ella almacena de una forma rapida y eficiente. Para dedarar una matriz se hace igual que con una variable, pero escribiendo a continuacién del nombre corchetes cuadrados:[]. Después del signo igual a informacion se puede colocar de varias formas, entre llaves para definir el valor de las variables o sin ellas si solo se define un valor. En la primera nea de la ventana de la derecha se declara tuna matriz de seis valores llamada botones (int botonesté!) Enla segunda linea ademas de definir una matriz con una sola variable también se indica el valor que va a contener (int botones(0] =2). Para leer o cambiar los valores de las variables de una matriz, se accede individualmente a cada una de estas variables usando el nombre de la matriz ya continuacién el niimero de posicion que ocupa dentro de esta matriz. La posicin se refiere al orden que ocupa esta variable cuando la matriz es creada. La primera variable ocupa la posicin , la segunda la posicion 4, la tercera la posici6n 2 y asi sucesivamente. Por ejemplo, en a matriz int notas[] = (262,294,390,349], el valor de la variable notas[2] vale 330. Configurar una matriz para guardar las cuatro notas musicales usando las frecuencias que se muestran en el primer parrafo de esta hoja. Secrea como una matriz global al declararla antes dela funcion setup). Dentro de la funcion setup(), se escribe la instruccién que permite realizar la comunicacién con el ordenador. Enel loop(), deciarar una variable para guardar el valor que se obtiene al leer el pin de la entrada analégica AO de Arduino (int ValorTeclaPulsada). Como cada pulsador tiene en serie una resistencia diferente conectada al positivo de la alimentacion, en cada uno de ellos aparecera una tension diferente cuando estén presionados, por ejemplo, i se presiona el pulsador que tiene la resistencia de 10K en serie (pulsador de la Nota 3) en la entrada AO apareceran 2.4V (para +VCC = 4.8V), por tanto el valor que lee Arduino es 512. Para ver estos valores en la pantalla del ordenador se afiade la linea “Serial printin(ValorTedlaPulsada);” Usando la instruccién iff)...else, se puede asignar cada uno de los valores que se obtienen al presionar los pulsadores a un tono diferente, por ejemplo, el pulsador Nota 3 con 330Hz, para un valor de 512, Como las resistencias tienen una tolerancia, al presionar el pulsador de la Nota 3 Arduino puede leer un valor diferente a 512, por tanto se establecen unos mérgenes (de 505 a 515) para saber que este pulsador ha sido presionado. Después de montar el circuito si alguno de los pulsadores no funciona usar la informacién del monitor serie para saber cual es el valor que lee Arduino y asi ampliar el margen para este pulsador. Traducide by Tino Feméndez Cueto http://w. futurenorkss.com 83 int botones[6]; / Crear una matriz para 6 variables de tipo entero Int botones[0] = 2; /! Dar a la primera variable de la matriz el valor de 2 4 int notas[ ] = {262,294,330,349); 2 void setup() { 3. Serial.begin(9600); 4) 5 vold loop() { 6 Int ValorTeclaPulsada = analogRead(A0); 7 Serial.printin(ValorTeclaPulsada); 8 Ii(ValorTeclaPulsada == 1023){ 8 tone(8, notas[0}); 10} Traducide by Tino Feméndez Cueto http://w. futurenorkss.com Proyecto 07 Teclado musical Reproducir las notas que se correspondan con el valor analégico de la entrada Parar de toca un tono cuando no se presiona nada COMO SE UTILIZA Después de a funcién if), se llama ala funcién tone(). El programa se dirige ala matriz para determinar que frecuencia se debe de reproducir. Sila lectura realizada en la entrada analégica AO coincide con uno de los valores de las instrucciones if, se le indica a ‘Arduino que reproduzca un tono. Es posible que el circuito produzca ruido, ya que los valores pueden fluctuar un poco mientras se presiona un pulsador. Para corregir esta variacién, es una buena idea disponer de un rango de valores para verificar que el valor dela lectura coincide con alguno de los valores dentro de este rango. Se utiliza el operador légico AND (funcién de multiplicacién), representado por "&&", dentro de ‘miitiples instrucciones if)..else para comprobar la condicién anterior. Si presiona el primer pulsador (SW1 - Nota 4), la nota [0] (262 Hz) se escuchara a través del zumbador. Si presiona el segundo pulsador (SW2 - Nota 2) se oir la nota[] (294 Hz), y si se presiona el tercer pulsador (SW3 - Nota 3) se oird la tercera nota[2] (330 Hz). ‘Ahora es cuando se puede ver lo util y manejable que es usar una matriz. Solo una frecuencia se puede reproducir ala vez, asi ques! se presionan dos pulsadores al mismo tiempo solo se ord un sonido, aquel que tenga la resistencia mas baja delos dos pulsadores presionados. Para silencia el zumbador cuando no se presiona un pulsador se utiliza la funcion noTone(), el cual necesita el nimero del terminal en donde dejar de reproducir el sonido, Si los valores de las resistencias del circuito montado son los mismos que los mostrados en este proyecto, se deberd oir un sonido a través del zumbador cuando se presione un pulsador. Si no es asi, mirar a través del monitor serie el valor que aparece al presionar un pulsador para verifcar quese encuentran dentro de los rangos establecidos en las. instrucciones if{)...else. Si se oye un sonido intermitente, incrementar un poco el rango de valores de la instruccién cuyo valor se encuentra cerca del valor mostrado al presionar el pulsador que produce este sonido intermitente. Presionar varios pulsadores al mismo tiempo, para ver que tipo de valor aparece en el monitor serie. Usar estos nuevos valores para producir mas sonidos. Experimentar con diferentes frecuencias para aumentar el niimero de tonos que puede reproducir este teclado. Es posible ver cuales son las frecuencias de las notas musicales en esta pagina: arduino.cc/frequencies Si se reemplaza el circuito mixto de resistencias por sensores analdgicos, ;ser4 posible usar la informacién que se obtiene de estos sensores para crear un instrumento musical més dindmico? Se podrian usar estos valores para cambiar la duracién de una nota o, como el proyecto del Theremin, XY ‘rear una gama de sonidos que varian con la iluminacion, Traducide by Tino Fernéndez Cueto http://w futureworkss.com La funcién tonel) es itil para generar tonos, pero tiene algunas limitaciones. Solo puede crear formas de onda cuadrada, no ondas con formas senoidales o triangulares. Las ondas cuadradas en absoluto pparecen andas. Coma se pudo ver en la Figura 1 del proyecto niimero 6 (pagina 71), la onda cuadrada esta formada por una serie de pulsos en estado bajo (OV) yen estado alto (+5V). Ahoraes posible formar una banda para usar este teclado, pero habra que tener en mente algunas 0:96: solo un tono se puede reproducir ala ver yla funcién tone() interferira con la instruccion ‘analogurite() sobre los pins 3 y 11, en caso de que se quiera usar junto con estos pins para aumeentar cel numero de sonidos que este teclado pueda generar. Las matrices son utiles para guardar el mismo tipo de informacion junta: Neen tre em RN oe een nL Ce eee RoR ene Me ek Uae aa Reo eae Tr Ucn (a) ean om ne ae Tene ees nen 0) Traducide by Tino Ferndndez Cueto http://w futureworkss.com 88 Pe ice here ET ee Fee ReR CE RSS EICIEL) INGREDIENTES: De a atone! 87 iS Ny DIGITAL EN ESTE PROYECTO, SE VA A MONTAR UN RELOJ DIGITAL DE ARENA QUE ENCIENDE UN DIODO LED CADA 10 SEGUNDOS. DE ESTA MANERA AL USAR UN TEMPORIZADOR CONSTRUIDO EN ARDUINO SE PODRA SABER CUANDO TIEMPO SE TRABAJA EN UN PROYECTO. Descubra: datos de tio largo, creacién de un temporizador Tiempo: 30 MINUTOS Proyectos en los que se basa: 1,2,3,4 Nivel: medio Hasta ahora, cuando se ha querido que suceda algo al pasar un intervalo de tiempo especifico con Arduino se ha usado la instruccién delay(), la cual es ttl pero un tanto limitada, Cuando se ejecuta delay() Arduino se paraliza hasta que se termine el tiempo especificado dentro de esta instruccidn. Esto significa que no es posible trabajar con las seftales de entrada y salida mientras estd paralizado. Delay tampoco es muy ttl para llevar un control del tiempo transcurrido, Resulta un tanto engorroso hacer algo cada 10 segundos utilizando para ello delay junto con este tiempo de retraso. Lafuncién millis() ayuda a resolver estos problemas. Realiza un seguimiento del tiempo que Arduino ha estado funcionando en mili segundos, Se ha utiliza esta funcién en el proyecto ndimero 6 (pagina 70 Theremin controlado por luz) para establecer un tiempo de 5 segundos que permita calibrar los niveles de iluminacién del sensor. Hasta ahora se han declarado variables del tipo int. Una variable int (entero) es un nimero de 16 bit, esto significa que puede guardar niimeros decimales entre -32768 y 32767. Estos valores numéricos pueden parecer muy grandes, pero si Arduino cuenta 1000 veces por segundo usando la funcién mills), llegara a superar el rango de valores entre -32768 y 32767 (65536 nimeros) en 65.5 segundos. Los datos de tipo largo o long pueden guardar niimeros de 32 bits (entre -2147483648 y 2147483647). Ya que no es posible contar el tiempo hacia atras usando nuimeros negativos, la variable para guardar el tiempo que hay que usar en la funcion mills() se llama unsigned long. Cuando un tipo de datos es llamado unsigned (sin signo), solo trabaja con ntimeros positivos. Esto posibilita realizar cuentas mucho mayores. Una variable del tipo unsigned long puede contar mas de 4294 millones de niimeros. Son bastantes ‘nimeros para ser contados con mills() ya que le levaria hacerlo més de 50 dias. Al poder comparar el tiempo que cuenta millis() con un tiempo en concreto, es posible determinar la cantidad de tiempo que haa transcurrido con respecto a ese tiempo Cuando se gira el reloj de arena sabre si mismo, el interruptor de inclinacién cambia de estado, y comenzard un nuevo ciclo de encendido de los diodos LED. El interruptor de inclinacién trabaja igual que un interruptor normal, pero en esta aplicacién se comporta como un sensor de encendido/apagado. Aqui se usar como una entrada digital, ya que proporciona dos niveles l6gicos diferentes, “O" y “1". Los interruptores de inclinacién son tinicos ala hora de detectar Ia orientacién o indlinacién de un objeto. En su interior disponen de una pequefia cavidad con una bola de metal. Cuando el interruptor se gira la bola de metal se mueve en su interior rodando hasta uno de los extremos de la cavidad, haciendo que dos terminales se conecten entre si de forma que se cierra el circuito que est conectado a la placa de pruebas. En ese momento el reloj de arena digital comenzaré a contar un tiempo de 60 segundos encendiendo un LED, de los 6 de que dispone, cada 10 segundos, Traducide by Tino Fernéndez Cueto http://w futureworkss.com 88 Proyecto 08 Reloj de arens digital Figura 1 ARDUINO ihr) God Traducide by Tino Ferndndez Cueto 89 @ Conectar el cable de alimentacion positivo y negativo (cables rojo y negro) a a placa de pruebas @ _Conectar el nado de cada uno de los seis LEDs alos pins digtles de 2a 7, Conectar el otro pin de los LED a masa y a través de una resistencia de 220 ohmios © Conectar un pin del interruptor de inclinacién al positivo de alimentacion +5V de a Arduino. Conectar el otro pin a masa usando una resistencia de 10 kilo ohmios. Conectar el punto de unién de esta resistencia con el terminal del interruptor al pin digital numero 8, Noes necesario mantener este proyecto conectado al ordenador una vez ha sido cargado el programa nla placa de Arduino, Se podria intentar construir una pequeia caja de cartén para colocar el montaje en su interior junto con la bateria, También se puede dibujar en una de las caras de esta caja unos indicadores numéricos para los diodos led, de manera que vaya indicando el tiempo transcurrido después de haber girado la caja. a Los interruptores de inclinacién son geniales, componentes de bajo coste para determinar la inclinacién ( \ de algtin objeto. Los acelerémetros son otro tipo de sensores que proporcionan mucha mas informacion. También son significativamente mas caros. Para saber si un objeto se gira cuando se mueve la utilizacion de un sensor de inclinacién es la opcién mas adecuada, Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 08 Reloj de arena distal EL CODIGO Declarar variable de tipo constante Crear una variable para guardar el tiempo Definir variables para las salidas y la entrada Crear una variable para establecer el intervalo entre los encendidos Establecer como trabajan los pins digitales Averiguar el tiempo que el programa lleva funcionando Evaluar la cantidad de tiempo transcurrido desde el bucle anterior Es necesario definir varias variables del tipo global para conseguir que el programa funcione. Para comenzar, se crea una variable del tipo constante llamada Pininterruptor. Este sar el nombre del pin del sensor de inclinacién que detecta el giro del circuito. Crear una variable del tipo unsigned long. Se utiliza para almacenar el tiempo en que cambia de estado (apagado-encendido) cualquiera de lo seis LEDs CCrear una variable que almacene el estado del sensor de indlinacién y otra que guarde el estado anterior del mismo, Se usaran estas dos variables para comparar la posicion (cerrado o abierto) del interruptor del sensor de un ciclo completo al siguiente. Crear una variable llamada Led. Se usara para contar qué LED sera el préximo en encenderse. Comienza por la salida digital de pin 2 (LED Dt). La ltima variable que se va a crear guarda el intervalo de tiempo de encendido entre cada LED. Seré una variable del tipo long. Para establecer un tiempo de 10 segundos (el tiempo que pasa entre el encendido de un LED y el siguiente) el valor de esta variable valdr 10.000 mili segundos. Para aumentar o disminuir este tiempo simplemente hay que cambiar este valor, por ejemplo, para un tiempo de 1 minuto poner 60000. Dentro de la funcién setup() se configuran los pins que van a trabajar como salidas para encender los diodos LED, en este caso los pins 2 al 7. Se.utiliza la instruccion for() para ‘crear un bucle que define en solo tres lineas de cédigo estos seis pins como salidas OUTPUT. También aqui dentro se define el pin (8 dentro de PinInterruptor) quese conecta al sensor de inclinacion como una entrada INPUT. Cuando se ejecuta la parte principal de este programa dentro del loop(), es necesario saber el tiempo que ha transcurrido desde que Arduino est encendido usando la instruccion mills(), y a continuacion guardar este dato dentro de una variable local (porque se localiza dentro del bucle) llamada Tiempodctual. Utilizando una instruccin if), se verificard si se ha pasado el intervalo establecido para encender un diodo LED. Restando el valor de la variable TiempoActual del valor de la variable TiempoPrevio se comprueba si este resultado es mayor que el valor dela variable TiempolntervalocadaLed. si han pasado 10.000 mill segundos (10 segundos), la variable TiempoPrevio toma el valor de la variable TiempoActual. Traducide by Tino Fernéndez Cueto http://w futureworkss.com A const int Pininterruptor = 8; unsigned long TlempoPrevio= 0; Int Estadodelinterruptor = 0; int EstadoPreviodelinterruptor = 0; int Led = 2; Jong TiempointervalocadaLed = 10000; void setup0){ for(int x= 23xeB;x+){ pinModetx, OUTPUT); ] pinMode(Pininterruptor, INPUT); } void loop(){ unsigned long TlempoActual = milis(); lf(TiempoActual- TiempoPrevio > Tlempointervalocadated){ TiempoPrevio = TiempoActual; Traducide by Tino Feméndez Cueto w futureworkss.com Proyecto 08 Reloj de arens digital Encender un LED y prepararse paraencenderel Juente nnprobar si todos los LEDs estan encedidos Leer el estado del sensor Poner a cero os valores de las Variables si es necesario Establecer el estado actual al estado anterior COMO SE UTILIZA La variable TlempoPrevio indica la tltima vez que un LED fue encendido, Una vez se ha configurado TiempoPrevio, se enciende un LED y se incrementa al valor de la variable Led. Una vez que transcurra el tiempo indicado en Ia variable TiempointervalocadaLed, se encendera el siguiente LED. Se aftade otra instruccién iff) en el programa para comprobar si el LED conectado al pin mero 7 esta encendido. En caso de que se cumpla esta condicién no se hace nada. Se odra decidir mas adelante que sucede cuando ha transcurrido este tiempo de 1 minuto. ‘Ahora que se ha comprobado el tiempo, también se comprueba sel sensor de inclinacion ha cambiado de estado. Se lee el valor del interruptor dentro de la variable Estadodelinterruptor. Con otra instruccién if() se comprueba siel interruptor del sensor de inclinacién ha cambiado de posicién con respecto a otro estado anterior. La operacién != comprueba si la variable Estadodelinterruptor no es igual a la variable EstadoPreviodelinterruptor. Si son diferentes, se apagan todos los diodos LEDs, y la variable LED toma el valor del primer pin de salida de Arduino (2), ademas de poner a cero el temporizador de los LEDs al igualar la variable TiempoPrevio a TiempoActual. Al final del bucle loop(), se guarda el estado actual del interruptor del sensor de inclinacién dentro de la variable EstadoPreviodelinterruptor, de esta manera se puede ‘comparar con el valor que se guarde en Estadodelinterruptor en la siguiente ejecucién del programa o bucle loop(), Una vez que se ha programado la tarjeta Arduino, comprobar el tiempo de un minuto usando un reloj, Después de que hayan pasado 10 segundos se debe de encender el primer diodo LED. Cada 10 segundos debe de encenderse un LED. Al final de los 60 segundos todos los diodos LEDs deberdn de estar encendidos. Si se mueve el circuito en ‘cualquier momento y se consigue que el sensor de inclinacién cambie de estado, todos los ddiodos LEDs se apagardn y comenzar uno nuevo ciclo de encendido de los LEDs cada 10 segundos, Traducide by Tino Fernéndez Cueto http://w futureworkss.com v7 19 a1 RREB Sey 20 at 93 digitalWrite(Led, HIGH); Estadodelinterruptor = digitalRead(Pininterruptor); } lff€stadodellnterruptor != EstadoPreviodelinterruptor){ forlintx=23x 2. LiquidCrystal led(12, 11, 5,4, 3, 2); 3 const int PindelSensor = 6; 4 int EstadodelSensor = 0; 5. int EstadoPreviodelSensor = 0; 6 int Contestar; 7 void setup(){ LCD library reference 8 Icd.begin(16, 2); arduino.ce/lelibrary 9 pinMode(Pindelsensor, INPUT); 410 Ied.print(*Preguntame"); 11 Ied.setCursor(0, 1); 12 Ied.print("Bola de Cristal"); 13) 14 void loop(){ 15 EstadodelSensor = digitalead{Pindelsensor); 16 If{€stadodelSensor != EstadoPreviodelSensor) { 17. if(EstadodelSensor == LOW) { 18 Contestar = random(6); Random reference arduino.cce/random Traducide by Tino Feméndez Cueto http://w. futurenorkss.com Proyecto 11 Bola de cristal Predecir el futuro 120 Limpiar la pantalla con la funcién led.clear(). Estas instrucciones también mueven el cursor a la posicion inicial 0,0; la primera columna de la primera fila del LCD. Escribir el texto “Labola dice” en pantalla y mover el cursor aa linea siguiente. La instruccion switch() ejecuta diferentes partes del cOdigo dependiendo del valor que tenga esta instruccion. Cada una de estas partes del cédigo se llama mediante una instruccion case switch) la cual verifca el valor de la variable Contestar (valor como argumento de lainstruccién}; de esta manera cualquier valor que se genera dentro de la variable Contestar determina cual de las instrucciones case (de 1 a 7)serd ejecutada. Dentro de las instrucciones case, el codigo sera el mismo, pero los mensajes que muestre en pantalla seran diferentes, Por ejemplo, en case O el cédigo hace que a través de la funcion led. print(*Si") aparezca el texto de “Si” en la pantalla. Después de la funcién led. print() hay otro comando: break, que le dice a Arduino donde se localiza el final de la altima instruccién case. Cuando se ejecuta break, e! programa sata al final de la ltima sentencia de la instruccién switch, la cual siempre sera J. Para comengar se van a crear un total de 8 instrucciones case. Cuatro de las respuestas sern positivas, dos serén negativas, una respuesta que no tiene ni idea y otra respuesta que vuelva a preguntar de nuevo. Lo.ltimo que hay que hacer al final del programa, dentro de la funcién loop(), es asignar el valor de la variable EstadodelSensor a la variable EstadoPreviodelSensor. Esto posibilita que se pueda realizar un seguimiento del cambio de estado (de 0a 1 6de 1.20) enel sensor de inclinacién la préxima vez que el programa se ejecute. Traducide by Tino Feméndez Cueto http://w. futurenorkss.com 121 19 Ied.clear(); 2 Icd.setCursor(0, 0); a Ied.print("La bola dice:"); 2 led.setCursor(0, 1); 23 switeh(Contestar){ 24 case 0: Switch Case reference 2 led,print("si"); arduino.cc/switchcase 26 break; 7 case 1; 28 cd.print("Es probable"); 29 break; 30 case 2: at |ed.print("Ciertamente"); 22 break; 33 case 3: 4 Icd.print("Buenas perspectivas"); 35 break; %6 case 4: 7 |ed.print("No es seguro"); 38 break; 39 case 5: 40 ed.print("Pregunta de nuevo"); 4 break; 42 case 6 43 led.print("Ni idea"); 4 break; 45 case7: 46 ed.print("No"); 47 break; 48 } 49 } so} 51 EstadoPreviodelsensor = EstadodelSensor; 52} Traducide by Tino Feméndez Cueto http://w. futurewor Proyecto 11 122 Bola de cristal COMO SE UTILIZA Para usar la bola de cristal primero hay que darle alimentacién a la placa Arduino. ‘Comprobar sien la pantalla del LCD aparece el texto “Preguntame” y en la segunda linea “Bola de Cristal”. Sino puede ver bien los textos debera ajustar el potenciémetro para variar el contraste hasta que los caracteres se vean correctamente. Realizar una preguntaa la bola de cristal y a continuacién mover hacia arriba y hacia abajo el circuto para queeel sensor de inclinacién pueda detectar estas variaciones. De esta manera obtendré una respuesta a su pregunta. Sila respuesta no le satisface, puede preguntar de nuevo. Intente afiadir sus propias respuestas a las instrucciones print(), pero teniendo en mente que solo es posible usar 16 caracteres por linea. Asegurarse cuando se afiaden nuevas instrucciones case switch, ‘que se ha ajustado el nimera de opciones que la variable Contestar va a almacenar; recordar que esto se define mediante la instruccién random(8), en este caso 8 respuestas. Si se afiaden dos nuevas respuestas habra que aumentar el niimero 8 a 10 y afiadir dos nuevas instrucciones case switch. La pantalla LCD trabaja cambiando las propiedades eléctricas de un liquido que se encuentra montado entre cristales polarizados. E! cristal solo permite que un tipo de luz pase a través de él. Cuando el liquido entre los cristales esta cargado se vuelve semi s6lido de manera que puede representar caracteres al bloquear la luz que incide sobre él. Las funciones descritas aqui para cambiar el texto que aparece en la pantalla LCD son muy simples. Una ver que tenga claro como funciona puede estudiar lalibreria de este LCD para descubrir nuevas funciones. Puede intentar que el texto se mueva all largo de la pantalla o que se actualice continuamente. Para saber mas sobre como trabajar con la liberia de la pantalla LCD visitar: arduino cc/led eR el cel ae PN LC ae lm eMC ceM Mca Pep a1 Gog ra i se controla el flujo de partes del programa al poder Traducido by Tino Fernéndez Cueto hi ee Re eee a een ee eer T 1 RESISTENCIA DE 1MEGA OHMIO. ola te ert LeD SSS oe RESISTENCIA DE 10 KILO OHMIOS en os RESISTENCIA DE 220 OHMIOS: ee Bia Veli tot ZUMBADOR Lal scel aka. co) Menta De a atone! 125 TNE BLOQUEO SECRETO CONSTRUIR UN MECANISMO DE BLOQUEO SECRETO PARA EVITAR QUE ALGUIEN PUEDA SUSTRAER LAS COSAS QUE TENGA GUARDADAS EN UNA CAJA Descubra: entrada con un zumbador, escribir sus propias funciones Tiempo: 1HORA Proyectos en los que se basa: 1,2,3,4,5, Nivel: alto Elzumbador usado para reproducir sonidos en los proyectos del theremin y del teclado también se puede usar como un dispositive de entrada o sensor. Cuando se le aplica una tensién de SV, este sensor puede detectar las vibraciones las cuales pueden ser leidas por las entradas analégicas de ‘Arduino, Es necesario conectar una resistencia de un valor alto (del orden de 1Mega ohmio) entre la salida y masa para que funcione correctamente, es decir, se realiza el montaje del zumbador en serie con una resistencia de 1Mega ohmio conectada a masa, de manera que el conjunto forma un divisor de tensién, Cuando un zumbador piezoeléctrico es presionado contra una superficie plana puede vibrar, como por ejemplo sobre una mesa de madera, siendo Arduino capaz de detectar la intensidad de esta vibracion. Usando esta informacién puede comprobar si el nuimero de vibraciones detectadas se encuentran dentro del rango de trabajo establecido. En el cédigo puede contabilzar el ndmero de vibraciones y ver sicoinciden con el numero de vibraciones almacenadas. Un pulsador permite bloquear el motor en una posicién. Algunos diodos LEDs aportan informacién: un LED rojo incicara que la caja esta bloqueada, un LED verde indicaré que la caja no estd bloqueada, y un LED amarillo permite saber si se ha recibido el nimero correcto de vibraciones. También escrbira su propia funcién la cual le permitira saber si una vibracién es demasiado fuerte 0 demasiado debil El escribir sus propias funciones le ayuda a zhorrar tiempo de programacién al lamar siemprea una misma parte del codigo sin necesidad de volverlo aescribirlo cada vez que se use. Las funciones pueden usar argumentos y devolver valores a través de estos argumentos. En este caso, utilizard una funcion para determinar el nivel de volumen de la vibracion. Si se encuentra dentro del rango correcto se incrementara el valor de una variable. Es posible construir el circuito simplemente por hacerlo, con ninguna finalidad, pero es mucho mas interesante y didactico hacerlo con un objetivo, en este caso realizar una caja de seguridad en donde uardar algo. Si dispone de una caja de madera o una caja de carton puede realizar una serie de agujeros en su interior, usar un servomotor para abrir y cerrar un pestillo, y asi evitar que cualquiera pueda abrir la caja para coger lo que hay en su interior. Traducide by Tino Feméndez Cueto http://w. futurenorkss.com Proyecto 12 126 Mecanismo de blo Figura 1. ARDUINO uno ce Meg cd Traducide by Tino Femnéndez Cueto http'//wuw future worksco 127 Hay muchas conexiones en la placa, asegurarse que todas estas conexiones estan realizadas correctamente, © conectar los cables de alimentacién y masa a ambos lados de la placa de pruebas. Colocar el pulsador sobre la placa de pruebas conectando uno de sus terminales a 45V. El otro ‘extremo del pulsador conectarlo a masa a través de una resistencia de 10Kilo ohmios. CConectar la union de la resistencia y el terminal del pulsador a pin digital numero 2 de Arduino: @ Colocarel zumbador sobre la placa de pruebas ya continuacion conedtar un cable desde uno de sus terminales a positivo dela alimentacién. Siel zumbador tiene un cable de color rojo 0 el simbolo "+", este sor el terminal que se conecte al positive. sien el zumbador no se indica la polaridad se podra conectar de cualquier forma, Conectar el ‘tro terminal del zumbador al terminal Analog 0 de Arduino, Colocar una resistencia de ‘Mega chmio entre masa y este terminal conectado a Arduino. Valores de resistencia 1mas bajos haran que el zumbador sea menos sensible las vibraciones. © Cablear los LEDs, conectando los catodos (patilla corta) a masa, y colocar un resistencia de 220 ohmios en serie con los dnodos. A través de sus respectivas resistencias, conectar el LED amarillo al pin digital 3 de Arduino, el LED verde al pin digital 4, y el LED rojo al pin digital 5. @ nsertar el conector macho de tres terminales dentro del conector hembra del servomotor (ver figura 3). Conectar el cable rojo ala alimentacién y el cable negro a masa. Colocar un condensador electrolitico de 100 micro faradios en las lineas de alimentacion de la placa de pruebas para suavizar las variaciones bruscas de corriente y evitar variaciones de tensiGn, ademas asegurarse que el condensador se ha conectado con la polaridad correcta, Conectar el terminal de datos del servomotor, el cable blanco, al terminal 9 de Arduino. El servomotor viene con un conector hembra, asi que ser’ necesari afiadile un conector macho con tres terminales para poder conectarloala placa de pruebas Figura 3 Traducide by Tino Fernéndez Cueto http://w. futurenorkss.com Proyecto 12 128 Mecanismo de blogueo secrato EL CODIGO Libreria Servo Constantes utiles Variables para guardar los valores del pulsador y del zumbador Umbrales de los golpes Variables para el estado del bloqueo y el numero de golpes Configurar la direccién de los pines digitales e inicalizacion det servo y del puerto serie Desbloquear Comprobar el pulsador Como en el proyecto de! “indicador de estado de Snimo”, es necesario importar la libreria Servo y crear una copia para usar el motor. Crear constantes para nombrar las entradas y as salidas Crear variables para guardar los valores del pulsador y del zumbador Configurar algunas variables de tipo constante para usar como limites para los niveles maximo y minimo de los golpes La variable bloqueado permite saber si el bloqueo esta activado 0 no. Una variable de tipo boolean contiene datos que solo pueden ser verdadero - true (1), 0 falso - false (0). ‘Cuando se aplica tensién al circuito debe de empezar con el mecanismo desbloqueado. La iltima variable de tipo global guardard el niimero de golpes validos que haya recibido. Dentro de la funcién setup), conectar el servo al pin 9. Establecer los pines de los LEDs como salidas y los pines del pulsador como entradas. Inicializar la comunicacion serie con el ordenador para poder ver el nivel de los golpes, en que estado se encuentra el bloqueo y el nmero de golpes validos que se han efectuado. Encender el diodo LED verde, mover el servo a la posicion de desbloqueo, y mostrar el estado actual en el monitor serie indicando que el circuito esta en la posicién de desbloqueo. Dentro de loop), primero se comprueba sila caja esta bloqueada o no lo esta. Esto determinara lo que ocurra en el resto del programa. Si est bloqueado se procedea leer el estado del pulsador. Traducide by Tino Fernéndez Cueto http://w futureworkss.com 129 #include Servo miServo; const int zumbador = AO; const int PinPulsador = 2; const int LedAmarillo = 3; const int LedVerde = 4; const int LedRojo = 5; Naunee Int ValorGolpe; Int ValorPulsador; ~~ 10 const int GolpesSuaves = 10; ‘const int GolpesFuertes = 100; 12 boolean bloqueado = false; 13 Int NumeroGolpes = 0; 14 old setup0){ 15. miServo,attach(9); 16 pinMode(LedAmarillo, OUTPUT); 17 pinMode(LedRojo, OUTPUT); 18 pinMode(LedVerde, OUTPUT); 49 pinMode(PinPulsador, INPUT); 20 Serial:begin(9600); 21. digitalWrite(LedVerde, HIGH); 22 miServo.write(0); 23 Serial.printin("La caja esta desbloqueada!"); 24) 25 void loop(){ 26 if{bloqueado == false){ 27 ValorPulsador = digitalRead(PinPulsador); Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 12 130 Mecanismo de blogueo secreto Bloqueado Leer los golpes en el sensor Contar solo los goles validos Desbloquear Definir una funcién para comprobar la valided de los golpes Si el pulsador esta cerrado (esté presionado), cambiar el valor de la variable bloqueado a true (verdadero), indicando que el bloqueo esta activado. Apagar el diodo LED verde y encender el LED rojo. Es necesario activar el monitor serie para que aparezca la indicacion “La caja esta bloqueadat” y de esta manera ver el estado del bloqueo. Se mueve el servo a la posicién de bloqueo. Se afiade un tiempo de 1 segundo para que el bloqueo tenga tiempo de realizarse. Sila variable bloqueo es true, y el bloqueo esta activado, leer el valor de la vibracién del zumbador y almacenarlo en ValorGolpe. Las siguientes instrucciones comprueban si se han efectuado menos de tres golpes validos y sise percibe alguna vibracién en el sensor (zumbador). Si ambas condiciones son ciertas, comprueba si el golpe en este momento es vilido 0 noo es, ¢ incrementala variable NumeroGolpes en caso de ser vilido. En esta parte del codigo es donde se realiza la. llamada. la funcién personalizada VerificarGolpes(). Se escribe esta funcién al final de la funcién loopl). VerificarGolpes|) comprueba que el valor de fa variable ValorGolpe es un golpe valido 0 no lo es, ademas esta variable forma parte del argumento de esta funcien. Después de que se ejecute esta funci6n se indica, a través del monitor serie, el nimero de golpes validos que faltan para realizar el desbloqueo. Comprobar sise han efectuado tres o més golpes vilidos. si esta condicién se cumple, ‘cambiar la variable de bloqueo a false (falso), y mover el servomotor a la posicién de desbloqueo. Esperar 20 mili segundos para que le de tiempo a mover el servornotor, y ‘cambiar el estado del LED verde a encendido y apagar el LED rojo. Mostrar un mensaje en el monitor serie indicando que “La caja est desbloqueada!”. Cerrar la instrucci6n else y a funcién loop() con un parte de llaves, ‘Ahora es el momento de escribir la funcién personalizada VerificarGolpes(). Cuando se escriben funciones personalizadas es necesario indicar si va a devolver un valor 0 no. Sino vva adevolver un valor la funcién se declara del tipo void, igual que las funciones loap() 0 setup(). Siva a devolver un valor se debe de declarar de que tipo (int, long, float, etc). En este caso se comprueba si un golpe es valido (true) ono lo es (false) por eso se declara la funcién de tipo boolean Traducide by Tino Fernéndez Cueto http://w futureworkss.com 28 2 3 2 3 35 7 8 9 44 42 43 45 47 49 51 52 53 55 56 57 131 if(ValorPulsador == HIGH){ bloqueado = true; digitalWrite(LedVerde, LOW); digitalWrite(LedRojo, HIGH); miservo.write(90); Serlal.printin("La caja esta bloqueada!"); delay(1000); ) } If(bloqueado == true){ ValorGolpe = analogRead(zumbador); if(NumeroGolpes < 3 && ValorGolpe > 0}{ If(VerificarGolpes(ValorGolpe) == true){ NumeroGolpes++; } Serial.print(3-NumeroGolpes); Serial.printin(" golpes para abrir"); } if(NumeroGolpes >= 3){ bloqueado = false; miservo.write(0); delay(20); digitalWrite(LedVerde, HIGH); digitalWrite(LedRojo, LOW); Serial.printin("La caja esta desbloqueada!"); NumeroGolpes = 0; } } } boolean VerificarGolpes(int valor}{ Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 12 132 Mecanismo de blogueo secreto Comprobar la valided del golpe Indicando que el golpe es valido Funcién retorno valido Indicando golpe no valido. Funcién retorno no valido COMO SE UTILIZA La misién de esta funcién seré controlar un nimero (que contiene la variable ValorGolpe) para ver si es lida o1no. Para pasar el valor de esta variable dentro de la funcién se crea tuna variable de tipo entero (int valor) dentro del argumento en el momento de crear dicha funcién, En esta funcion, cada vez se refiere a la variable Valor se usaré cualquier nimero que contenga la variable ValorGolpe dentro del programa principal y que se transmite a través del argumento de la funcién. En esta linea del programa se comprueba que el dato que contiene la variable Valor es mayor que el dato que contiene la variable GolpesSuaves y menor que el dato cue contiene la variable GolpesFuertes. Por ejemplo, siel dato de ValorGolpe vale 25, se pasa alla funcién a través del argumento con lo cual la variable Valor tendré este dato y a continuacién se comprueba que es mayor que 10 y menor de 100, segiin se puede ver en la linea adjunta de la pégina siguiente. Si el dato de la variable Valor se encuentra entre los dos valores anteriores (entre 10 y 100] entonces existe un golpe valido, por tanto el diodo LED amarillo se enciende durante 50 mili segundos y aparece un texto en el monitor serie indicando que se ha producido un golpe valido “Golpe valido de valor " asi como dicho valor. Para permitir al programa principal usar el resultado de la comparaciOn quese acaba de realizar dentro de la funci6n se utiliza el comando return (retornc]. Este comando return también hace que la funcién finalice cuando es usado: una vez que se ejecuta la funcion, retorna al programa principal. Si el dato dela variable Valor esta por debajo del dato de la variable GolpesSuaves (10) 0 por encima de GolpesFuertes(10) aparece el siguiente texto en el monitor serie "El valor de golpe no es vido” y se retoma al programa principal a través de return false Cerrar la funcién personalizado usando mas de una llave. ‘Cuando se conecta Arduino a un ordenador y se carga el programa en él, 8 continuacién hay que abrir el monitor serie. Debe de ver como el diodo LED verde se enciendey el servomotor se mueve a la posicién de desbloqueo. Ena ventana del monitor serie aparece la frase "La caja esta desbloqueada!” Ahora para probar el circuito presionar el pulsador. El diodo LED verde se apaga y se enciende el LED rojo y se muestra la frase "La caja esta bloqueada!" en el monitor serie, Deberd de determinar el nivel de los golpes que consiguen desbloquear el mecanismo efectuando varios golpes sobre e| zumbador con diferentes niveles de intensidad. En el momento que el diodo LED amarillo se encienda durante menos de 1 segundo y aparezca la frase "Golpe valido de valor x" sabré la intensidad de los golpes para desbloquear e! mecanismo. Traducide by Tino Fernéndez Cueto http://w futureworkss.com 133 58 _ if(valor > GolpesSuaves && valor < GolpesFuertes){ 59 digitalWrite(LedAmarillo, HIGH); 60 — delay(50); 61 digitalWrite(LedAmarillo, LOW); 62. Serial.print("Golpe valido de valor "); 63. Serial,printin(valor); 64 return true; 65 } 66 elsef 67. Serlal,print("El valor del golpe no es valido 68 Serlal.printin(valor); 69 return false; 7 } m1 } También en el monitor serie se muestra el valor del golpe valido asi como el ntimero de olpes que es necesario efectuar para producir el desbloqueo. El ntimero de golpes validos siempre seran 3 y cuando se consigan efectuar estos 3 golpes sobre el zumbador el diado LED rojo se apagaré, el LED verde se encenderdy el servornotor se movera 90 grados a la posicién de desbloqueo, ademas de aparecer una notifcacién en el monitor serie indicando que el bloqueo est desactivado. Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 12 194 £1 valor para el golpe ideal puede variar con respecto alos que aparecen en este ejemplo. Esto depende de un nimero de variables diferentes, como el tipo de superficie sobre la que se apoya el sensor, si elzumbador esta sblidamente sujeto o se mueve cada vez que se golpea, etc. Usando el monitor serie y golpeando varias veces el zumbador se podra determinar el valor mas apropiado de la intensidad del golpe cada vez que se encienda el diodo led amarillo. También se puede hacer usando uno de los ejemplos que incluye el IDE de Arduino y que se localiza dentro “Ejemplos”, “Analog” y el programa “AnaloginOutSerial”. Puede accedor ala siguiente pagina web para ver en mas detalle como usar este programa: arduino.ce/analogtoserial Si se coloca este proyecto dentro de una caja, seré necesario hacerle unos agujeros para los LEDs y el pulsador. También sera necesario colocar le una palanca al servornotor que permita bloquear la tapa de la caja. Es necesario hacer otro agujero para pasar el cable USB que se conecta al ordenador y asi poder ver la intensidad de los golpes que permiten abrirla. También sera necesario reorganizar la colocacion de la placa de pruebas y dela tarjeta Arduino, o soldar los LEDS y el pulsador mediante unos cables de forma que se puedan montar en la ca. El soldar consiste en unir dos © més metales, normalmente un cable y un terminal de un componente, usando otro material que permite fijarlospermanentemente y que no permita que se suelten a pesar de que se produzca cualquier movimiento brusco. Sin nunca ha soldado antes, es mejor preguntarle a alguien que ya tenga experiencia en este tipo de trabajos para que pueda ayudarle, o intentar practicar con algunos cables que tenga a mano antes de hacerlo con algunos de los componentes de este proyecto, Cuando se suelda algo esto significa que la conexion realizada al soldar es permanente, asi que asegurarse después de realizar la conexin de los LEDs vel pulsador que los cables no se sueltan con facilidad, simplemente puede tirar de ellos para ver sila soldadura esta bien realizada. Dirigrse a a pagina arduino.cc/soldering para ver una buena explicacién de cémo soldar. Hacer dos agujeros en la caja: uno en una de las paredes de a base y el otro en un lateral de la tapa. Colocar el servo ‘en el interior de manera que la pestaria se pueda mover del Interior al exterior de los agujeros cuando se bloquea. Traducide by Tino Feméndez Cueto http://w. futurenorkss.com 135 Escribir sus propias funciones no solo permite controlar el flujo del c6digo con més facilidad, también ayuda a que los proyectos sean mas legibles aunque el cOdigo se vaya haciendo cada vez mas y mas sande, Con el tiempo, a medida que escriba mas cédigo, podra disponer de un gran ntmero de funciones que pueda usar en diferentes proyectos, haciendo este proceso mis rapido y dnico por su estilo de programar. (Nota del traductor) Debe de gustarle a programacion sino sera imposible e| hacerlo. En este proyecto simplemente se cuenta el nmero de golpes validos (3) para desbloquear el mecanismo, no importa el tiempo que se tarda en conseguirlo. Se puede mejorar el proyecto al usar un temporizador con la instrucci6n mills). Usar el monitor serie para comprobar silos golpes validos se efectian en un periodo de tiempo especifico. Puede volver a mirar el Proyecto del Reloj de Arena Digital (pagina 86) para ver como trabaja esta instruccion. No esta limitado a encontrar los golpes validos en un rango de tiempo. Puede buscar patrones complejos de golpes sobre la base de la cantidad de vibracion y tiempo juntos. Existe un gran niimero de ejemplos en Internet que tratan de ‘como hacer esto, buscar “Arduino knock lock” para encontrar mas ejemplos de este tipo de proyecto. En la pagina https://immw.arduino.co/eryTutorial/KnockSensor puede obtener mas informacion de ‘como se usar el zummbador como un sensor de golpes Pee en et une cee necre eee en) valor. El disefio de una funcion es una forma facil de escribir codigo que se Plea gedeccten each Ney eso Far el servo en el interior con un poco de pegamento, asegurandose ‘de revo que la pestafia del servo puede girarfaclmente através de las ranuras Traducide by Tino Ferndndez Cueto 4 13 W1aW 30 WNINYT SS POM OE ALE eRe ETE!) ————_ _ pela eke ca eke) E IL =) | ee fecpTorerelce] @ =a stays) De a atone! Preparando la libreria La version mas reciente de la biblioteca CapacitiveSensor est aq 137 AMPARA SENSIBL AL TACTO EN ESTE PROYECTO SE CONSTRUYE UNA LAMPARA QUE ENCIENDE UNA LUZ Y LA APAGA CUANDO TOCA UNA LAMINA DE METAL Descubra: instalacién de bibliotecas de terceros, creacién de un sensor tactil Tiempo: 45MINUTOS Proyectos en los que se basa: 1,2,5 Nivel: medio-alto Seva a utilizar la biblioteca CapacitiveSensor de Paul Badger en este proyecto. Esta biblioteca le permitird medir la capacidad de su cuerpo. Lacapacidad es una medida que indica la cantidad de carga eléctrica que un cuerpo puede almacenar. La biblioteca comprueba dos terminales de Arduino (uno es un emisor, el otra es un receptor), y mide el tiempo que tardan en alcanzar el mismo estado. Estos terminales se conectardn a un objeto metalic como pueda ser una lémina de aluminio. A medida que se acerque al objeto metalico, su cuerpo absorbera alguna carga eléctrica, haciendo que transcurra mas tiempo para que los dos terminales tengan el mismo estado. carduino.cc/capacitive. Descargar este fichero en el ordenador y descomprimirlo. Abrr la carpeta de las bibliotecas de Arduino (por defecto se localiza dentro de la carpeta de C:\Archivos de programa\ Arduino\ libraries). Dentro de esta carpeta crear una carpeta llamada CapacitiveSensor y copiar dentro de ella los archivos que se han descomprimido (localizados dentro de la carpeta arduino-libraries-CapacitiveSensor-7684dff) ademas de cerrar el IDE de Arduino si esta abierto. ‘Abrir el IDE de Arduino y dentro del mend “Archivos” seleccionar “Ejemplos", al hacerlo se podra ver en la parte inferior de la ventana que aparece una nueva entrada con el nombre *CapacitiveSensor”. La biblioteca que se ha afiadido contiene un proyecto de ejemplo. Abrir el ejemplo CapacitiveSensorSketch y compilarlo, Sino se produce ningiin error sabra que la biblioteca la ha instalado correctamente. Para més informacion sobre las bibliotecas: .cc/en/Reference/Libraries arduir Traducide by Tino Feméndez Cueto http://w. futurenorkss.com Proyecto 13 138 Lampara sensible al tacto Figura 1 ced Traducide by Tino Femnéndez Cueto http'//wuw future worksco 139 —______ @ Conertar el diodo LED al pin 12 y conectar el cdtodo a masaa través de una resistencia de 220 ohmios como se muestra en esta ilustracion. © Conectar el pin digital 2y el4 ala placa de pruebas. Conectar estos dos pines entre si Ze mediante una resistencia de 1Mega ohmio. En la misma linea de pines de la placa de pruebas en donde se conecta el terminal 2insertar un cable largo (como minimo entre 8 y 10 centimetros) que salga fuera de la placa de pruebas. El otro extremo conectarlo a una lamina de aluminio como pueda ser un trozo de papel de aluminio. Este sera el sensor. No es necesario suministrar una tensién de +5V a la placa de pruebas eneste proyecto. El pin digital 4 suministra la energia al sensor. ANigual que con otros proyectos con LEDs, se puede poner un difusor encima del LED para conseguir una luz mucho mas atractiva. Una bola de pin-pon o una pantalla para lampara fabricada con papel 0 plastico pueden valer perfectamente como difusores y funcionaran perfectamente. ‘Se puede ocultar el sensor detras de algo solido y ver si seguira funcionando. La capacidad se puede medira través de un material no conductor como la madera, el plistico o el cristal. Si se aumenta el tamafo del sensor de forma que su superficie metélica aumente también se incrementaré la sensibildad del crcuito: se puede conectar una hoja de aluminio de mayor tamafio, o una placa de cobre al final del cable. Se podria montar el diodo LED al final de un cilindro de plastico con el difusor encima y a continuacién fabricar con una madera fina un base recubierta por su parte interior con papel de aluminio conectando el cable de la placa de pruebasa este papel. De esta manera se fabricard una lampara cuya base puede funcionar como un sensor al tacto, Actualizar la variable del uumbral dentro del cédigo cuando se mocifique el tamaio del sensor para asegurarse que el cicuito funciona correctamente Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 13 Lampara sensible al tacto EL CODIGO Img la libreria Capacvedensor Configurar el umbral Configurar la sensibilidad al tacto Control de la impara 140 ‘A\comienzo del programa incluir la libreria CapacitiveSensor. Se hace dea misma forma que se hizo al inclu la librer‘a Servo en el proyecto "Medidor del estado de énimo” en la pagina 62. Crear una peticién con el nombre della librerfa, Cuando se usa esta libreria y mediante esta peticién se le indica que pins seran usados para enviar y recibir informacion. En este 280, el pin 4 envia informacién al sensor formado por una lémina metalica ya través de la resistencia de 1Mega ohmio, y el pin 2 es el pin que recibe la informacién, Configurar una variable para el umbral de deteccién el cual encendera la lampara un vez superado este umbral. Debera de cambiar este valor del umbral después de comprobar el valor que permite encender el LED al tocar el sensor. Enesta linea se define el pin del LED para poder encenderlo y apagarlo. En el bloque de Ia funcién setup(), abrir el monitor serie a una velocidad de 9600 baudios poor segundo. Esto se hace para poder ver los valores de lectura del sensor en la ventana del monitor serie. Aqui también se define el pin del led como OUTPUT (salida). Dentro de la funcion loop(), crear una variable del tipo long para guardar el valor del sensor. La libreria devuelve el valor del sensor usando un comando llamado capatitiveSensor() que toma un argumento que identifica el numero de muestras que se vanalleer (30). Si se leen unas pocas de muestras, serd posible ver una gran variacién de valores en el sensor. Si se indican demasiadas muestras, serd necesario introducir un retardo para que le de tiempo a leer tantas veces. 30 muestras es un buen valor para comenzar. A continuacion se muestra el valor que se lee del sensor en la ventana de! monitor serie. Con una instruccién if)..else, se comprueba si el valor leido del sensor es mayor que el valor de! umbral. Si es asi, se enciende el diodo LED rojo. Sino es asi, se apaga el LED. Alfinal se aiade un pequefto retardo con la instruccion detay(100) antes de finalizar la funcién loop). Traducide by Tino Fernéndez Cueto http://w futureworkss.com 141 #include 2 CapacitiveSensor capSensor = CapacitiveSensor(4,2); ‘int Umbral = 1000; 4 const int PinLed = 12; void setup(){ Serlal-begin(9600), 7 pinMode(PinLed, OUTPUT); 8} void loop() { ong ValorSensor = capSensor.capacitiveSensor(30); Serial,print{ValorSensor); if(ValorSensor > Umbral){ digitalWrite(PinLed, HIGH); 14} 5 elsef digitalWrite(PinLed, LOW); } delay(100); } Traducide by Tino Feméndez Cueto www future workss.com Proyecto 13 142 Lampara sensible al tacto COMO SE UTILIZA Después de programar la tarjeta Arduino sera necesario averiguar que valores son los que encienden el diodo LED al tocar la lamina metélica (sensor). Abrir el monitor serie y anotar los valores que aparecen cuando no se toca el sensor. Tocar suavemente sobre la lamina metalica que hace de sensor, debe de ver como aumentan los valore mostrados en ‘el monitor serie. Tocar haciendo mayor presin y los valores deberan de aumentar mucho mas. Una ver que tenga una idea del rango de valores que produce el sensor segin el nivel de presién ejercido, volver al programa (sketch) cambiar el valor dela variable del umbral a un nimero ligeramente por encima cuando no se toca el sensor, pero.con un valor menor {que el que aparece cuando se toca, Por ejemplo, siel valor mastrado sin tocar varia entre Oy un valor maximo de 20, y cuando se toca sin presionar varia entre 1300 y mas de 2000, se puede dejar e valor del umbral como esta. Es posible hacer que la lémpara se encienda sin tocar la lamina metalica, ya que sin tocar (valores entre 0 y 15) los valores son muy bajos y si seacerca un dedo a menos de unos milimetros de la placa los valores aumentan a un minimo de 23 (puede variar). Por tanto siahora se pone el valor del umbral a 30 sera posible encender la Limpara sin tocar el sensor. Cargar el sketch con este nuevo valor del umbral. El diodo LED deberd de encenderse se aproxima un dedo a pcos milimetros del sensor sin tocarlo y debera de apagarse cuando se aleje. Si no consigue que se encienda el LED puede disminuir el valor del umbral un poco (de 30 20). ‘ejercido sobre el sensor. ¢Puede usar estos valores para conseguir otras interacciones con el diodo LED ? ;Se podran usar miltiples sensores para variar gradualmente la luz del LED hasta que se consiga ‘ST’ | el mayor brillo posible y para apagar [a luz la suavemente? Si coloca diferentes valores de resistencia entre los pins 2 y 4 conseguiré cambios en la sensibilidad. Es esto itil para su interface? 2 Habré observado que los valores mostrados en el monitor serie varia segin el nivel de presion PEM ol agrecde mre acec Reel lel kOe sola] Va ane me ae eee Muni Ay Ran Cd ea recat ee ee MRT d cee R eee CR Menem R oe cee eee el cance hel Brea Traducido by Tino Fernéndez Cueto hi eer T 9° « - G = Q is) Fa a 9 a INGREDIENTES De a atone! 145 RETOCAR E LOGOTIPO DE ARDUINO USANDO LA COMUNICACION SERIE, SE VA A USAR ARDUINO PARA CONTROLAR UN PROGRAMA EN UN ORDENADOR ; Descubra: comunicacién serie con un programa de ordenador, Processing Tiempo: 45MINUTOS Proyectos en los que se basa: 1,2,3 Nivel: alto ‘Se han realizado un montén de cosas interesantes con el mundo fisico, ahora es el momento de controlar un ordenador usando Arduino. Cuando se programa Arduino, se estd abriendo una conexién entre el ordenador y el microcontrolador de la placa Arduino. Se puede usar esta conexidn para enviar datos de ida y welta a otras aplicaciones. Arduino tiene un chip que convierte la comunicacién USB del ordenador en una comunicacién serie que Arduino puede usar. La comunicacion serie permite que dos equipos electrOnicas, una tarjeta Arduino y tun PC, puedan intercambiar bits de informacion en serie, es decir, uno tras otro en el tiempo. Para poder establecer una comunicacién serie entre dos dispositivos es necesario que la velocidad de transmision de uno a otro, y al revés, sea la misma, Probablemente habra observado cuando ha usado el ‘monitor serie que en la parte inferior derecha de la ventana aparece un niimero. Ese niimero, 9600 bits por segundo, 0 bauiios, es el mismo valor que se ha declarado usando la instruccién Serial.begin(). Esa es lavelocidad a la cual Arduino y el ordenador intercambian datos. Un bit es la unidad minima de informacion que un ordenador puede entender. Se ha usado el monitor serie para examinar los valores de las entradas digitales; se usara un método similar para obtener valores con un programa que es un entomo de programa rente al IDE de Arduino y que se conoce con e! nombre de Processing, Processing esta basado en Java, el entorno de programacién de Arduino esta basado en Processing. Ambos son muy similares, as! que no deberia tener ningiin problema para usar. {Antes de comenzar con el proyecto, descargar la ltima versi6n de Processing de la pgina processing.org. Le puede resultar til mirar el apartado de "Getting started" (Comenzando) y echar un vistazo ls tutoriales dela pigina processing.org/leaing. Toda esta informacién le ayudar’ 2 liarizarse con Processing antes de comenzar a escribir el software para comunicarse con Arduino, Traducide by Tino Fernéndez Cueto http://w futureworkss.com Proyecto 14 146 Retocarellogotino de Arduino La forma més eficiente de enviar datos entre Arduino y Processing es usando la funci6n Serial. write() ‘en Arduino. Es similar ala funcién Serial.print() que se va a usar para enviar informacion desde ‘Arduino al ordenador que este conectado, pero en lugar de enviar informacion que se puede leer por los humanos como son niimeros y letras, se enviardn valores entre 0 y 255, como un grupo de bytes. Esto limita os valores que Arduino puede enviar, pero permite una transmisién més répida de la informacién, Tanto en el ordenador como en Arduino, existe algo llamado buffer serie el cual almacena en su interior informacion hasta que el programa la necesite. Se enviardn bytes desde Arduino al buffer serie de Processing, Cuando el programa lee la informacion que contiene el buffer, se vacia el espacio dl buffer para guardar mas informacion que le pueda enviar el programa Arduino. ‘Cuando se est usando una comunicaci6n serie entre dispositivos y programas, es muy importante ‘que ambos sepan cual sera la velocidad de comunicacion entre ellos, y ademés el tipo de informacion ‘que deberian estar esperando. Cuando se encuentra con alguien que conoce, probablemente esperara ‘que le dga "Hola", si por el contraro le dice algo como “El gato esta con el pelo erizado’, su respuesta le cojera por sorpresa. Con el software ocurre lo mismo, sera necesario que ambos programas estén de acuerdo sobre lo que se envid y sobre que se recibe. Traducide by Tino Ferndndez Cueto 4

También podría gustarte