Está en la página 1de 145
a EEN Att Eee hed is PROPOSITO DEL MANUAL, El presente manual disefiado tiene como propésito apoyar como guia hacia el participante, mostrando de manera tedrico practico los contenidos pertinentes a la tematica Arduino desde cero con el IDE Arduino, se espera que el manual cumpla con su finalidad ajustandose a las necesidades del participante acompafiado de la guia del docente. OBJETIVO DEL TALLER. Analizar, disefiar y desarrollar prototipos que resuelvan necesidades de uso diario a través de la herramienta Arduino, optimizando recursos a fin de obtener el mejor producto posible. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Generalidades Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, disefiada para facilitar el uso de la electronica en proyectos multidisciplinares. El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida. Los microcontroladores mas usados son el Atmega 168, Atmega328, Atmega1280, Atmega8 por su sencillez y bajo coste que permiten el desarrollo de multiples disefios. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programacién ProcessingMWiring y el cargador de arranque que es ejecutado en la placa. Historia Arduino se inicié en el afio 2005 como un proyecto para estudiantes en el Instituto IVREA, en Ivrea (Italia). En ese tiempo, los estudiantes usaban el microcontrolador BASIC Stamp, cuyo coste era de 100 délares estadounidenses, lo que se consideraba demasiado costoso para ellos. Por aquella época, uno de los fundadores de Arduino, Massimo Banzi, daba clases en Ivrea. El nombre del proyecto viene del nombre del Bar di Re Arduino (Bar del Rey Arduino) donde Massimo Banzi pasaba algunas horas. En su creacién, contribuy6 el estudiante colombiano Hernando Barragan, quien desarrollé la tarjeta electronica Wiring, el lenguaje de programaciin y la plataforma de desarrollo. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Aplicaciones El médulo Arduino ha sido usado como base en diversas aplicaciones electronicas. * Xoscillo: Osciloscopio de cédigo abierto. * Equipo cientifico para investigaciones. * Aduinome: Un dispositive controlador MIDI. * OBDuino: un econémetro que usa una interfaz de diagnéstico a bordo que se halla en los automéviles modernos. + Humane Reader: dispositivo electronico de bajo coste con salida de sefial de TV que puede manejar una biblioteca de 5000 titulos en una tarjeta microSD. * The Humane PC: equipo que usa un médulo Arduino para emular un computador personal, con un monitor de televisién y un teclado para computadora. * Ardupilot: software y hardware de aeronaves no tripuladas. * ArduinoPhone: un teléfono mévil construido sobre un médulo Arduino. Lenguajede programacién Arduino La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programacién de alto nivel Processing. Sin embargo, es posible utilizar otros lenguajes de programacién y aplicaciones populares en Arduino, debido a que Arduino usa la transmisién serial de datos soportada por la mayoria de los lenguajes mencionados. Para los que no soportan el formato serie de forma nativa, es posible utilizar software intermediario que traduzca los mensajes enviados por ambas partes para permitir una comunicacién fluida. Algunos ejemplos son: * 3DVIA Virtools: aplicaciones interactivas y de tiempo real. * Adobe Director. + BlitzMax (con acceso restringido) “Cc * C++ (mediante libSerial 0 en Windows). ° C# * Cocoa/ Objective-C (para Mac OS X). * Flash (mediante ActionScript) * Gambas. * Isadora (Interactividad audiovisual en tiempo real). + Instant Reality (X3D). + Java * Software de medicién y experimentacién. * Mathematica. * Matlab. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje * MaxMSP: Entorno grafico de programacién para aplicaciones musicales, de audio y multimedia * Miniblog: Entoo grafico de programacién, corre también en las computadoras OLPC. * Perl * Php. * Physical Etoys: Entorno grafico de programacién usado para proyectos de robética educativa * Processing, * Pure Data. * Python. * Ruby. * Scratch for Arduino (S4A). Entorno grafico de programacién, modificacién del entomo para nifios Scratch, de! MIT). ‘Squeak: Implementacién libre de Smalltalk. SuperCollider: Sintesis de audio en tiempo real VBScript. Visual Basic NET. VWVV: Sintesis de video en tiempo real. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Componentes del kit Durante este primer curso, iremos utilizando diversos componentes para el armado de nuestros proyectos. En este documento describiremos las principales caracteristicas de dichos componentes, lo cual nos permitira un correcto uso de los mismos. Placa de Arduino UNO 1. Conector USB para el cable Tipo AB. 2. Pulsador de Reset. 3. Pines de E/S digitales y PWM. 4. LED verde de placa encendida. 5. LED naranja conectado al pin 13. 6. ATmega 16U2 encargado de la comunicacién con el PC. 7. LED TX (Transmisor) y RX (Receptor) de la comunicacién serial. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje 8. Puerto ICSP para programacién serial. 9. Microcontrolador ATmega 328. 10. Cristal de cuarzo de 16 Mhz, 11. Regulador de voltaje. 412. Conector hembra 2.1mm con centro positivo. 13. Pines de voltaje y tierra 14, Entradas andlogas. La placa Arduino UNO sera la encargada de procesar las entradas y salidas que vayamos conectando en nuestros proyectos. Si bien el que se encarga del procesamiento especificamente es el microcontrolador que esta integrado (9), podriamos decir que el Arduino seria el cerebro de nuestros proyectos, Arduino UNO.- El protoboard (la placa de pruebas) de desarrollo de microcontroladores que estar en el corazon de tus proyectos. Es un ordenador sencillo, pero con el todavia no tienes forma de interactuar. Vas a construir los circuitos y las interfaces para la interaccién, y le diras al microcontrolador como interactuar con otros componentes. Protoboard Es una placa reutilizable usada para construir prototipos de circuitos eléctricos sin soldadura. Este dispositivo es muy importante ya que nos permite probar nuestros disefios sin que sea necesario soldar y desoldar componentes. Las protoboard 0 breadboard estan compuestas por bloques de plastico perforados y numerosas laminas delgadas de una aleacién de cobre, estafio y fésforo. Internamente, una protoboard tiene conexiones preestablecidas que nos ayudaran a la hora de ‘conectar unos componentes con otros. El esquema de conexiones internas de una protoboard es el siguiente: LMM URUUUUUUEUEUUUUUUEUEAEAUUUAAE A Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Protoboard. Una placa sobre la que puedes construir circuitos electrénicos. Es como un panel de parches, con filas de agujeros que te permiten conectar cables y ‘componentes. Los del lado son columnas y filas los del centro, hay 5 grupos, en medio hay una separacién. LED y Resistencia El diodo LED, Light-Emitting Diode, es un tipo especial de diodo semiconductor, que tiene la capacidad de emitir luz al disponerse en polarizacién directa, Se usan como indicadores en muchos dispositivos y cada vez con mucha més frecuencia en iluminacién. Los LEDs presentan muchas ventajas sobre las fuentes de luz incandescente como un consumo de energia mucho menor, mayor tiempo de vida, menor tamafio, gran durabilidad y fiabilidad. El LED tiene una polaridad, un orden de conexién, y al conectarlo al revés se puede quemar. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje La resistencia por otro lado es un componente eléctrico pasivo de dos terminales que introduce una resistencia eléctrica en el lugar del circuito donde se coloque. Esta formada por carbén y otros elementos que en cierto modo “absorben” la cortiente que circula por ellas. Entonces podriamos decir basicamente el concepto general es “absorber”. Centro Educativo Innovacién, libertad y devocién por el aprendizaje ‘Como se puede ver en la imagen, las resistencias tienen bandas de colores a lo largo de las mismas y es a partir de esas que se puede obtener el valor de resistencia. El valor de la resistencia eléctrica se obtiene leyendo las cifras como un numero de una, dos o tres cifras; se multiplica por el multiplicador y se obtiene el resultado en Ohmios (22). Usamos de diferentes tipos de resistencias, el trabajo de las resistencias. Esto es una montafa, la altura de la montafia lo consideramos como el voltaje, la corriente Centro Educative Guaymax libertad y devocién por el aprendizaje son las piedras que caen y las resistencias son unos bloques para que las piezas. no caigan todas. Qué es una resistencia? Es un elemento electronico que limita el paso de corriente en un circuito. Fisicamente estan hechos de carbono o metal. Estén en radios, televisores, amplificadores, etc. La unidad de medicién de la resistencia es el ohm (0). Representacién grafica. Centro Educative Guaymax libertad y devocién por el aprendizaje 4Cémo se leen los colores? Se leen de izquierda a derecha, la primera y segunda cifra representan la primera cifra del valor de la resistencia comprendida entre 0 y 9 re CULL ee ee) PoE Par LE Lae St Retr T lle Diferentes colores que puede tener una resistencia. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Circuitos Basicos Ejempl El primer color vale 1(uno) El segundo color vale O(cero) El tercer color vale 100(cien) Por lo que 10 * 100 = 1000 © (Ohms) = 1 kQ Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje ] n 10 X100 = 1000 er Negro ea st sara ee pea es] Se (a ae a | Tabla de equivalencias. 1000 9 = 1 KO 10,000 9 = 10 KO 100,000 9 = 100 KO 1,000,000 9 = 1000 KN = 1 MO Continuando con el primer ejemplo: El color dorado tiene una tolerancia del 5%. Entonces es 1 kOhm con 5% de tolerancia. Ejemplo 2: Valor rojo = 2. Valor violeta = 7. entro Educative Guaymax Innovaci jan tbertad y devocién por el aprendizaje Valor café = 10. El Ultimo color es el dorado que equivale a 5%. El resultado seria: El resultado es 270 Q con 5% de tolerancia Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Centro Educativo Guaymax Innovacién, libertad y devocién por el aprendizaje Pulsador y Potenciémetro. Un botén o pulsador es utilizado para activar alguna funcién. Los botones son por lo general activados al ser pulsados, normalmente con un dedo. Un botén de un dispositivo electrénico funciona por lo general como un interruptor eléctrico, es decir en su interior tiene dos contactos, si es un dispositivo NA (normalmente abierto) 0 NC (normaimente cerrado), con lo que al pulsarlo se activara la funcién inversa de la que en ese momento este realizado. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Un potenciémetro es una resistencia variable en la cual podemos elegir el valor que puede tomar. De esta forma, controlamos la intensidad de corriente que fluye por Un circuito si éste esta conectado en paralelo, asi como la diferencia de potencial si esté conectado en serie. El potenciémetro es un componente analogico el cual y que me da valores de entrada entre 0 y 1023. Simbologia. Centro Educative Guaymax libertad y devocién por el aprendizaje Lavadoras 0 lamparas como esta integrado el circuito. 1.- Dos cables en forma de cruz, 2.- los dos cables pasan juntos y no se tocan, no interaccién. 3.- Dibujo de un botén. 4.- motor. 5. led. Es de salida. Energia en luz. 6.- Resistencia. 7.- Pila 8. Conexion a tierra. Gnd. Ejemplo Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Sefial Analégica o Digital. a: . H Entradas digitales: Lo que hicimos con nuestro bot6n, o esta prendido o esta apagado, no hay intermedio, en cddigo binario es un uno, 0 cero. Entradas analégicas: Si hay intermedio, cuando utilizamos sensores, por ejemplo tun sensor de temperatura, sensor de inclinacion. Puede variar. Estructura basica de un programa Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje La estructura IF. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Estructura FOR. Centro Educative Guaymax libertad y devocién por el aprendizaje Estructura DO-WHILE. Estructura SWITCH-CASE Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Qué es programar? Es el arte de ensefiarle a una computadora que es Jo que tiene que hacer. Ensefarle a realizar estas operaciones, debemos dar instrucciones especificas, para que las ejecute secuencialmente, es a partir de esas instrucciones que las computadoras son capaces de mostrarnos un video, una pagina web, 0 el personaje favorito en un videojuego. Entonces, {qué es programar? Darle instrucciones especificas a la computadora para que las ejecute secuencialmente Aligual que usamos un lenguaje para comunicarnos entre unos a otros igual es para comunicamos con una computadora, debemos aprender un lenguaje especifico Una semejanza de comunicacién con las computadoras, la computadora tiene un montén de lenguajes, cada uno para determinadas tareas. Para construir aplicaciones web, construir videojuegos, aplicaciones para robotica. La programacién en la vida cotidiana. Como microondas. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Microcontrolador que regula las temperaturas y el tiempo de coccién Aplicacién de mensajeria en el celular, cuando pagamos a través de una tarjeta el colectivo 0 subterrdneo. Moldeen y mejoren la calidad de vida. Descripcién del hardware y software de Arduino. Comunidad oficial de Arduino. https://forum.arduino.ccl Que es Arduino. Es una plataforma construida sobre hardware y software libre muy faciles de usar. Por un lado cuenta con una placa. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Este es un circuito integrado, en el cual uno puede grabar instrucciones en un lenguaje de programacién en especifico, para que sean ejecutadas. Estas instrucciones 0 cédigos se escriben, utilizando el software Arduino. Lenguaje conocido como Processing, basado en la plataforma JAVA. Otro aspecto de Arduino es su comunidad, tiene una gran cantidad de usuarios, que constituyen su corazén, desde su foro oficial hasta su wiki, proyectos compartidos y mejorados continuamente. ‘Que puedo hacer con la placa Arduino. ePara qué podemos usar Arduino? Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Una analogia con su hermano mayor, que es la computadora, una computadora tiene un procesador central al cual podemos dar distintos dispositivos de entrada ‘como un mouse, teclado, etc. El procesador utiliza esa informacion, para generar acciones de salida, escribir informacion en un monitor, reproducir musica en un parlante. Esas entradas pueden ser, perillas, botones, incluso un micréfono. Estas entradas o sensores se procesan en el cerebro de nuestro arduino y nos permiten generar salidas como mostrar informacion en una pantalla LCD, o accionar un bot6n eléctrico. Hacer proyectos con domatica 0 robética. Qué es Arduino? Una plataforma de Hardware y Software libre Preguntas. 1 £Qué significa que Arduino es una plataforma Open Source? {Una plataforma Open Source es lo mismo que gratuita? 2 éPor qué creen que es importante generar una cultura DIY (Do It Yourself) en las escuelas? 3. €Por qué algunos especialistas afirman que la programacién es el inglés del futuro? Antes de empezar: IDE de Arduino. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Conocer las distintas secciones de este entorno de desarrollo integrado. Crear y editar sketches 0 bocetos, que son los archivos que contienen estas instrucciones especificas para Arduino, escritas en lenguaje Processing 1.- Instalar el programa de arduino. 2. Ir a la pagina oficial de arduino. 3.- Sector de descargas. 4. Reconocer los principales botones del entorno. 5.- Iremos conociendo todas las secciones del menu: Botén abrir, ver nuevos bocetos, checkear que mi cédigo compile, o crear uno nuevo. Pasos previos. 1.- Ingresamos a la pagina oficial de Arduino, cual es la siguiente liga: https://www.arduino.ce/ Como se muestra en la siguiente imagen. 2.- Enel menu superior seleccionamos la opcién Download, hacemos clic izquierdo sobre el boton. 3.- Nos abriré una ventana como la que se muestra a continuacién. En la parte de la derecha nos muestra un recuadro azul donde tendremos varias opciones de descargas ya sea para Windows, Mc OS X y Linux. En nuestro caso seleccionamos la opcién haciendo clic izquierdo sobre Windows Installer. Elegir la version que se ajuste a nuestras necesidades. Hay dos caminos para instalar Arduino: Instalador: Seguir el asistente. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje La carpeta: Ejecutar la aplicacion. Download the Arduino Software 4. Aparecerd una nueva ventana como la siguiente, donde nuevamente se nos pedira si queremos realizar la descarga 0 contribuir con una donacion y al mismo tiempo descargar el software. En nuestro caso descargamos haciendo clic izquierdo sobre Just Download y listo. Support the Arduino Software Instalando Drivers. 1.- Una vez terminada la descarga de nuestro programa nos dirigimos a la direccion de la carpeta de la aplicacién Arduino como se muestra en la siguiente imagen: Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje ai... 82)x =| bass acoso 90°? eerie En el caso personal la aplicacion se instalé en la ubicacién ademas se cred una carpeta para tener un orden. rogram Files (x86), 2. Como se aprecia en la siguiente imagen dentro de la carpeta Arduino-1.6.9 se encuentra la aplicacién ejecutable arduino. Para ejecutarlo hacemos doble clic izquierdo o simplemente un clic izquierdo y presionamos la tecla Enter. © o + 1 Wr em » Deco) » keer de Se fonine — re po rnathog Base veer Boome) ne Smee 3.- También podemos acceder al programa desde el escritorio siempre y cuando lo hayamos especificado dentro de la aplicacién. Como se muestra en la siguiente imagen: Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje [o.o} 12) Aelia 4. Habré ocasiones, no siempre donde nuestro programa no responda de forma correcta por lo que habré que instalar de nuevo los drivers, veamos los siguientes pasos: 1.- Una vez instalado ir: Administrador de dispositivos o Device Manager. Para este paso ya debemos tener lo siguiente: Modelo Arduino R3 y el cable usb AB. Importante: COM: Puerto de comunicacién serial de la computadora, es decirle a la computadora en que canal esta conectado el arduino para que al momento de subir los programas le llegue la informacién a arduino. a) — Buscamos el Panel de Control. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje b) Una vez abierto abrimos el Administrador de dispositivos, hacemos clic izquierdo. Rann —— sevmynapcin DR Capen trp Ocemarvenauns Peewneewnn comeamonneainon — B conesnanynamncngn we Siewert ¢c) Nos abrira una ventana como la siguiente, nos enfocaremos en Puertos (COM y LPT). En caso de que el puerto esté con un mensaje de advertencia serd necesario por recomendacién instalar los drivers, que podemos encontrar en la carpeta de instalacion de Arduino. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Wy Aaptadores de pane » Adaptadores cere 9 betes | Colas deimpresion (Gu Controlodras ATAVATAPI IDE ‘} Contrlacoras de stmacenamiento Contcladoras de bus serie uriversal % Contrladoras de sonido y vide y dispositive de juego 5 Dispostivos deinterax de vsumio (40) 11 Dispostvos de software 1M Dispostivos del stems Entradas slides de ausio 8 Equipo BE Monitores 1A, Neuse y atiosdispstivos seiaadores DD Procesedores Penne My) "F Arduino Uno (COMS) IB Sensors Tecate ea Unidas de disco ‘Dundes de OVO o Co-ROM d) Hacemos clic derecho sobre el puerto Arduino Uno (COM3) y hacemos clic izquierdo sobre Actualizar software de controlador. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje @) Nos abrira una ventana como la siguiente, por lo general cuando hacemos clic izquierdo sobre la primera opcion Buscar automaticamente software de controlador actualizado nos avisa que todo esta correctamente, por lo que es mejor seleccionar con clic izquierdo la opcién Buscar software de controlador en ol equipo. Como desea buscar el software de controlador? ‘> Buscar autométicamente software de controlador actualizado Windows buscar en equip yen ntemet el sofware de contcladr més reciente para el dspostivo, s menos que hay deshabta eta caactersica en Ia cenfiguacin de mstaacin de! depose > Buscar software de controlador en el equipo Buscar einstalarel software decontrlador de form manus, f) Especificamos la ruta de nuestro arduino en el equipo, podemos ubicar la carpeta general o especificar en la carpeta drivers. Damos clic izquierdo en siguiente. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Busque software de controlador en el equipo aca stave ecole tubo ‘Agregamos la ruta de la carpeta de instalacién de arduino, de ser ‘> #legiren una lista de controladores de dispositive en el equiponecesario a nivel de los drivers. ‘etnre ecole gue teen misma catego gue cope, (ire) ear 9) Una vez realizado la busqueda e instalaci6n, nos mostraré la siguiente ventana. Windows actualiz6 correctamente el software de controlador. Windows fini a intalcin dl oftware de contador para ie depo: Arduino Uno h) De tal manera, que nos quedaré lo siguiente, una instalacién sin errores. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje a a '} Puertos (COM y LPT) '} Arduino Uno (COM3) Interfaz de Arduino. ‘De zquierda a derecha: Editor de _A.Verificar Compiler... cédigo/ area de trabaio 2. Subit". 3° NUGV6,4. ABA, ‘5 Salvar. Informacién de la placa arduino y puerto. Detalles: Un proyecto en arduino se llama sketch. 1.- Verificaricompilar: Revisar que no haya errores. Verificar es igual a Compilar. Verificar que no haya problemas. 2.- Subir: ‘orrer programa. 3. Nuevo: Nuevo proyecto. 4.- Abrir: Ya sea proyecto propio, librerias, ejemplos, etc. 5.- Salvar: Guardar. Centro Educative Guaymax Innovacién, libertad y devocién pi aprendizaje Conociendo la placa Arduino Nuestras tarjetas de arduino traen un led color naranja ese led esta conectado al pin 13 intemamente en el arduino lo que no quiere decir que no vamos a usar algun ‘componente extemo. Tenemos 14 pines, del 0 al 13 son pines digitales. En la parte de abajo tenemos del 0 al 5 con una A antes de cada numero. Esos son los pines analégicos. Diferencias. Los digitales es decir hay voltaje o no hay voltaje. Son 1 y 0. Representados por la palabras HIGHT 5 Volts- LOW 0 Volts. Y en los analdgicos es decir que tanto voltaje hay. Rango de 0 a 1023. Para decir que tanto voltaje hay. Arduino es un lenguaje sensible a las mayuisculas. Poner paréntesis después de cada comando, cada argumento separado por una ‘coma, y al final punto y coma para decir que alli termina la instruccién. Importante: La velocidad en la que se lee las lineas de cédigo es bastante rapido. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Aprendiendo a programar nuestro Arduino y subir nuestro primer Sketch. 1.- Al ejecutar el programa nos aparecerd una ventana como la siguiente: Con los siguientes bloques de cédigo: cup code here, 2. En el primer bloque de cédigo setup se va a leer solo una vez en si el arduino solo lo va a leer una vez. 3. En el segundo bloque de cédigo loop en espafol significa ciclo, se repite indefinidamente hasta que se desconecte el arduino de la corriente o se le cargue otro programa. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ejercicio #1: Hola mundo del hardware (parpadear el led del Arduino). 1.- Hacer parpadear el led integrado en la placa arduino, encender un led (un tiempo en especifico) en este caso de la placa de arduino. Conectar el arduino a la computadora. 1.-Conectar el arduino a la PC. 2. Uti run CASE, para tener aislacién estatica, 3.- Conectarlo al cable USB. Punta cuadrada ~ punta convencional. 4- El arduino esté vacio, no esté haciendo nada. 5.-Cargar un programa. 6.-Comprobar que nuestra placa esté conectada. 7.- Herramientas -> Placa/Puerto. Revisar seccién de puertos. Los sketches 0 programas de Arduino se di jenen 2. ‘Setup: Inicializar todos los componentes que voy a usar en el resto de nuestro programa. Antes: Decirle a nuestro arduino, IDE, software, en que puerto serial esté conectado nuestro arduino, para eso es el Administrador de dispositivos, para ello iremos a Herramientas (Tools)/Puerto (Port) y seleccionamos el puerto que ocupa nuestro arduino. Como se muestra a continuacion: Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje 2.- Al hacer el paso anterior nos muestra en la parte inferior derecha del programa la informacién acerca de nuestro arduino y el puerto cual esta conectado que esta listo para recibir las instrucciones que le mandemos. Ejercicio resuelt /* Ejercicio #1 *Encender led naranja que esta conectado al pin 13. ” ” *Es decirle a arduino que tiene algo conectado en el pin 13, ” void setup() { 1/ put your setup code here, to run once: Cédigo se lee solo una vez. 4#Comando pinMode: decirle al arduino si al pin que vamos a conectar es una entrada 0 una salida. W/Requiere 2 parémetros. El nimero del pin, que va ser: entrada o salida. pinMode (13, OUTPUT); by void loop() { 1 put your main code here, to run repeatedly: cédigo se repite indefinidamente. WComando. Nos va a servir cuando queramos interactuar o escribir algo en los pines digitales. Leva 2 argumentos (pin donde vamos a escribir, mandar 0 6 1 (HIGHT, LOW). digitalWrite(13, HIGH); WEspérate mil milisegundos (1 segundo). delay(1000); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje MApagar (0 volts). digitalWrite(13,LOW); delay(1000); } Desafio Una vez que hemos terminado el proyecto anterior, te proponemos la siguiente actividad para ejercitar: Realizar una modificacién del cédigo para que la luz parpadee de la siguiente manera: Prendido 3 segundos. Apagado 2 segundos. + Prendido 2 segundos. © Apagado 1 segundo. + Prendido 1 segundo, ‘* Apagado 0.5 segundos. © Que luego wuelva arrancar. Conceptos basicos de electrénica basica. La materia esta compuesta de elementos quimicos que, en esencia, son todos similares en su mindscula estructura: un nucleo en donde se acumulan particulas denominadas protones y neutrones, en tomo al cual orbitan particulas denominadas electrones. Al conjunto se le denomina atomo. Los protones y los electrones tienen una tendencia natural a atraerse, por ello establecemos que los protones tienen signo positivo (+) y los electrones signo negativo (-). En esencia, las cargas contrarias se atraen y las cargas iguales se repelen. Los protones y los electrones tienen una tendencia natural a atraerse, por ello establecemos que los protones tienen signo positivo (+) y los electrones signo negativo. Pero, cuando circulan los electrones? Para que un electron quiera moverse tiene que tener ganas de ello, es decir, se tiene que sentir atraido por otra zona e iniciar el camino hacia la misma. Ahora bien, no pueden moverse como quieran, necesitan un camino especial para ello. Fruto de ello surge la electricidad, que no es mas que el efecto de los electrones moviéndose por la atraccién que surge con los protones. éTe has fijado que los cables generalmente estan recubiertos de plastico y por dentro tienen un filamento metélico? Son asi para que los electrones puedan “viajar” Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje por el cable metalico y el plastico evita que salgan y los mantiene en el mismo. Esto es porque el metal es CONDUCTOR DE LA ELECTRICIDAD y el plastico es AISLANTE (no deja pasar a los electrones). Conceptos clave. Voltaje Una magnitud fisica que impulsa a los electrones a lo largo de un conductor (por ejemplo un cable) en un circuito eléctrico cerrado, provocando el flujo de una corriente eléctrica. Su unidad es el Voltio (V). El instrumento usado para medir el voltaje se lo conoce como Voltimetro. Corriente Es el flujo de electrones a través de un conductor 0 semiconductor en un sentido. La unidad de medida de ésta es el amperio (A). Una corriente eléctrica, puesto que se trata de un movimiento de cargas, produce un campo magnético, un fenomeno que puede aprovecharse en el electroimadn, este es el principio de funcionamiento de un motor. El instrumento usado para medir la intensidad de la corriente eléctrica es el galvanémetro que, calibrado en amperios, se llama amperimetro, colocado en serie con el conductor cuya intensidad se desea medir. Resistencia Centro Educative Guaymax libertad y devocién por el aprendizaje Es la propiedad fisica mediante la cual todos los materiales tienden a oponerse al flujo de la corriente. La unidad de este parémetro es el Ohmio (A). Puedes encontrar resistencias en los calefactores eléctricos, tarjetas electronics, estufas son muy utiles para limitar el paso de la corriente. Ley de Ohm La ley dice que la corriente (1) que circula por un conductor eléctrico es directamente proporcional al voltaje (V) e inversamente proporcional a la resistencia (R). La piramide de la derecha es muy util para conocer la formula a la que es igual la variable que tapes con el dedo, por ejemplo: Tapa con tu dedo la V (voltaje), entonces voltaje va a ser igual a | (corriente) por R (resistencia), una més tapa | (Corriente), | va a ser igual a V dividido R. Sistemas electrénicos Un sistema electrénico es un conjunto de circuitos que interactuan entre si para ‘obtener un resultado. Una forma de entender los sistemas electronicos consiste en dividirlos en entradas, salidas y procesamiento de sefial Las entradas 0 inputs Son sensores (0 transductores) electrénicos 0 mecdnicos que toman las sefiales (en forma de temperatura, presion, humedad, contacto, luz, movimiento, pH, etc) del mundo fisico y las convierten en sefiales de corriente o voltaje. Por ejemplo un sensor de temperatura, un pulsador, una fotocelda, un potenciémetro, un sensor de movimiento entre muchos mas. Las salidas o Outputs Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Son actuadores u otros dispositivos (también transductores) que convierten las sefiales de corriente o voltaje en sefiales fisicamente Uitiles como movimiento, luz, sonido, fuerza, rotacién, entre otros. Por ejemplo: un motor que gire, un LED 0 sistema de luces que se encienda automaticamente cuando esté oscureciendo, un buzzer que genere diversos tonos. Ojol! La pata corta del led es siempre el polo negativo (catodo) y la pata larga el polo Ppositivo (4nodo). Primero conectar todos los componentes a la protoboard y a lo ultimo conectar la placa Arduino al equipo portatil. Desafio La sintaxis ante todo Los puntos y comas son uno de los elementos mas importantes para escribir codigo para Arduino y uno de los que mas facilmente nos olvidamos. Se usan para separar las diferentes lineas de cédigo en su programa e indica a Arduino donde termina su comando. Completa el cédigo con los ; que falten. Cambiando de pin Modificar el cédigo para que el LED si en lugar de estar en el PIN 4, estuviera conectado al PIN 8. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Eerrrrsy Pema aoy Parone riteiraicemrt) rae : Pirie ete cnt) delay is Ejercicio #2: Encender led desde la protoboard. Realizar el circuito como se muestra en la siguiente imagen. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Nota: Cabe destacar que se usan los cables MM (Macho-Macho), para conectar a corriente o Tierra todo componente. Desafio Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Una vez que hemos realizado el proyecto anterior, donde hemos prendido el LED en el protoboard, te proponemos algunas de las siguientes actividades para ejercitar: Realizar una modificacién en el cédigo para que la luz parpadee de la siguiente manera: + Prendido 3 segundos. + Apagado 1 segundo. + Prendido 2 segundos. ‘© Apagado 0.5 segundos. + Prendido 1 segundo. * Apagado 0.25 segundos. * Que luego vuelva a arrancar. Desafio Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Una vez que hemos logrado realizar este proyecto te proponemos algunas de las siguientes actividades para ejercitar: 3€ Realizar una modificacién del cédigo para que la luz parpadee de la siguiente manera: Prendido 3 segundos, apagado 1 segundo, prendido 2 segundos, apagado 0.5 segundos, prendido 1 segundo y apagado 0.25 segundos y que luego vuelva a arrancar. 3€ Realizar el montaje como muestra la imagen y hacer que parpadeen los tres leds. Ejercicio #3: Encender un componente led desde la placa arduino. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Hacer el prototipo siguiente como se muestra en la siguiente imagen. Pasos: 4.- Conectar la patita larga del led (4nodo) al pin digital nimero 13. 2.-Y la otra patita corta (cdtodo) a Tierra o Ground. Nota: Cabe destacar que solo fue necesario cambiar el prototipo sin mover nada de cédigo desde el IDE arduino. Ejercicio 4: Encender led con Push Button. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Herramientas: 1 LED externo. LED: Led emisor de luz (light-emitting diode). Sensor: Push Button. Un bot6n tactil Jumpers wires (4 puentes MM). 1 protoboard. Prototipado sin tener que soldar. 1 arduino. 2 resistencias. (220k para el led y de 10k para el botén). Indicaciones generales: 1. Hacer que el led se encienda y apague presionando y soltando el botén. 2. La pata mas corta va a tierra y la mas larga a voltaje. 3.- Protoboard. Las dos primeras lineas estan conectadas horizontalmente (de arriba hacia debajo de la imagen). Negativo o a tierra y el positivo 0 a 5 volts, para alimentar toda una linea. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje 4.- Tenemos dos partes donde van a ir conectados nuestros componentes. Cual estén conectadas verticalmente. Distinguir resistencias. Para el boton: dorado, naranja, negro y café (10k). Para el led: dorado, café, naranja y rojo (220k). Cables para tierra: blanco y negro. Cables para el voltaje: Rojo. Procedimientos: Para el L.E.D. 1.- Las patitas del led en cada extremo de los bloques. 2- Del lado de la pata corta (cétodo) sobre la misma linea vertical poner la resistencia dejando pasar un espacio recibira tierra Para el botén. 1.- Poner el botén atrds del led o delante segiin sea el caso, dos patas para un bloque y el otro igual 2. Una resistencia de 10K conectaria al boton del lado de una patita sobre la misma linea, esa resistencia recibira tierra. Conectarlos al arduino. 4.- Conectar la tierra y el voltaje (Sv) a la protoboard. 2.- El voltaje pasara a través del pin digital #4 de la pata mas larga del led. 3.- La alimentacién a tierra, pasaré por la resistencia de una de las patas del boton. Resumen: Conectar la pata mas corta del led, conectarlo a través de la resistencia a la linea azul, y del bot6n una de las patas est4 conectada a tierra a través de esta resistencia. Imagenes ilustrativas. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Conectar los componentes al Arduino. 1- De la misma linea que tenemos conectada la tierra en el _botén, vamos a conectarlo al pin digital #2 del arduino. De la otra patita conectarlo a 5 volts. 2.- La alimentacién del led vendra del pin digital #4 desde la pata larga. Del lado de la patita corta del led, sobre la misma linea conectar una resistencia a Tierra. 3.- En la otra pata se le da voltaje al bot6n desde la linea roja de la protoboard 4.- Nota: Tierra como alimentacién que va ser controlada por el pin. MIENTRAS SE TENGA PRESIONADO EL BOTON SE ENCIENDE EL LED Y SI SE SUELTA SE APAGA. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Disefio de prototipo Muestra de cédigo. r “Debemos guardar siempre el estado de nuestro sensor, “Como estamos introduciendo nuestro primer sensor, debemos guardar siempre un estado, *Un sensor que es digital, pushbuttons, basicamente son dos placas, de metal que estan separadas y cuando no las presionamos *se juntan, cerrando el circuito dando un 0 0 un uno. q int estadoBoton = 0; 1!Constante de tipo entero conectado al pin 2. const int boton = 2; Med conectado al pin 4. const int led = 4; Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje void setup() { r * Decirle al arduino aqui, que nuestro led vale 4, conectado al pin 4, eso es salido output. * Boton es una entrada o input. " pinMode(led,OUTPUT); pinMode(boton,INPUT); } void loop() { r * queremos leer un pin digital, * argumento de digitalRead(Es que pin voy a leer). 1 estadoBoton = digitalRead(boton); r * Si nuestro botén, si esta presionado prende el led, sino esta presionado apaga elled a 1/Si nuestro botén la lectura de nuestro botén es igual a 5volts, uno 6 quiere decir que esta en el estado HIGH. a if(estadoBoton == HIGH){ Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje digitalWrite(led, HIGH);//Escribir en el pin digital, que ponga el estado HIGH, igual a uno. 0 5 volts. Jelset 11 Sino esta presionado, que apague el led. digitalWrite(led,LOW); } } Ejercicio #5: Ahora, hacer que el led se encienda y apague al presionar dos veces el push button. Muestra de cédigo. JIPARTE 2 LED Y PUSH BUTTON. r * Presionar el botdn que encienda el led, saltar el botén que se quede encendido. que guarde el estado de que esta encendido, * volverlo a presionar para que el led se apague. " const int boton = 2; const int led = 4; int estadoBoton = 0; Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje f * Se utilizan como condicionales, de true 0 false, 10 0, HIGH o LOW, ” boolean estadoAnteriorBoton = LOW; //Guardar el estado anterior del botén. boolean encenderLed = false; //Nos va dar la pauta para encender nuestro led 0 apagar. void setup() { pinMode(led, OUTPUT); pinMode(boton,INPUT); void loop() { estadoBoton = digitalRead(boton); IiSaber si el botén esta siendo presionado en este momento, /Si antes estaba LOW y ahora si esta presionado, vamos a encender nuestro led, if(estadoBoton == HIGH && estadoAnteriorBoton == LOW){ iMnvertir el estado de la funcion booleana. encenderLed = lencenderLed; estadoAnteriorBoton = HIGH; //Se sale del if al no cumplir la condicién. Jelsef estadoAnteriorBoton = estadoBoton; //Igualar el estado anterior del bot6n a cualquier estado del boton en este momento, Centro Educative Guaymax aprendizaje } digitalWrite(led, encenderLed); _//que el led se encienda 0 apague, agarre cualquier valor true o false. } Ejercicio #6. Encendiendo led RGB. Prototipo/Disefio: Cédigo. Programa para controlar un LED RGB con arduino. Usando las salidas PWM se puede controlar la intensidad de cada color para hacer las mezclas. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje ‘Se hacen dos funciones: rgbon(): Muestra los 3 colores principales uno despues de otro (rojo, verde y azul) colors(): Permite elegir entre tres colores (amarillo (y), narajno (0) rosado (p)) usando sus siglas en ingles*/ /* Materiales: 1 Arduino UNO. 1 LED RGB de 4 patas catodo comun 3 resistencias de 220[ohm] Cables de conexi6n Autor: Jesus. Fecha: 18 Julio 2016*/ /*—Deelaracion de variables para cada color R G B—*/ 1 Pin PWN 11 para led rojo int bled = 10; // Pin PWM 10 para led azul ; II Pin PWM 9 para led verde int rled = 11; int gled = f*-—-Declaracion de variables auxiliares——*/ int i; // Variable para ciclos repetitivos int repeat = 5; // Variables para cantidad limite de repeticiones void setup() { [*— Se inicializan pines PWM como salida*/ pinMode(ried, OUTPUT); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje pinMode(bled, OUTPUT); pinMode(gled, OUTPUT); } void loop() { for(i=0; i Import Library... > Add Library en la barra de menu. Arduino Archivo Editar [EESTI Herramientas Ayuda Verificar | Compilar RK Mostrar la Carpeta de Sketch 38K Ea Caro regar Archivo. a ‘EEPROM Esplora Ethernet Firmata com Lguidcrystat Robot Control Robot Motor so Servo SoftwareSerial SPI Stepper TFT WiFi Wire utr 3.- Se mostrar la pantalla donde debemos indicar la ruta del archivo .ZIP que contiene la libreria de arduino. Elegimos el archivo ZIP que acabamos de bajar y damos clic en lect” o “Seleccionar”. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje $B icmogn & mevasxtog.xmi.t Basti mt. hraatog mL 10 15 spvasxiog ami parce ‘Burton amt tzck S MPLABXLog.xmi.13 1 MPLABxtog.xmi.14 BS svastionsmts 5S hovaatog mt 3 nruatepnt 4.- Nuevamente hacemos clic en Sketch > Import Library y deberiamos ver la librerfa nueva en la parte baja del mend Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Herramientas Ayuda Verificar / Compilar wR Mostrar la Carpeta de Sketch 38K ‘Agregar Archivo. ‘Add Library... EEPROM Esplora Ethernet Firmata Gsm LiquidCrystal Robot Control Robot Motor so Servo SoftwareSerial SP Stepper 1 Fi Wire Arduino Archivo Después de completar estos pasos la libreria sera descomprimida en nuestro directorio de sketches y podremos utilizarla en todos nuestros programas. Sin ‘embargo, los ejemplos contenidos con la libreria no seran visibles dentro del ment File > Examples hasta que reiniciemos el entoro de desarrollo, Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje @_ Artaine EXSY ator Sheich Verranientas prada Nuevo xN dot xO Sketchbook > core x Guardar xs Guarda como eS O4.communcaon Garg RU OSContat . Carper mando Progrmador MU | O6-Seeor . Cofgurcin de Poa om | S780 : tmrimir me eee f ST ose . deeunot ME Novi sserson ur > NewPingventiner eeprom >" TimerExampl Esplora > ae Ethernet : Fata . ca Uvidcrstat Robotcontrol Ruta: Programa/ incluir Libreria/ Afiadir libreria ZIP. Instalacion manual de una libret Si el método anterior para instalar una libreria de arduino no funciona 0 queremos instalar manualmente {a libreria para “un mayor control. Podemos hacerlo de la siguiente forma: Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje + Descomprimimos el archivo .ZIP. * En Windows copiamos la carpeta de la libreria a la siguiente ruta: My Documents\Arduinollibraries. * En MAC copiamos la carpeta de la libreria a la siguiente ruta: Documents/Arduinollibraries. Al final deberiamos tener en nuestro directorio los siguientes archivos (Windows): T Wy Documents Arduino\ libraries \NenPing WewPing. cpp 2 My Documents\Ardutno\1tbrartes\NewPing\NewPing.h 3__My Documents \Arduino\libraries\NewPing\examples En MAC quedaria algo asi: i Documents7Ardutno/librartes/NewPing/NewPing..cpp 2 Document's/Ardutno/Libraries/NewPing/NewPing.h 3. Documents/Ardutno/librartes /NenPing/examples Ejercicio #9 Uso del sensor HC-SR04 Usaremos la siguiente libreria: https://goo.gl/4a8ViK Objetivo: Conocer el funcionamiento del sensor HC-SR04. Y usarlo para detectar qué tan lejos o cerca se encuentra un objeto. Materiales. 1 Tarjeta Arduino Uno. 1 Cable USB para Arduino. 1 Tarjeta protoboard 1 Software IDE de Arduino. 1 Sensor HC - SR04 1 Led comin de cualquier color. 1 resistencia de 220 0 330 ohms. 1 zumbador o speaker para 5 volts. Cables. Descripcién 1. Conectamos en sensor HC- SRO4 a nuestra protoboard 2. El sensor trae marcado el nombre de los 4 pines con los que cuenta, realizamos la conexién de la siguiente forma. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje 1. El pin GND lo conectamos a la tierra 2.- El pin Vec lo conectamos a corriente. 3.- El pin trig lo conectamos al pin 4 digital de Arduino. 4.- El pin Echo lo conectamos al pin 5 digital de Arduino. 3. Conectamos un LED a nuestra protoboard, el extremo plano lo conectamos a tierra mediante una resistencia de 220 ohms 0 330 ohm, y el extremo redondo lo conectamos al pin 8 de Arduino. 4. Conectamos el zumbador a la protoboard, el cable negro lo conectamos a tierra y el otro lo conectamos al pin 5 de nuestro Arduino. 5. Conectamos los cables de tierra y corriente del Arduino a la protoboard. 6. Cargamos el cédigo. A continuacién se muestra el diagrama de conexion de la presente practica. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje th Fritingorg, Practica - Uso de! Sensor ultrasonico"/ 1/Se importa la libreria NewPing #include const int trig= 4; //Pin trig en pin 4 const echo=3; //Pin Echo en pin3 const int zumbado! 5; /zumbador en pin 5 constintled=8; /LEDenpin8 int distancia; //Guardamos la distancia que detecte el sensor Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje int pausa; _//Guarda el tiempo de espera entre parpadeo 11 Se crea un objeto con la libreria NewPing llamado sonar NewPing sonar(trig, echo, 200); // Each sensors trigger pin, echo pin, and max distance to ping. void setup(){ pinMode(zumbador,OUTPUT); //Declaramos el zumbador como salida pinMode(led, OUTPUT); //Declaramos el LED como salida } void loop(){ J/en la variable distancia guardamos la distancia en centimetros que detecta el sonar respecto al objetivo distancia = sonar.ping_cm(); if (distancia < 100){ /irestringir el alcance a 1m (100cm) pausa = distancia * 10; //guardamos el tiempo de pausa digitalWrite(zumbador, HIGH); //encendemos el zumbador digitalWrite(led, HIGH); //Encendemos el LED delay(pausa); //Agregamos un delay que sea igual al tiempo de pausa } digitalWrite(zumbador, LOW); //apagamos el zumbador digitalWrite(led, LOW); /apagamos el LED delay(pausa); // esperamos el tiempo de pausa Centro Educative Guaymax aprendizaje Finalidad de la practica: Es que al posicionar un objeto en el rango del sensor, el speaker emite un sonido y el LED comienza a parpadear, y entre mas cerca se esté del sensor el ruido y el parpadeo seran mas rapidos. Nota: Aparte del LED, también se encuentra un speaker conectado y funciona como deberia emitiendo un sonido intermitente, el sonido es muy débil. Se aprendié acerca del uso del sensor de proximidad, especificamente del HC- SR04 y su correcta conexién al Arduino y en tanto a la programacién, aprendimos a como usar las librerias, en este caso la New Ping que soporta el sensor HC- SRO4. Ejercicio #10 Controlando leds con potenciémetro. Objetivo: Controlar leds con la actividad recibida por un potencidmetro. Materiales Protoboard. Arduino, 5 leds 5 resistencias de 220 ohms. © Alambre o conectores MM. * 1 potenciémetro * Arduino IDE. A continuacién se muestra el prototipo de la parte del hardware: Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Cédigo en el IDE. 0; int pinPotenciometro =A0; inti int valorPotenciometro = 0; void setup(){ pinMode(pinPotenciometro, INPUT); for (i = 2; i< 7; i++) Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje pinMode(i, OUTPUT); Serial.begin(9600); void loop() { valorPotenciometro = analogRead(pinPotenciometro); Serial.printin(valorPotenciometro, DEC); delay(100); if (valorPotenciometro == 0) apagarLeds(); if (valorPotenciometro > 0 && valorPotenciometro < 200) digitalWrite(2, HIGH); (valorPotenciometro >= 200 && valorPotenciometro < 400) italWrite(3, HIGH); (valorPotenciometro >= 400 && valorPotenciometro < 600) italWrite(4, HIGH); (valorPotenciometro >= 600 && valorPotenciometro < 800) italWrite(5, HIGH); if (valorPotenciometro >= 800) digitalWrite(6, HIGH); if (valorPotenciometro == 1023) encenderLeds(); } void apagarLeds() { for (i = 2; i< 7; i++) digitalwrite(i, LOW); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje } void encenderLeds(){ for 2i<7; +) digitalWrite(i, HIGH); } Explicacién del cédigo. El potenciémetro entrega un limite minimo de 0 y un maximo de 1023. Se inicializa i, pinPotenciometro, valorPotenciometro en 0. Por medio del pinMode definimos que pinPotenciometro sera de entrada de datos y desde el pin 2 hasta el 6, de salida (para enviar HIGH y LOW a los leds). Serial.begin (velocidad) inicializa o abre el puerto serie asignéndole una velocidad de transmisién de datos (bits por segundo). Dicha funcién debe ser llamada desde dentro de la estructura 0 seccién setup(). Luego en la linea valorPotenciometro = analogRead(pinPotenciometro); estamos diciendo que los valores enviados por el potenciémetro se almacenaran en la variable valorPotenciometro. Serial.printin(valorPotenciometro, DEC), es para que si queremos ver los valores que esta enviando el potenciémetro en pantalla, los envie en formato decimal (para ver la consola o monitor, vamos a Tools > Serial Monitor). Cada uno de los if que siguen en el cédigo, especifican una accién con determinado valor que viene del potenciémetro, cuando es 0, se ejecuta el método apagarLeds, lo que pone en LOW a los leds, apagandolos, cuando es el maximo, 1023, se activa el método encenderLeds, el cual pone en HIGH los leds, encendiéndolos todos. Las demas condiciones hace que pasando por determinados valores, los leds enciendan uno por uno. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ejercicio #11 Deteccién de luz con sensor LDR Dificultad: Intermedio. Alcance y objetivos: Aprenderemos teoria del sensor LDR, como conectarlo a la placa de Arduino, su funcionamiento mediante ejemplos practicos por medio de Arduino, Hardware necesario: placa Arduino, resistores, sensor LDR, cables. Software necesario: Los siguientes programas son necesarios antes de la realizacion del proyecto: 1.- Para programar tu Arduino, software de Arduino, descarga en: http://goo.gUrrO0OPP- 2- Para documentar tu proyecto, te recomendamos el uso de Fritzing: http//goo.qV/fM6MEP- Otras consideraciones antes de empezar: Ten en cuenta las siguientes consideraciones antes de empezar: * Tener precaucién en el manejo de los diferentes dispositivos. Evitar largas exposiciones al sol de la electronica, verter agua, etc. * Antes de alimentar la electronica, asegurate de haber realizado las conexiones tal y como se muestran. De otro modo podrias dafiar la electronica. Prevencién de riesgos. Los siguientes riesgos estan relacionados con este proyecto: 1.- Cortes en las manos. Ten precaucién cuando peles los cables. Usa una pela cables. Evita usar tijeras. Por favor, trabaja con precaucion durante la realizacién de tu proyecto. Paso 1. El sensor LDR tiene la siguiente forma y representacién eléctrica. — | N 1 —C_+— Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ten en cuenta las siguientes consideraciones antes de empezar: Un sensor LDR es un resistor que varia el valor en funcion de la cantidad de luz que incide sobre él. Cuando no se incide luz sobre el sensor el valor de la resistencia es muy alto, y a medida que se incrementa la luz que incide, baja el valor de la resistencia. En la figura podemos verlo: FIGURE 2 RESISTANCE AS FUNCTION OF ILLUMINATION 1000 ] 100 10 Resistance (kQ) = 10 o1 oy 10 10 100 1000 10000 tun Algunas caracteristicas de este sensor son: 1.- Tiempo de respuesta corto, ideal para aplicaciones que requieran respuesta rapida. 2.- Varian su valor de acuerdo a la intensidad de la luz. 3.- Son analégicos. Algunas aplicaciones del sensor LDR son: 1.- Uso en fotocopiadoras: Densidad del toner. 2. Aplicaciones de control luz en la calle. 3.- Balanzas electrénicas. 4. Equipos de pruebas colorimétricas. Medicién de luz con mi sensor LDR. La primera parte del proyecto consiste en conectar el sensor LDR a la protoboard para poder empezar a hacer mediciones de luz. Las haremos mediante: 1.- Vamos a montar el siguiente circuito en la protoboard. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje wwew.opiron.com by AGirod Deteccién de luz con sensor LOR: Medicién de luz medi LOR. ite sensor Cédigo colores cables: Negro> GND Rojo-> V+ Azul-> Sefial analégica El circuito consiste basicamente en conectar en serie una resistencia de valor, y un sensor LDR. Conectar entre la patilla Analog In 0 de Arduino y una pata de la resistencia, tal como se muestra en la figura, un cable para poder hacer la medici6n del sensor. 2.- Ahora vamos a trabajar con el software de Arduino. 3.- Compilamos y verificamos que el cédigo no presente ningun error. Cédigo r “Lectura de los valores medidos por un sensor LDR. b | ILeeremos del pin 0. int LDR_pin = 0; Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje /Nariable para leer los datos del LDR. int LOR_val = 0; void setup() { INisualizacién de los valores por la consola, hay que clickear Hen el boton Serial Monitor Serial.begin(9600); void loop() { IIEn el loop iremos leyendo continuaamente del sensor LDR. LDR_val = analogRead(LDR_pin); //\mpresién de los valores leidos por el sensor por pantalla. Serial.print("LDR ="); Serial.printIn(LDR_val); 1Paro 1 segundo delay(1000); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Empezamos a medir: Cuando acercamos tenemos las luces encendidas, los valores se ven més altos, cercanos a 30 y cuando apagamos la luz, los valores son bajos. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ejercicio #13: LDR. Informacién de referencia: http/www.arduino.ce/playground/Learning/PhotoResistor http://arduino.ccles/Reference/Map Detalles: Este es un ejercicio muy sencillo en el que veremos como obtener lecturas analégicas de un sensor y darles salida por el monitor del puerto serie para verlas. Herramientas: + 1placa Arduino. + 1 resistencia sensible a la luz o fotoresistencia, 2 resistencias. * led para que nos dé una salida proporcional a las lecturas recibidas desde la entrada analégica mediante PWM. Prototipo. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Cédigo. /* Prueba simple del funcionamiento de una fotoresistencia Conecta la fotoresistencia por una pata al pin 0 y por la otra a +5V. Conecta una resistencia de 10K entre el pin 0 y GND. PhotoR 10K +5 0--/WV--.~/W—-0 GND I Pin 0 0-——" " int lightPin = 0; // Pin para la fotoresistencia int ledPin=11; // Pin al que se conecta el LED void setup() { Serial.begin(9600); _// Inicia la comunicacién serie pinMode(ledPin, OUTPUT); // Establece el pin del LED 4 como salida void loop() { 11 Primero leemos el valor que nos da la fotoresistecia 11 lo mostramos por el puerto serie Serial.printin(analogRead(lightPin)); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje // Ahora cogemos Ia lectura de la fotoresistencia, la 11 dividimos por 4 y la mandamos como salida analdgica WalLED analogWrite(ledPin, analogRead(lightPin)/4); 1/ Hacemos una pequefia pausa para que el baile de I/ numeros en el puerto serie no sea mareante delay(100); } Muy probablemente el resultado sea decepcionante: el led brilla poco y cuando pasamos la mano por encima de la fotoresistencia el brillo del led baja un poco mas, pero dependiendo de las condiciones de luz ambiental es probable que no se note apenas nada. La solucién es el calibrado del sensor, esto es, hacer una lectura de los valores que devuelve el sensor en el ambiente en el que va a trabajar y ajustar los valores de salida a este rango. Para ello emplearemos el comando map. Map(valor, desdeBajo, desdeAlto, hastaBajo, hastaAlto); valor: el numero (valor) a mapear. desdeBajo: el limite inferior del rango actual del valor. desdeAlto: el limite superior del rango actual del valor. hastaBajo: limite inferior del rango deseado. hastaAlto: limite superior del rango deseado. El comando map() re-mapea un numero desde un rango hacia otro. Esto significa que, un valor contenido en el al rango desdeBajo, desdeAllto, seré mapeado al rango hastaBajo-hastaAlto. No se limitan los valores dentro del rango, ya que los valores fuera de rango son a veces objetivos y utiles, asi que si le pasamos un valor fuera del rango inicial calculara una salida dentro de! rango de salida. Se puede utilizar el comando constrain() tanto antes como después de ésta funcién si es importante respetar los limites de los rangos. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ten en cuenta que los limites “inferiores” de algtin rango pueden ser mayores 0 menores que el limite “superior” por lo que map() puede utilizarse para revertir una serie de nlimeros, por ejemplo: y = map(x,1,50,50,1); La funcién maneja correctamente también los numeros negativos, por ejemplo: y = map(x,1,50,50,-100); también es valido y funciona correctamente. El comando map() usa matematica de enteros por lo que no generaré numeros en coma flotante, es decir, su uso se limita a valores o variables del tipo int. Trata de aplicar la funcién map() al ejercicio por ti mismo, de modo que el led brille al minimo cuando tapas con la mano la LDR y al maximo cuando la LDR capta la luz de ambiente. Cédigo. int lightPin = AQ; //define el pin de la foto-resistencia int ledPin=11; _ //define el pin para el LED int valor; _ //define una variable en la que haremos los calculos int min=0; —_//valor minimo que da la foto-resistencia int max=0; —_/ivalor maximo que da la foto-resistencia void setup() { Serial.begin(9600); //Inicializa la comunicacion serie pinMode( ledPin, OUTPUT ); void loop() { valor = analogRead(lightPin); valor = map(valor, min, max, 0, 255); analogWrite(ledPin, valor); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Serial.printin(valor); delay(10); //pequerio retardo para darle II tiempo al LED a responder. Ejercicio #14 Encendido y apagado de led en funcion de la luz. 1.- Ahora lo que haremos sera encender y apagar un LED en funcién de la luz que tengamos en nuestra habitacién. Del ejercicio anterior, hemos visto que cuando tenemos la luz de la habitacion apagada, los valores son cercanos a 0, mientras que ‘cuando encendemos Ia luz, los valores superan 30. Con estos valores podemos agregar una condicién para poder manipular un LED. 2.- Vamos a montar el siguiente circuito en la protoboard. Mini ing La principal diferencia con el esquema anterior es que hemos afiadido un LED con una resistencia conectados al pin 13 de Arduino. 3.- Una vista del esquema del circuito. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje ° > s = 3 4.- Ahora vamos al software de Arduino y escribimos el cédigo necesario. 5.- Comprobaremos que encendiendo la luz de nuestra habitacién, el led se apaga, y si apagamos la luz de la habitacién, el led se enciende. ‘También vemos que el tiempo de respuesta de un sensor LDR es muy corto, por lo que podremos usarlo en aplicaciones que requieran de un tiempo de respuesta corto, Cédigo. r *Lectura de los valores medidos por un sensor LDR. 7 MLeeremos del pin 0. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje int LOR_pin = 0; JNariable para leer los datos del LDR. 0; int LDR_val int LED_pin = 13; // el led esta en el pin 13. void setup() { pinMode(LED_pin,OUTPUT); // El led esta en el pin 13. } void loop() { pr * En el loop iremos leyendo continuamente del sensor LDR. 1 LDR_v if(LOR_val >= 20){ //si hay luz, apago el led. digitalWrite(LED_pin,LOW); //apagamos el led. } else if(LDR_val < 20){//si no hay luz enciendo el led. = analogRead(LDR_pin); //lee el valor de entrada de LDR. digitalWrite(LED_pin, HIGH); //encendemos el led } Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ejercicio #15. Fotoresistencia haciendo uso de tres leds. Objetivo: Realizar un medidor de luz con nuestro arduino, utilizaremos un arduino con fotoresistencia LDR, y mostraremos el resultado en la computadora asi como en un grupo de leds. Aprender como conectar sensores que varian su resistencia dependiendo de una magnitud fisica. Conceptos basicos. Para entender como funciona este circuito y el programa que corre en la tarjeta Arduino debemos conocer tres conceptos clave: + Fotoresistencia LDR: Componente cuya resistencia varia sensiblemente, con la cantidad de luz percibida. La relacion entre la intensidad luminica y el valor de la resistencia no es lineal. Se utiliza ampliamente para medir la iluminacién en dispositivos electrénicos que requieren un precio agresivo. Su comportamiento es el siguiente: * Mas luz = menor resistencia eléctrica. + Menos luz = mayor resistencia eléctrica + Divisor de voltaje: Mediante un par de resistencias en serie, es posible repartir la tension suministrada por la fuente entre las terminales de estas, en nuestro caso, el divisor se utiliza con el LDR para obtener un voltaje variable de acuerdo a la cantidad de luz percibida Ri Vout Rz “R, aap Vin Ri+ Ro * Conversién Analégico-Digital (ADC). Es el proceso mediante el cual se convierte una magnitud fisica como un voltaje, corriente, temperatura, etc en un numero binario (0 sefial digital) con el propésito de facilitar su manejo por circuitos digitales como un CPU. El Arduino realiza este proceso para conocer la cantidad de luz percibida por el LDR y poder procesarla numéricamente. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Materiales. 1) 1 Arduino UNO. 2) 1 fotoresistor (LOR) 3) 1 resistencia de 10 kohm 1/4W. 4) 3 resistencias de 220 o 330 ohm 1/4 W. 5) 3 leds. 6) Cables para protoboard. DiagramalPrototipo. fritzin Debemos armar el circuito como se muestra en el siguiente diagrama pictorico. Recordar que los leds tienen polaridad y hay que respetarla. El pin mas largo va conectado a la tarjeta Arduino, mientras que el pin mas corto va con una resistencia a tierra, la resistencia también puede conectarse sin problema entre el Anodo del led y el arduino (del lado positivo del led). Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Cédigo (Sketch) Explicacién: En primer lugar se preparan los pines de salida donde estan conectados los leds, el pin de entrada donde se conecta el divisor resistivo y el puerto serie para la comunicacién. A continuacién se ejecuta un ciclo infinito en el que se lee el valor de! voltaje en el pin del LDR y se accionan los leds segun correspondan. r * Ejemplo de medidor de luz con Arduino utilizando una fotoresistencia LDR y * un grupo de leds para mostrar el resultado de las lecturas. 1 // Pin donde se conectan los leds int pinLed1 = 2; int pinLed2 = 3; int pinLed3 = 4; 1/ Pin analogico de entrada para el LDR int pinLDR = 0; 1 Variable donde se almacena el valor del LDR int valorLDR = 0; void setup() { 1 Configuramos como salidas los pines donde se conectan los led pinMode(pinLed1, OUTPUT); pinMode(pinLed2, OUTPUT); pinMode(pinLed3, OUTPUT); 1] Configurar el puerto serial Serial.begin(9600); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje void loop() { 11 Apagar todos los leds siempre que se inicia el ciclo digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); // Guardamos el valor leido de! ADC en una variable El valor leido por el ADC (voltaje) aumenta de manera directamente proporcional 11 con respecto a la luz percibida por el LDR valorLDR= analogRead(pinLDR); 11 Devolver el valor leido a nuestro monitor serial en el IDE de Arduino Serial.printin(valorLDR); 1/ Encender los leds apropiados de acuerdo al valor de ADC if(valorLDR > 256) { digitalWrite(pinLed1, HIGH); } if(valorLDR > 512) { digitalWrite(pinLed2, HIGH); } if(valorLDR > 768) { Centro Educative Guaymax aprendizaje digitalWrite(pinLed3, HIGH); } 1] Esperar unos milisegundos antes de actualizar delay(200); + Para probar el proyecto medidor de luz, solamente debemos colocarlo sobre una fuente de luz y verificar que los leds se enciendan conforme aumenta la cantidad de luz. En la terminal, también podemos ver como va cambiando el valor de la conversién analégico a digital. Ejercicio #16. Trabajando con fotoresistencia (Continuidad). Tomando como referencia el ej anterior. Cuando hay suficiente luz ambiente, todos los leds estan apagados, y conforme baja el nivel de luz, se encienden las diferentes “alertas’, siendo la roja la que indica mayor oscuridad. Para esto se utiliza una resistencia (pulldown) de 10K (puede ser menor, dependiendo de si queremos ser sensibles a la claridad o a la oscuridad), por un lado conectada esta a tierra, y por el otro lado, alimentando con 5V el sensor. En la unién entre el sensor y la resistencia de 10K, se saca una salida que va hacia la entrada anal6gica de! Arduino. Esto nos dard valores entre 0 (mucha luz) y 1023 (oscuridad total). Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Cédigo (sketch) int lightPin = 0; //define a pin for Photo resistor int ledPint = 2; int ledPin2 = void setup(i{ pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje pinMode(ledPin3, OUTPUT); void loop(){ int lectura = analogRead(lightPin); if(lectura < 300) { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); } else if(lectura >= 300 && lectura < 500) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); } else if(lectura >= 500 && lectura < 700) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, LOW); } else if(lectura >= 700) { digitalWrite(ledPin1, HIGH); Centro Educative Guaymax Innovacién, libertad y devocién pi aprendizaje digit digit } jalWrite(ledPin2, HIGH); falWrite(ledPin3, HIGH); delay(100); Ejercicio #17 Luces estroboscépicas con variacién de tiempo. Material ¥ Arduino UNO. v2 v2 v4 Realizar 330 ohm: LED resistencias 330 ohms. leds. pulsador. el circuito como se muestra en la siguiente imagen. ‘Arauino Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Cédigo. MLuces estroboscépicas con variacion de tiempo Iisalidas digitales 8 y 7 , entrada pin 2 para variar el tiempo int ledazul = 8; int ledrojo = 7; int entrada = 2; int pulsador = 0; int tiempo = 30; void setup() { pinMode(ledazul, OUTPUT); pinMode(ledrojo, OUTPUT); pinMode(entrada, INPUT); void loop() { digitalWrite(ledazul, HIGH); —_//prende led azul delay(tiempo); // espera un tiempo de 200 o 30ms digitalWrite(ledazul, LOW); —_//apaga el led azul delay(tiempo); J/ espera un tiempo de 200 0 30ms digitalWrite(ledazul, HIGH); —_//prende led azul delay(tiempo); J/ espera un tiempo de 200 0 30ms digitalWrite(ledazul, LOW); —_//apaga el led azul delay(150); J espera un tiempo de 150ms Centro Educative Guaymax aprendizaje digitalWrite(ledrojo, HIGH); —_//prende led rojo delay(tiempo); J/ espera un tiempo de 200 0 30 mili segundos digitalWrite(ledrojo, LOW); —_//apaga el led rojo delay (tiempo); J/ espera un tiempo de 200 0 30 mili segundos digitalWrite(ledrojo, HIGH); _//prende led rojo delay(tiempo); J/ espera un tiempo de 200 0 30 mili segundos digitalWrite(ledrojo, LOW); _//apaga el led rojo delay(150); espera un tiempo de 150 mili segundos pulsador = digitalRead(entrada); //Iee el valor del pin 2 si esta en alto o bajo if (pulsador == HIGH){ —_// siesta en alto el tiempo es de 30ms de lo contrario es 200ms tiempo=30; } else { tiempo=200; } } Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ejercicio #18 Pantalla LCD 16 * 2 display. Hacer que en el display de la pantalla LCD aparezca la palabra “Hola mundo” Material Y Arduino UNO. 1 pantalla LCD. 1 potenciémetro. 1 resistencia 10 kohm. v v v ¥ Cables machos a macho. Realizar el circuito como se muestra en la siguiente imagen. 100 ohm o Puente 10K ohm Nota: Cabe destacar que el potenciémetro solo es para calibrar el contraste de la pantalla. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Contrast adjustment A +5v + . + | back light current limit resistor Pin Assignment Vss (GHD,supply) Vee (+5V) Vee (Contrast adj.) RS R/W (Read/Write) E (enable) (Data bit 0-7) Back light (+) Back light (-) Cédigo pantalla LCD r LiquidCrystal Library - scrollDisplayLeft() and scrollDisplayRight() Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface. This sketch prints "Hello World!" to the LCD and uses the scrollDisplayLeft() and scrollDisplayRight() methods to scroll the text. The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 12 * LCD D4 pin to digital pin S * LED DS pinto digital pin 4 Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3) This example code is in the public domain. http://goo.gl/rj TiMK 7 /Lieclude the library code include // initialize the library with the numbers of the interface pins Liquidrystal ed(12, 11, 5, 4, 3, 2); void setup) { 11 set up the LCD's number of columns and rows: Ied.begin(16, 2); 1/ Print a message to the LCD. ed.print("hello, world! delay(1000); } void loop() { Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje J/ scroll 13 positions (string length) to the left J/ to move it offscreen left: for (int positionCounter = 0; positionCounter < 13; positionCounter++) { I scroll one position left: led.scrollDisplayLeft(); AH waita bit: delay(150); } // scroll 29 positions (string length + display length) to the right, // to move it offscreen right: for (int positionCounter = 0; positionCounter < 29; positionCounter++) { // scroll one position right: led.scrollDisplayRight(); Hoaita bit delay(150}; } 1/ scroll 16 positions (display length + string length) to the left // to move it back to center: for (int positionCounter = 0; positionCounter < 16; positionCounter++) { 11 scroll one position left: Ied.scrollDisplayLeft(); Hf waita bit: delay(150}; } 11 delay at the end of the full loop: delay(1000); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ejercicio #19 Servo motor. Hacer mover servo de extremo a extremo con parada en el centro. Material ¥ Arduino UNO. ¥ Servo motor. ¥ Cables macho macho. Realizar el circuito como se muestra en la siguiente imagen. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Cédigo. // Mover servo de extremo a extremo con parada en el centro include //incluye la libreria Servo Servo servol; // Crea el objeto servol con las caracteristicas de Servo void setup) { servol.attach(5,600,1500); // Asocia el servol al pin 3, define el min y max del ancho del pulso ) // eso depende del fabricante del servo void loop() { servol.write(0}; 1/ Gira el servo a0 grados delay(700}; 1 Espera 700 mili segundos a que el servo llegue a la posicién servol.write(90); 11 Gira el servo a 90 grados delay(700}; servol.write(180); _//Gira el servo a 180 grados delay(700}; } Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ejercicio #20 Mover servo de derecha a izquierda al oprimir el pulsador de cada lado el servo regresa automaticamente al centro (Direccién de Carro). Material. Y Servomotor. Y 2pulsadores. Y 2ieds. Y 2resistencias. Y Cables macho macho. Realizar el ci uito como se muestra en Ia siguiente imagen. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Cédigo. 11 Mover servo de derecha a izquierda al oprimir el pulsador de cada lado 1/ El servo regresa automaticamente al centro (Direccién de Carro) #include 1/ncluye la libreria Servo Servo servot; 1 Crea el objeto servot con las caracteristicas de Servo int pulsador_der = 1; 1/ Fijamos el pulsador de la derecha en 0 int pulsador_izq = 1; 11 Fijamos el pulsador de la izquierda en 0 void setup() { servot.attach(6,600,1500); // Asocia el servot al pin 3, define el min y max del ancho del pulso 11 eso depende del fabricante del servo pinMode(2, INPUT); 11 Configuramos el pin 2 como entrada pinMode(3, INPUT); 11 Configuramos el pin 3 como entrada } void loop() { pulsador_der = digitalRead(2); //lee el valor del pin 2 si esta en alto 0 bajo pulsador_izq = digitalRead(3); //lee el valor del pin 3 si esta en alto 0 bajo if (pulsador_det LOW){ —_//sise oprimié el pulsador de la derecha servot write(180); 11 Gira el servo a 1800 grados delay(15); 1! Espera 15 mili segundos a que el servo llegue a la posicién } Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje if (pulsador_izq==LOW){ —_// si se oprimio el pulsador de la izquierda servot write(0); 11 Gira el servo a 0 grados delay(15); 11 Espera 15 mili segundos a que el servo llegue a la posicion z if(pulsador_izq == HIGH && pulsador_der == HIGH){_// Si se dejan de oprimir los dos pulsadores servot write(90); 11 Gira el servo a 90 grados delay(15); 1/ Espera 15 mili segundos a que el servo llegue a la posicion } } Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Casa inteligente A continuacién les mostraremos como hacer las conexiones en la tarjeta Arduino Mega paso a paso: (todas las conexiones estan basadas en el sketch que programamos para el arduino). Conectando los LEDs amarillos (habitaci6n, sala, comedor y cociné fritzin Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Conectamos el positivo de los LEDs de la sala a los puertos 34 y 36 del arduino. Los positivos de los LEDs del comedor, los conectamos a los puertos 38 y 40. Para las luces de la cocina, usamos los puertos 42 y 44 conectados a los positives de los LEDs. La habitacién tiene dos LEDs, sus polos positivos los conectamos a los puertos 46 y 48 de la tarjeta Arduino Mega. Todos los polos negativos de los LEDs, van conectados a través de resistencias de 220 Ohms al GND del Arduino, como se puede ver en el plano superior. Ahora conectamos los LEDs de la parte exterior de la casa: fritzin Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Los polos positivos de los LEDs rojos los conectamos a los puertos 22, 24 y 26. Para los LEDs verdes conectamos a los puertos 28, 30 y 32 los polos positivos. Como en el plano anterior, conectamos los polos negativos a resistencias de 220 ‘Ohms y estas a su vez las conectamos a GND de la tarjeta Arduino MEGA Una vez hemos conectado los bombillos de nuestra casa, pasamos a conectar la pantalla LCD la cual nos mostrara los comandos que recibe la casa dombtica, para esto necesitaremos la pantalla, el potenciémetro y una resistencia de 220 Ohms. El potenciémetro lo usamos para controlar el brillo de la pantalla. Simplemente sigue las conexiones como aparecen en el plano que mostramos a continuacién: Ye | fritzin Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Como conectar los pines de la pantalla: Pin 1 conectado a GND. Pin 2 conectado a 8V. Pin 3 ala salida del potenciémetro (conexién central). Pin 4 al puerto digital 11. Pin 5 a GND. Pin 6 a puerto digital 12. Pin 11 a puerto digital 5. Pin 12 a puerto digital 4. Pin 13 a puerto digital 3. Pin 14 a puerto digital 2. Pin 15 conectado a una resistencia de 220 Ohms, esta a su vez debemos conectarla a 5V. Pin 16 a GND. Ya tenemos listas las conexiones para los bombillos de la casa y la pantalla que nos traduce las ordenes que enviamos a través de la aplicacién de control de voz que disefiamos para nuestro dispositive Android Es el momento de instalar los servomotores los cuales abriran y cerrar la ventana y la puerta de nuestra casa domética. Sigue el siguiente plano para conectar los servomotores: Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje fritzing Debemos conectar el cable de datos de los servomotores a los pines 51 y 53 del arduino y los polos positivo y negativo a 5V y GND respectivamente. Conectando los motores del Aire acondicionado y el Calentador. ‘Cuando trabajamos con motores, debemos usar una fuente de poder diferente para poderlos mover, pues los 5V del arduino no son suficientes para que los motores puedan girar. Es por ello que vamos a necesitar una bateria de 9V y un relay de 2 canales para que podamos darle la orden al relay que los encienda Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Bésicamente el relay es un interruptor que se activa cuando le enviamos 5V, de esta manera le abre paso a la corriente adicional, que necesitamos para mover los motores en este caso la bateria de SV. (los relays los podemos usar también cuando queremos interactuar con el arduino y aparatos que trabajen con 110 0 220 voltios). Enel siguiente plano les mostramos como conectar los motores al relay de 2 canales y estos a la tarjeta Arduino Mega: fritzing Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Lo primero que debemos hacer es conectar la bateria a los polos positivos y negatives de la breadboard. Es Importante que el polo negativo 0 GND este puenteado al GND de la tarjeta Arduino MEGA, de esta manera evitaremos que se sobrecargue nuestro circuito. El polo positivo que proviene de la bateria lo conectamos a los puertos comunes del relay (conectores centrales) debemos conectar los polos positivos de los motores a los puertos con la sigla NO del relay, esto quiere decir que cuando se activa el relay con el Arduino, va a encender los motores. Si lo conectamos al puerto con la sigla NC, al conectar la corriente, lo motores estarén encendidos y al activar el relay lo que haria seria apagarlos. El puerto VCC lo conectamos a 5V del arduino y el GND al GND del Arduino. EI CH1 del relay lo conectamos al puerto 6 y el CH2 lo conectamos al puerto 7. Modulo Bluetooth. Una vez tenemos conectados los motores, solo nos hace falta agregar el modulo Bluetooth el cual es la base de este proyecto. Es muy importante que al subir el programa ala tarjeta Arduino Mega, el modulo Bluetooth no tenga el VCC conectado ala tarjeta, pues generara un error y el programa no se podra cargar. Solo cuando el programa este guardado en la memoria, podremos conectar el modulo a los 5V del arduino y nuestra casa domética estara operativa. Este es el la manera correcta de conectar el modulo a la tarjeta Arduino Mega: Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje fritzing ‘Como conectar e! Modulo Bluetooth. VCC lo conectamos al puerto 5V del Arduino (conectar solo cuando el sketch este cargado en la tarjeta) GND lo conectamos a la GND de la placa RXD lo conectamos al puerto TX de! Arduino. TXD lo conectamos al puerto RX del Arduino. Perfecto! ya tenemos todas las conexiones listas, ahora solo debemos subir el programa a la tarjeta y listo, podemos disfrutar de nuestra casa domotica. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje String mensaje; //variable que contiene el mensaje del dispositivo android #include // iniciamos la bliblioteca de servomotores Servo ventana; // le damos el nombre al servo que abre la ventana Servo puerta; // le damos el nombre al servo que abre la puerta #include // incluimos la linbreria para la pantalla liquida LiquidCrystal Ied(12, 11, 5, 3, 3, 2); // configuramos los puertos de la pantalla en el arduino / nombramos las variables para los LEDs y los puertos donde estan conectados const int luz_calle_1 = 22; const int luz_calle_2 = 24; const int iuz_calle_3 = 26; const int luz_calle_4 = 28; const int iuz_calle_5 = 30; const int luz_calle_6 = 32; const int iuz_sala_1 = 34; const int iuz_sala_2 = 36; const int iuz_comedor_1 = 38; const int iuz_comedor_2 = 40; const int luz_cocina_1 = 42; const int luz_cocina_2 = 44; const int luz_habitacion_1 = 46; const int luz_habitacion_2 = 48; / nombramos las variables de los motores y los puertos donde estan conectados const int aire_acondicionado = 6; const int calentador = 7; void setup () { Serial.begin(9600); // iniciamos la comunicacnion serial para recibir los datos 1/ configuracion para la pantalla liquida led. begin(16, 2); //iniciamos Ied.print (" Casa Domotica" lod.setCursor(0,1); lod.print (" Bienvendido "); pantalla liquida 1/ configuramos los puertos de los LEDs como salida pinMode(\uz_calle_1, OUTPUT); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje pinMode(luz_calle_2, OUTPUT); pinMode(Iuz_calle_3, OUTPUT); pinMode(Iuz_calle_4, OUTPUT); pinMode(Iuz_calle_5, OUTPUT); pinMode(luz_calle_6, OUTPUT); pinMode(luz_sala_1, OUTPUT); pinMode(luz_sala_2, OUTPUT), pinMode(\uz_comedor_1, OUTPUT); pinMode(luz_comedor_2, OUTPUT); pinMode(uz_cocina_1, OUTPUT); pinMode(luz_cocina_2, OUTPUT); pinMode(Iuz_habitacion_1, OUTPUT); pinMode(Iuz_habitacion_2, OUTPUT); // confuguramos los pines de los motores como salida pinMode(aire_acondicionado, OUTPUT); pinMode(calentador, OUTPUT); 1 servomotores puerta.attach(51); // pin al que esta conectado el servomotor de la puerta ventana attach(53); // pin al que esta conectao el servomotor de la ventana puerta.write(95); // iniciamos la puerta en posicion de cerrada ventana.write(150); // iniciamos la ventana en posicion cerrada } void loop() {// iniciamos el bucle del programa while(Serial.available()) { / confirmando que la comunicacion serial este disponible delay(10); !/ hacemos un delay para dar estabilidad al programa char c = Serial.read(); // c almacena el comando que proviene del dispositive android mensaje += c; // sumamos el contenido de! comando a la variable mensaje } if (mensaje.length(>0) { // verifica que la variable mensaje no esta vacia /iniciamos las funciones que realiza la casa segun el comando que enviamos desde el dispositive android if (mensaje=="*abrir puerta’) { puerta. write(25); // ponemos el servomotor de la puerta en posicion de abrir Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Ied.setCursor(0,1); // ubicamos la pantalla en la primera fila led.print ("Puerta pirncipal "); // escribimos el mensaje superior Ied.setCursor(0, 1); // ubicamos la pantalla en la segunda fila Icd.print (" Abierta "); }// escribimos el mensaje inferior else if (mensaje=="*cerrar puerta") { puerta. write(95); // ponemos el servomotor de la ventana en posicion de led.setCursor(0, 1); // ubicamos la pantalla en la primera fila led.print ("Puerta pimcipal "); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" Cerrada_— "); }/ escribimos el mensaje inferior else if (mensaje=="*abrir ventana") { ventana.write(30); // ponemos el servomotor de la ventana en posicion de abrir led.setCursor(0,1); // ubicamos la pantalla en la primera fila |ed.print (” Ventana master "); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" Room abierta "); }// escribimos el mensaje inferior else if (mensaje=="*cerrar ventana") { ventana write(150); // ponemos el servomotor de la ventana en posicion de cerrar led.setCursor(0,1); // ubicamos la pantalla en la primera fila led.print (” Ventana master "); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" Room cerrada "); }// escribimos el mensaje inferior else if (mensaje=="*abrir todo") { puerta. write(25); // ponemos el servomotor de la puerta en posicion de abrir delay(1000); // esperamos un segnudo ventana write(30); // ponemos el servomotor de la ventana en posicion de abrir led.setCursor(0,1); // ubicamos la pantalla en la primera fila Icd.print (" Puertas "); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" Abiertas. "); } // escribimos el mensaje inferior else if (mensaje=="*cerrar todo") { puerta. write(95); // ponemos el servomotor de la ventana en posicion de cerrar delay(1000); // esperamos un segundo ventana write(150); !/ ponemos el servomotor de la ventana en posicion de cerrar led.setCursor(0,1); // ubicamos la pantalla en la primera fila Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Icd.print (" Puertas _"); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print (" Cerradas "); } // escribimos el mensaje inferior else if (mensaje=="*prender principal") { digitalWrite (luz_habitacion_1, HIGH); // prendemos el primer led de la habitacion digitalWrite (luz_habitacion_2, HIGH); // prendemos el segundo led de la habitacion led.setCursor(0, 1); // ubicamos la pantalla en la primera fila Icd.print ("Luces Habitacion "); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar principal”) { digitalWrite(luz_habitacion_1, LOW); // apagamos el primer led de la habitacion digitalWrite(1uz_habitacion_2, LOW); // apagamos el segundo led de la habitacion lod.setCursor(0,1); // ubicamos la pantalla en la primera fila Icd.print ("Luces Habitacion "); / escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print(" apagadas "); }// escribimos el mensaje inferior else if (mensaje=="prender sala") { digitalWrite(Iuz_sala_1, HIGH); // prendemos el primer led de la sala digitalWrite(luz_sala_2, HIGH); // prendemos el segundo led de la sala led.setCursor(0,1); // ubicamos la pantalla en la primera fila led.print (" Luces Sala"); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar sala") { digitalWrite(luz_sala_1, LOW); // apagamos el primer led de la sala digitalWrite(1uz_sala_2, LOW); /! apagamos el segundo led de lasala led.setCursor(0,1); //ubicamos la pantalla en la primera fila Icd.print (" Luces Sala escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila Ied.print (" apagadas "); }// escribimos el mensaje inferior else if (mensaje=="*prender cocina") { digitalWrite(Iuz_cocina_1, HIGH); // prendemos el primer led de la cocina digitalWrite(luz_cocina_2, HIGH); // prendemos el segundo led de la cocina led.setCursor(0,1); // ubicamos la pantalla en la primera fila |ed.print (" Luces Cocina ");// escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje lod.print (" encendidas "); }/ escribimos el mensaje inferior else if (mensaje=="*apagar cocina") { digitalWrite(luz_cocina_1, LOW); // apagamos el primer led de la cocina digitalWrite(uz_cocina_2, LOW); // apagamos el segundo led de la cocina lod.setCursor(0,1); // ubicamos la pantalla en la primera fila led.print (" Luces Cocina"); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" apagadas "); }// escribimos el mensaje inferior else if (mensaje=="*prender comedor’) { digitalWrite(uz_comedor_1, HIGH); // prendemos el primer led del comedor digitalWrite(Iuz_comedor_2, HIGH); // prendemos el segundo led del comedor led.setCursor(0,1); // ubicamos la pantalla en la primera fila led.print (" Luces Comedor "); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" encendidas "); }/ escribimos el mensaje inferior else if (mensaje=="*apagar comedor’) { digitalWrite(1uz_comedor_1, LOW); // apagamos el primer led del comedor digitalWrite(1uz_comedor_2, LOW); // apagamos el segundo led de! comedor led.setCursor(0,1); // ubicamos la pantalla en la primera fila lod.print (" Luces Comedor "); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (” apagadas Wescribimos el mensaje inferior else if (mensaje=="+prender exterior") { digitalWrite(Iuz_calle_1, HIGH); // prendemos el primer led de la calle digitalWrite(Iuz_calle_2, HIGH); // prendemos el segundo led de la calle digitalWrite(1uz_calle_3, HIGH); // prendemos eltercer led de la calle digitalWrite(1uz_calle_4, HIGH); // prendemos el cuarto led de la calle digitalWrite(Iuz_calle_5, HIGH); // prendemos el quinto led de la calle digitalWrite(Iuz_calle_6, HIGH); // prendemos el sexto led de la calle led.setCursor(0,1); // ubicamos la pantalla en la primera fila lod.print (" Luces exterior "); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar exterior") { digitalWrite(Iuz_calle_1, LOW); // apagamos el primer led de la calle digitalWrite(|uz_calle_2, LOW); // apagamos el segundo led de la calle digitaWrite(1uz_calle_3, LOW); // apagamos eltercer led de la calle Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje digitalWrite(luz_calle_4, LOW); // apagamos el cuarto led de la calle digitalWrite(|uz_calle_5, LOW); // apagamos el quinto led de la calle digitalWrite(|uz_calle_6, LOW); // apagamos el sexto led de la calle led.setCursor(0,1); // ubicamos la pantalla en la primera fila |cd.print (" Luces exterior "); // escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila |ed.print(" apagadas "); }// escribimos el mensaje inferior else if (mensaje=="‘prender aire") { digitalWrite(aire_acondicionado, HIGH); // prendemos el motor el aire acondicionado led.setCursor(0,1); // ubicamos la pantalla en la primera fila Icd.print ("Aircon"); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print (" encendido —"); }// escribimos el mensaje inferior else if (mensaje=="*apagar aire") { digitalWrite(aire_acondicionado, LOW); // apagamos el motor el aire acondicionado led.setCursor(0,1); // ubicamos la pantalla en la primera fila Ied.print ("Aircon"); / escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila Ied.print(" apagado —"); }// escribimos el mensaje inferior else if (mensaje=="*prender calentador") { digitalWrite(calentador, HIGH); // prendemos el motor del calentador led.setCursor(0,1); // ubicamos la pantalla en la primera fila Icd.print (" Calefacicon "); // escribimos el mensaje superior Ied.setCursor(0, 1); // ubicamos la pantalla en la segunda fila led.print (" encendida — "); }// escribimos el mensaje inferior else if (mensaje=="*apagar calentador") { digitalWrite(calentador, LOW); // apagamos el motor del calentador led.setCursor(0, 1); // ubicamos la pantalla en la primera fila Icd.print(" Calefaccion "); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print(" apagada _"); }// escribimos el mensaje inferior else if (mensaje==">prender luces") { digitalWrite(uz_calle_1, HIGH); // prendemos el primer led de la calle digitalWrite(|uz_calle_2, HIGH); // prendemos el segundo led de la calle digitalWrite(luz_calle_3, HIGH); // prendemos eltercer led de la calle digitalWrite(Iuz_calle_4, HIGH); // prendemos el cuarto led de la calle digitalWrite(Iuz_calle_5, HIGH); // prendemos el quinto led de la calle digitalWrite(|uz_calle_6, HIGH); // prendemos el sexto led de la calle digitalWrite(|uz_habitacion_1, HIGH); // prendemos el primer led de la habitacion Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje digitalWrite(luz_habitacion_2, HIGH): // prendemos el segundo led de la habitacion digitalWrite(uz_sala_1, HIGH); // prendemos eltercer led de la sala digitalWrite(1uz_sala_2, HIGH); // prendemos el cuarto led de la sala digitalWrite(1uz_cocina_1, HIGH); // prendemos el quinto led de la cocina digitalWrite(|uz_cocina_2, HIGH); // prendemos el sexto led de la cocina digitalWrite(1uz_comedor__1, HIGH); // prendemos el quinto led del comedor digitalWrite(1uz_comedor_2, HIGH); // prendemos el sexto led del comedor Ied.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print(" Luces —_");// escribimos el mensaje superior led.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar luces") { digitalWrite(|uz_calle_1, LOW); // apagamos el primer led de la calle digitalWrite(|uz_calle_2, LOW); // apagamos el segundo led de la calle digitalWrite(|uz_calle_3, LOW); // apagamos eltercer led de la calle digitalWrite(1uz_calle_4, LOW); // apagamos el cuarto led de la calle digitalWrite(|uz_calle_5, LOW); // apagamos el quinto led de la calle digitalWrite(Iuz_calle_6, LOW); !/ apagamos el sexto led de la calle digitalWrite(1uz_habitacion_1, LOW); // apagamos el primer led de la habitacion digitalWrite(Iuz_habitacion_2, LOW); // apagamos el segundo led de la habitacion digitalWrite(luz_sala_1, LOW); // apagamos eltercer led de la sala digitalWrite(1uz_sala_2, LOW); // apagamos el cuarto led de la sala digitalWrite(1uz_cocina_1, LOW); // apagamos el quinto led de la cocina digitalWrite(1uz_cocina_2, LOW); // apagamos el sexto led de la cocina digitalWrite(1uz_comedor_1, LOW); // apagamos el quinto led del comedor digitalWrite(1uz_comedor_2, LOW); // apagamos el sexto led del comedor led.setCursor(0,1); // ubicamos la pantalla en la primera fila Ied.print(" Luces —_");// escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila, Icd.print (" apagadas _"); }// escribimos el mensaje inferior } mensaje=""; // reseteamos la variable Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Domética gas Zumbador Activo er" Sensor de Ges Metano MO4 teary ALARMAGAS = ERE /* Arduino Control House ... Control digital on/off del pin 13 al pin 6 ... Dimer de los Pin 3 y 5 .... Control de Servo por PIN 4 ... Lectura analoga del Puerto AO Conexién del Médulo Bluetooth al Arduino usando Pin 0 y 1 " #include Servo servot; _// Crea el servot con las librerias de Servo.h Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje int estado=0; int retardo=100; int analogo=" void setup()t servol attach(4); pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11,QUTPUT); pinMode(10, OUTPUT); pinMode(9,OUTPUT); pinMode(8,OUTPUT); pinMode(7,OUTPUT); pinMode(6,OUTPUT); pinMode(5,OUTPUT); pinMode(4,OUTPUT); pinMode(3,OUTPUT); Serial.begin(9600); delay(1000); } void loop(){ if(Serial available()>0){ 11 Siel puerto serie esta habilitadp estado = Serial.read(); _// Lee lo que llega por el puerto Serie } if(estado=='a'){ JL on/off de los pin 13 al pin 6 digitaWrite(13, HIGH); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje if(estado== 'b’ }{ digitalWrite(13,LOW); digitalWrite(12,LOW); } iffestado== 'e’){ digitaWrite(11,HIGH); digitalWrite(10, HIGH); } iffestado=='h' digitalWrite(10,LOW); } iffestado== ¥' digitalWrite(9, HIGH); digitarite(9, LOW); } iffestado Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje digitalWrite(8, HIGH); } iffestado==" ){ digitalWrite(8, LOW); digitalWrite(7,HIGH); } iffestado digitarite(7 LOW); ni if(estado== 'o' ){ digitalWrite(6, HIGH), if(estado== 'p' { digitalWrite(6,LOW); } if(estado=='A'){ __// Movimiento del SERVO servot write(0); } if(estado: By servot write(90); } iffestado x servo1 write(180); 1 Dimer 1 conectado al pin 5 Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje analogWrite(5,0); } iffestado=="t){ analogWrite(5,3); } iffestado=="u, analogWrite(5,8); Z if(estado=="v'{ analogwrite(5,20); } if(estado==w){ analogWrite(5,30); } iffestado=="){ analogWrite(5,60); } if(estado=='y){ analogWrite(5,125); } if(estado=="2'){ analogWrite(5,255); z M1 Dimer 2 conectado al pin 3 Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje analogWrite(3,0); } iffestado=="2{ analogWrite(3. } iffestado=="3', analogWrite(3,8); Z iffestado=="4'){ analogWrite(3,20); } iffestado=="5 analogWrite(3,30); } iffestado=="6'{ analogWrite(3,60); } iffestado==7', analogWrite(3,125); } iffestado=="81 analogWrite(3,255); z if(estado=='q){ __// envia el valor leido del puerto analogo AO analogo=analogRead(A0); Serial print(analogo); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Serial printin("°C"); delay (retardo); estado=0; } delay(retardo); } PARTE 2 I Alarma de Gas Metano Conecta el Arduino con el Sensor de Gas MQ4 y cuando el nivel de concentracion de gas metano Supera un limite se activa una alarma sonora, el nivel de gas metano se puede visualizar por el Monitor Serial. Conexiones: ARDUINO MQ4 = Zumbador 5V Vec GND GND AO AO Pin 13 + GND GND " int valor_limite= 200; 1 Fiaja el valor limite en el que se activa la alarma Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje 1/ Fije el valor después de visualizar el nivel con el Monitor Serial void setup() { Serial.begin(9600); JI Activa el puerto Serial a 9600 Baudios pinMode(13,0UTPUT); 1 Configura el Pin 13 como salida para el Zumbador } void loop() { Serial printin(analogRead(A0)); _// Envia al Serial el valor leido de! Sensor MQ4 if(analogRead(A0) > valor_limite){ /! Si la medida de gas metano es mayor de valor limite digitaWrite(13, HIGH); _‘// Enciende el Zumbador conectado al Pin 13 } else{ 1/ Sies menor del valor limite apaga el Zumbador digitaWrite(13, LOW); } delay (300); 1/ Espera 300ms para realizar la proxima medida } Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Carro Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Giro y Reversa de Carros y Robot Cédigo carro control puente H prueba. Camino #1 1° Prueba del Puente H (L293D) Dibujo de las conexiones en www.elprofegarcia.com ARDUINO L293D(Puente H) 5 10 6 15 9 7 10 2 SV 1,9, 16 GND 4,5, 12, 13 Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje El motor 1 se conecta a los pines 3 y 6 del Puente H El motor 2 se conecta a los pines 11 y 14 del Puente H La fuente de alimentacion de los Motores se conecta a tierra y el positive al pin 8 del puennte H " int izqA = 5; int izqB = 6; int derA = 9; int derB = 10; int vel = 255; // Velocidad de los motores (0-255) void setup() { pinMode(derA, OUTPUT): pinMode(der8, OUTPUT); pinMode(izqA, OUTPUT); pinMode(izqB, OUTPUT); } void loop() { analogWrite(derB, 0); // Detiene los Motores analogWrite(izaB, 0); delay (500); analogWrite(derA, vel); // Frente 2 segundos analogWrite(izqA, vel): delay (2000); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje analogWrite(derA, vel): // Derecha 0,5 segundos analogWrite(izqA, 0); delay (500); analogWrite(derA, 0); // Izquierda 0,5 segundos analogWrite(izaA, vel); delay (500); analogWrite(derA, 0); // Detiene los Motores analogWrite(izqA, 0); delay (500); analogWrite(derB, vel); // Reversa 2 segundos analogWrite(izqB, vel); delay (2000); Cédigo carro control puente H prueba. Camino #2 /* Prueba del Puente H (L293D) ARDUINO L293D(Puente H) 5 10 6 15 9 7 10 2 SV 1,9, 16 GND 4,5, 12,13 Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje El motor 1 se conecta a los pines 3 y 6 del Puente H El motor 2 se conecta a los pines 11 y 14 del Puente H La fuente de alimentacion de los Motores se conecta a tierra y el positivo al pin 8 del puennte H. 1 int izqA = 5; int izqB = 6; int derA = 9; int derB = 10; int vel = 255; // Velocidad de los motores (0-255) void setup() { pinMode(derA, OUTPUT); pinMode(der®, OUTPUT); pinMode(izqA, OUTPUT); pinMode(izqB, OUTPUT); } void loop() { analogWrite(derB, 0); // Detiene los Motores analogWrite(izqB, 0); delay (500); analogWrite(derA, vel); // Frente 2 segundos analogWrite(izqA, vel); delay (2000); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje analogWrite(derA, vel); // Derecha 0,5 segundos analogWrite(izaA, 0); delay (500); analogWrite(derA, 0); // Izquierda 0,5 segundos analogWrite(izqA, vel); delay (500); analogWrite(derA, 0); // Detiene los Motores analogWrite(izqA, 0); delay (500); analogWrite(derB, vel); // Reversa 2 segundos analogWrite(izqB, vel); delay (2000); Cédigo carro control puente H, completo. I* Carro Inalambrico Bluetooth ARDUINO L293D(Puente H) 5 10 6 15 9 7 1 62 SV 1,9, 16 GND 4,5, 12,13 Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje El motor 1 se conecta a los pines 3 y 6 del Puente H El motor 2 se conecta a los pines 11 y 14 del Puente H La fuente de alimentacion de los Motores se conecta a tierra y el positivo al pin 8 del puennte H. Conexion del Modulo Bluetooth HC-06 y el Arduino ARDUINO Bluetooth HC-06 O(RX) TX 1(TX)— RX sv svc GND GND 'Cuidadol!! Las conexiones de TX y RX al modulo Bluetooth deben estar desconectadas en el momento que se realiza la carga del codigo (Sketch) al Arduino, Conexion Sensor Ultrasonido HC-SRO4 ARDUINO Ultrasonido HC-SRO4 2 Echo 3 Trig BV vec GND Gnd " int izqA = 5; int izqB = 6; int derA int derB = 10; int vel = 255; 11 Nelocidad de los motores (0-255) int estado =" JHinicia detenido Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje int pecho = 2; 1 define el pin 2 como (pecho) para el Ultrasonido int ptrig = 3; I! define el pin 3 como (ptrig) para el Ultrasonido int duracion, distancia; // para Calcular distacia void setup() { Serial.begin(9600); //inicia el puerto serial para comunicacion con el Bluetooth pinMode(derA, OUTPUT); pinMode(der8, OUTPUT); pinMode(izqA, OUTPUT); pinMode(izq8, OUTPUT); pinMode(pecho, INPUT); // define el pin 2 como entrada (pecho) pinMode(ptrig,OUTPUT); // define el pin 3 como salida (ptrig) pinMode(13, OUTPUT); } void loop() { if(Serial_available(}>0){ _// lee el bluetooth y almacena en estado estado = Serial.read(); iffestado 1/ Boton desplazar al Frente analogWrite(derB, 0); analogWrite(izaB, 0); analogWrite(derA, vel): analogWrite(izqA, vel); } Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje iffestado=='b'){ J Boton IZQ analogWrite(derB, 0); analogWrite(izaB, 0); analogWrite(derA, 0); analogWrite(izqA, vel); } if(estado: {1 Boton Parar analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, 0); } iffestado nt M Boton DER analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(izqA, 0); analogWrite(derA, vel); } if(estado: J Boton Reversa analogWrite(derA, 0); analogWrite(izqA, 0); analogWrite(derB, vel); analogWrite(izqB, vel); {I Boton ON, se mueve sensando distancia Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje digitalWrite(ptrig, HIGH); // genera el pulso de trigger por 10us delay(0.01); digitalWrite(ptrig, LOW); duracion = pulseln(pecho, HIGH); 1/ Lee el tiempo del Echo distancia = (duracion/2) / 29; calcula la distancia en centimetros delay(10); if (distancia <= 15 && distancia >=2){ _// si la distancia es menor de 15cm digitalWrite(13, HIGH); J Enciende LED analogWrite(derB, 0); 11 Parar los motores por 200 mili segundos analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, 0); delay (200); analogWrite(derB, vel); 11 Reversa durante 500 mili segundos analogWrite(izqB, vel); delay(500); analogWrite(derB, / Girar durante 1100 milisegundos analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izaA, vel); delay(1100); digitalWrite(13, LOW); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje } else{ 11 Sino hay obstaculos se desplaza al frente analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, vel analogWrite(izgA, vel); } iffestado=="g){ _‘// Boton OFF, detiene los motores no hace nada analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, 0); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje

También podría gustarte