Vous êtes sur la page 1sur 145
Ly (/ 7 {fe ) 5 — 2 PinMode Cl AWA hort 5 a ee eee Wrote) [katy Xe ae £ Pe dig italWrite(1-2;HIGEbyy PROPOSITO DEL MANUAL El presente manual disefiado tiene como propésito apoyar como guia hacia el participante, mostrando de manera teérico practico los contenidos pertinentes a la tematica Arduino desde cero con el IDE Arduino, se espera que el manual cumpla con su finalidad ajusténdose a las necesidades del participante acompariado 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 electrénica 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 diseftos. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programacién ProcessingWiring 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. EI 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 programacién y la plataforma de desarrollo. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Aplicaciones E 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 diagndstico a bordo que se halla en los automéviles modernos. » Humane Reader: dispositivo electrénico 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 transmision 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: » Adobe Director. * BlitzMax (con acceso restringido). 2c * 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. plicaciones interactivas y de tiempo real. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje + MaxMSP: Entomo grafico de programacién para aplicaciones musicales, de audio y multimedia ‘+ Miniblog: Entomo grafico de programacién, corre también en las computadoras OLPC. * Perl + Php. * Physical Etoys: Entorno grafico de programacién usado para proyectos de robotica educativa. + Processing Pure Data. * Python. + Ruby. * Scratch for Arduino (S4A). Entorno grafico de programacién, modificacién del entomo para nifios Scratch, del MIT), + Squeak: Implementacion libre de Smalltalk. SuperCollider: Sintesis de audio en tiempo real. VBScript. Visual Basic .NET. WWV: 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 permitiré 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 vottaje. 12. 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 estard 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 interacci6n, y le dirés 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 o breadboard estén compuestas por bloques de plastico perforados y numerosas laminas delgadas de una aleacién de cobre, estafio y fésforo. Intermamente, 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: LIM 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 § grupos, en medio hay una separacion. LED y Resistencia El diodo LED, Light-Emitting Diode, es un tipo especial de diodo semiconductor, que tiene la capacidad de emitir uz al disponerse en polarizacién directa. Se usan como indicadores en muchos dispositivos y cada vez con mucha mds frecuencia en iluminacion. 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. E! LED tiene una polaridad, un orden de conexion, y al conectarlo al revés se puede quemar. Centro Educativo 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 corriente que circula por ellas. Entonces podriamos decir basicamente el concepto general es “absorber” Centro Educativo Innovacién, libertad y devocién por ol 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 0 tres cifras; se muttiplica por el multiplicador y se obtiene el resultado en Ohmios (2) Usamos de diferentes tipos de resistencias, el trabajo de las resistencias. Esto es una montajia, la altura de la montaria lo consideramos como el voltaje, la corriente Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje son las piedras que caen y las resistencias son unos bloques para que las piezas no caigan todas. Cémo medir el valor de una resistencia a partir por medio de los cédigos de colores? eQué es una resistencia? Es un elemento electrénico que limita el paso de corriente en un circuito. Fisicamente estan hechos de carbono o metal. Estaén en radios, televisores, ampificadores, etc. La unidad de medici6n de la resistencia es el ohm (Q). Representacién grafica. Centro Educative Guaymax Innovacién, libertad y devocién por ol aprendizaje 4£Cémo se leen los colores? Se leen de izquierda a derecha, la primera y segunda cifta representan la primera cifra del valor de la resistencia comprendida entre 0 y 9. ic ee COE) Rte Tee) PEELE) Multiplicador Diferentes colores que puede tener una resistencia. Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje Circuitos Basicos Ejemplo: El primer color vale 1(uno) El segundo color vale O(cero) El tercer color vale 100(cien). Por lo que 10 * 100 = 1000 0 (Ohms) = 1 ka Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje Me eC ee — En a A a a se Tabla de equivalencias. 1000 9 = 1 KO 10,000 9 = 10 KON 100,000 = 100 KO 1,000,000 O = 1000 KX = 1 MO Continuando con el primer ejemplo: El color dorado tiene una tolerancia del 5%. Entonces es 1 kOhm con 5% de Ejemplo 2: tolerancia. Valor rojo = 2. Valor violeta = 7. Centro Educativo Guaym: Innovactén,iberad y devocion por el aprendizaje Valor café = 10. El ultimo color es el dorado que equivale a 5%, El resultado seria: ra Dai raf) El resultado es 270 O con 5% de tolerancia. Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Pulsador y Potenciémetro. u 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 activaré la funcién inversa de la que en ese momento este realizado. Centro Educativo Guaymax Innovacién, libertad y devocién por ol 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 analégico el cual y que me da valores de entrada entre 0 y 1023. ‘Simbologia. Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje Lavadoras 0 lémparas 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 ol aprendizaje Sefial Analégica o Digital. Entradas digitales: Lo que hicimos con nuestro botén, 0 esta prendido o esta apagado, no hay intermedi, en cédigo binario es un uno, 0 cero. Entradas analégicas: Si hay intermedio, cuando utilizamos sensores, por ejemplo un sensor de temperatura, sensor de inclinacién. Puede variar. Estructura basica de un programa Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje La estructura IF. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Estructura FOR. Centro Educative Guaymax Innovacién, 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 !o que tiene que hacer. Ensefiarle a realizar estas operaciones, debemos dar insirucciones especfficas, 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, gqué es programar? Darle_instrucciones especificas a la computadora para que las ejecute secuencialmente. Aligual que usamos un lenguaje para comunicamos entre unos a otros igual es para comunicarnos con una computadora, debemos aprender un lenguaje especifico. Una semejanza de comunicaci6n con las computadoras, la computadora tiene un montén de lenguajes, cada uno para determinadas tareas. Para construir aplicaciones web, construir videojuegos, aplicaciones para robtica. 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. Aplicacion de mensajeria en el celular, cuando pagamos a través de una tarjeta el colectivo o subterraneo. 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, utiizando 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. éPara 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 computador, 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 informacién en un monitor, reproducir musica en un pariante. 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 informacién en una pantalla LCD, o accionar un botén eléctrico. Hacer proyectos con domatica 0 robética. Qué es Arduino? Una plataforma de Hardware y Software libre. Preguntas. ‘L- &Qué significa que Arduino es una plataforma Open Source? 2Una plataforma Open Source es lo mismo que gratuita? 2.- éPor qué creen que es importante generar una cultura DIV (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. Ira la pagina oficial de arduino. 3.- Sector de descargas. 4. Reconocer los principales botones del entorno. 5.- Iremos conociendo todas las secciones del meni: 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.cc/ Como se muestra en la siguiente imagen. Poe} 2.- En el menu superior seleccionamos la opcién Download, hacemos clic izquierdo sobre el botén. 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 aplicacién. 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 donacién 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 direccién 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 @bis.._ Bx Ss Wea") D nt ow era Ser ein oetoeatin “tte ce pee Ih = ren stor sce a TS En el caso personal la aplicacion se instalé en la ubicacién C:\Program Files (x86), ademas se creé una carpeta para tener un orden 2.- Como se aprecia en la siguiente imagen dentro de la carpeta Arduino-1.6.9 se encuentra la aplicacion ejecutable arduino. Para ejecutarlo hacemos doble clic izquierdo o simplemente un clic izquierdo y presionamos la tecla Enter. ee Sse oo — Biter : ns ci i on See, ee 3.- También podemos acceder al programa desde el escritorio siempre y cuando lo hayamos especificado dentro de la aplicacion. Como se muestra en la siguiente imagen: Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje 4- Habra 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: 4. 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 informacion a arduino, )_~—_ 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. deme an ra Soa eee 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 sera 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 1 Aoptadors de portale » Adapadoes dered 39 beers 1 Coles impresion Comroasora ATAVATAP IDE ‘S Comrade de anacerainto 1 Conoidore de bu sete uve Conlon: de soni vide dpostvs deg (5 Depots dente ear HE). 1D epoctwordecftate 1 Dspestos de sstera 1 rds sins dente 1 taupe BS Monon 1A Mouzey ctor Sepaetior elses BB Procsedors Pues (oh) ) "Fine Uro coms) Be Sere a Unie de co ‘DB unsaeeseov0 oco-sore d) Hacemos clic derecho sobre el puerto Arduino Uno (COM3) y hacemos clic izquierdo sobre Actualizar software de controlador. Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje e) Nos abriré una ventana como la siguiente, por lo general cuando hacemos clic izquierdo sobre la primera opcién Buscar automaticamente software de controlador actualizado nos avisa que todo esta correctamente, por lo que es mejor seleccionar con clic izquierdo la opcion Buscar software de controlador en el equipo. &Cémo desea buscar el software de controlador? ‘> Buscar automsticamente software de controlador actualizado Windoms buscar en equipo y en Itemet evar de convlador mie recente por el depots, senor aoe hays eshte eta caters en Ie conigurdin deinclacn dl pect. Buscar software de controlador en el equipo Burcr einstalarel afar de contoladr deforma 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 Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje ‘Agregamos la ruta de la carpeta de instalaci6n de arduino, de ser 1 Elegie en una lista de controladores de dispositive en e equi el de los drivers. ‘Share decane ure ovina cago urd epee (Sse cat 4) Una vez realizado la busqueda ¢ instalacion, nos mostrara la siguiente ventana Windows actualiz6 correctamente el software de controlador. Windows nals I instalcdn del state de conrlador pra ee postive ‘Arduino Uno h) De tal manera, que nos quedaré lo siguiente, una instalacién sin errores. Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje ed 4 'P Puertos (COM y LPT) 1F Arduino Uno (COM3) Interfaz de Arduino. Be tzqulorda a derocha: Editor de “|. A.Nerifeancompllar, cédigo/ area de trabaio 2 Sibir, 3: Nusov6, 4, AbiiK. 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: Correr 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 por el aprendizaje Conociendo la placa Arduii Nuestras tarjetas de arduino traen un led color naranja ese led est conectado al pin 13 internamente en el arduino lo que no quiere decir que no vamos a usar algtin componente externo. 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 anal6gicos 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 analégicos 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 c6digo 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: id setup { A 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 espafiol 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. 41 Conectar el arduino a la PC. 2.- Utilizar un CASE, para tener aislacién estatica 3 Conectarlo al cable USB. Punta cuadrada — punta convencional. 4 El arduino esta vacio, no esté haciendo nada. 5. Cargar un programa. 6.- Comprobar que nuestra placa esté conectada. 7 Herra tas > Placa/Puerto, Revisar seccién de puertos Los sketches 0 programas de Arduino se dividen en 2. Setup: Inicializar todos los componentes que voy a usar en él resto de nuestro programa. Antes: Decirle a nuestro arduino, IDE, software, en que puerto serial esta conectado nuestro arduino, para eso es el Administrador de dispositivos, para ello iremos a Herramientas (Tools)/Puorto (Port) y seleccionamos el puerto que ocupa nuestro arduino. Como se muestra a continuacién: 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 esté conectado que esté listo para recibir las instrucciones que le mandemos. Ejercicio resuelt: 7 Bjercicio #4 *Encender led naranja que esté 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. //Comando pinMode: decirle al arduino si al pin que vamos a conectar es una entrada o una salida. “Requiere 2 parémetros. El numero del pin, que va ser: entrada o salida. pinMode (13, OUTPUT); } void loop() { 1 put your main code here, to run repeatedly: cédigo se repite indefinidamente. “/Comando. Nos va a servir cuando queramos interactuar o escribir algo en los pines digitales. MLleva 2 argumentos (pin donde vamos a escribir, mandar 0 6 1 (HIGHT, LOW). italWrite(13, HIGH); /Espérate mil milisegundos (1 segundo). delay(1000); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Apagar (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 modificacion 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 vuelva arrancar. Conceptos basicos de electronica basica. La materia esta compuesta de elementos quimicos que, en esencia, son todos similares en su mintiscula estructura: un nuicleo en donde se acumulan particulas denominadas protones y neutrones, en torno 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, gcuando 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 metélico 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 Io 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 o 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 fenémeno que puede aprovecharse en el electroiman, 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 Innovacién, 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 parametro es el Ohmio (0). Puedes encontrar resistencias en los calefactores eléctricos, tarjetas electronicas, estufas son muy Litiles para limitar el paso de la corriente. Ley de Ohm Laley dice que la corriente (|) que circula por un conductor eléctrico es directamente proporcional al voltaje (V) e inversamente proporcional a la resistencia (R). La pirdmide 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 mas tapa | (Corriente), | va a ser igual a V dividido R. Sistemas electronicos Un sistema electrénico es un conjunto de circuitos que interacttan entre si para obtener un resultado. Una forma de entender los sistemas electrénicos consiste en dividirlos en entradas, salidas y procesamiento de sefial. Las entradas o inputs Son sensores (o transductores) electr6nicos 0 mecénicos 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 0 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 utiles 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. Ojo!! La pata corta del ied es siempre el polo negativo (cétodo) y la pata larga el polo positive (dnodo).. Primero conectar todos los componentes a la protoboard y a lo ultimo conectar la placa Arduino al equipo portati. Desafio La sintaxis ante todo Los puntos y comas son uno de los elementos mas importantes para escribir cédigo para Arduino y uno de los que més facilmente nos olvidamos. Se usan para separar las diferentes lineas de codigo en su programa e indica a Arduino donde termina su comando. Completa el cédigo con los ; que falten. Cambiando de pin Modificar el cdigo 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 CEN Pearce r cE 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: 41.- Conectar la patita larga del led (anodo) al pin digital nimero 13. 2.- Y la otra patita corta (cétodo) a Tierra 0 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 botén 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 més corta va a tierra y la mas larga a voltaje. 3.- Protoboard. Las dos primeras lineas estén conectadas horizontalmente (de arriba hacia debajo de la imagen). Negativo o a tierra y el positivo o a5 volts, para alimentar toda una linea. Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje 4.- Tenemos dos partes donde van a ir conectados nuestros componentes. Cual estan conectadas verticalmente. Distinguir resistencias. Para el botén: 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. Procedimient Para el L.E.D. 1.- Las patitas del led en cada extremo de los bloques. 2.- Del lado de la pata corta (cdtodo) sobre la misma linea vertical poner la resistencia dejando pasar un espacio recibird tierra. Para el boton. 1. Poner el botén atrés del led 0 delante segun sea el caso, dos patas para un blogue y el otro igual. 2.- Una resistencia de 10K conectarla al botén del lado de una patita sobre la misma linea, esa resistencia recibira tierra. Conectarlos al arduino. 1.- Conectar la tierra y el voltaje (5) a la protoboard. 2.- El voltaje pasaré a través del pin digital #4 de la pata mas larga del led. 3.- La alimentacién a tierra, pasara por la resistencia de una de las patas del botén. Resumen: Conectar la pata més corta del led, conectarlo a través de la resistencia a la linea azul, y del botén una de las patas esta 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 bot6n, vamos a conectarlo al pin digital #2 del arduino. De la otra patita conectarlo a 5 volts. 2.- La alimentacion 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 botén 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 Educativo Guaymax Innovacién, libertad y devocién por ol 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 estén separadas y cuando no las presionamos *se juntan, cerrando el circuito dando un 0 0 un uno. 1 int estadoBoton = 0; 1IConstante 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. 7 pinMode(led,OUTPUT); pinMode(boton,INPUT); } void loop() { r * queremos leer un pin digital, * argumento de digitalRead(Es que pin voy a leer). ¥ estadoBoton = digitalRead(boton); ¢ * Si nuestro bot6n, si esta presionado prende el led, sino esta presionado apaga elled v J/Si nuestro bot6n la lectura de nuestro botén es igual a Svolts, uno 6 quiere decir que esta en el estado HIGH. W 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. Jelsef JI 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. JPARTE 2 LED Y PUSH BUTTON. r * Presionar el botén 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. 7 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 o false, 1 0 0, HIGH o LOW, " boolean estadoAnteriorBoton = LO\ (Guardar el estado anterior del boton, 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); liSaber si el botén esta siendo presionado en este momento, JISi antes estaba LOW y ahora si esta presionado, vamos a encender nuestro led, HIGH && estadoAnteriorBoton == LOW) if(estadoBoton Minvertir el estado de la funcion booleana. encenderLed = lencenderLed; estadoAnteriorBoton = HIGH; //Se sale del if al no cumplir la condici6n. Jelse{ estadoAnteriorBoton = estadoBoton; //Igualar el estado anterior del boton a cualquier estado del bot6n en este momento. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje } digitalWrite(led, encenderLed); //que el led se encienda o 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 a 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) o rosado (p)) usando sus siglas en ingles*/ I Materiales: 1 Arduino UNO. 1 LED RGB de 4 patas catodo comin 3 resistencias de 220[ohm| Cables de conexion Autor: Jesus. Fecha: 18 Julio 2016*/ t ~-Declaracion de variables para cada color R G B-—*/ int rled = 14; // Pin PWN 11 para led rojo i Pin PWM 10 para led azul ; Pin PWM 9 para led verde int bled = 10; int gled = f int i; // Variable para ciclos repetitivos eclaracion de variables auxiliares- int repeat = §; // Variables para cantidad limite de repeticiones void setup() { I~ Se inicializan pines PWM como salida*/ pinMode(rled, 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 RSET Herramientas Ayuda Verificar / Compilar RR Mostrar la Carpeta de Sketch 28K Ee Ca ‘Agregar Archivo. aon Esplora Ethernet Firmata com LiquidCrystal Robot Control Robot Motor so Servo SoftwareSeral SP Stepper TFT wi Wice utr 3. Se mostrara 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 “Select” o “Seleccionar”. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje > eanpies , worden prose i= Bi mcroc..13-06-15 SB weueNion sm By mruasxiogm.t F wwsasntog aml 5 MPLABXLog ml 10 5 MPLABKLog xml 11 1B wevasxiogxmt12 FB wrsasntog am. 12.0 B wrtasxtog.ami13 Bh etasxiog emits BS MPLABKLogxmi.15 Bh mrvasxtog emits Bvevmogemii7 le Format: (ZIP files orflders = Cancet )) ecco) 4~ Nuevamente hacemos clic en Sketch > Import Library y deberiamos ver la libreria nueva en la parte baja del mend. Centro Educativo Innovacién, libertad y devocién por ol aprendizaje (Arduino Archivo Editar [EERE Herramientas Ayuda Verificar / Compilar mR Mostrar la Carpeta de Sketch 38K Robot Motor so Servo SoftwareSerial sr Stepper Tr wri Wire UrFT Después de completar estos pasos la libreria sera descomprimida en nuestro directorio de sketches y podremos utiizarla en todos nuestros programas. Sin ‘embargo, los ejemplos contenidos con la libreria no seran visibles dentro de! ment File > Examples hasta que reiniciemos el entorno de desarrollo. Centro Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje €__Ardvino EXE Cater Sketch Herramientas _Ayod ‘Nuevo #N sketch fob150 | Arduino LOS ore x0 Stxcibook > NE 01k ere cy é Guardar XS OsAmlop . Gourd como ONS | Of communiction > Care Mu Se Cone! : Carpe wsando Programader OU | O6Senson . Coouracin de ign oun | 97D , bei x of . {osstaren . MELA Newing sensors > NewPingtventTimer Timerbxample quidcrystal Robot Control . Ruta: Programa/ incluir Libreria/ Afiadir libreria ZIP. Instalacién manual de una libreria. Si el método anterior para instalar una libreria de arduino no funciona 0 queremos instalar manualmente la 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\Arduino\libraries. * En MAC copiamos la carpeta de la libreria a la siguiente ruta: Documents/Arduinollibraries. A\final deberiamos tener en nuestro directorio los siguientes archivos (Windows): T Wy Documents \Arduino\ libraries WenPing\NenPing. cpp 2 My Documents \Arduino\ltbraries\NenPing\NewPing.h 3 _My Documents\Arduino\l tbraries\NenPing\exanples En MAC quedaria algo asi: 1 Docunents/Arduino/librartes/NewPing/NewPing. cop 2 Docunants/Arduino/libraries/NemPing/NewPing h 3 Docunents/Arduino/1tbrartes/NeaPing/exanples Ejercicio #9 Uso del sensor HC-SR04 Usaremos la siguiente libreria: httos://q00.al/H4a8VK Objetivo: Conocer el funcionamiento del sensor HC-SR04. Y usarlo para detectar qué tan lejos 0 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 - SRO4. 1 Led comin de cualquier color. 1 resistencia de 220 0 330 ohms. 1 zumbador 0 speaker para 5 volts. Cables. Descripcién 1, Conectamos en sensor HC- SR04 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 Vcc 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 codigo. A continuacion se muestra el diagrama de conexién de la presente practica. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje (Practica - Uso del Sensor ultrasonico*/ 11Se importa la libreria NewPing #tinclude const int trig = 4; //Pin trig en pin 4 const int echo = 3; _//Pin Echo en pin 3 const int zumbador = 5; //zumbador en pin 5 const intled=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 1 Se crea un objeto con la libreria NewPing llamado sonar NewPing sonar(trig, echo, 200); // Each sensor's 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(t en la variable distancia guardamos la distancia en centimetros que detecta el sonar respecto al objetivo distancia = sonar.ping_cm(); if (distancia < 100){ //restringir 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 digitalWrito(led, LOW); //apagamos e! LED delay(pausa); // esperamos el tiempo de pausa } Centro Educative Guaymax Innovacién, libertad y devocién por el 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 programacion, aprendimos a como usar las librerias, en este caso la New Ping que soporta el sensor HC- SR04, Ejercicio #10 Controlando leds con potenciémetro. Objetivo: Controlar leds con la actividad recibida por un potenciémetro, Materiales ‘* Protoboard. * Arduino. * Sleds. * 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. int i= 0; int pinPotenciometro =A0; 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); if (valorPotenciometro >= 200 && valorPotenciometro < 400) digitalWrite(3, HIGH); if (valorPotenciometro >= 400 && valorPotenciometro < 600) digitalWrite(4, HIGH); if (valorPotenciometro >= 600 && valorPotenciometro < 800) digitalWrite(5, HIGH); if (valorPotenciometro >= 800) digitalWrite(6, HIGH); if (valorPotenciometro == 1023) encenderLeds(); } void apagarLeds() { for (i digitalWrite(i, LOW); 5 <7; i++) Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje encenderLeds(){ for (i = 2; i< 7; i++) digitalWrite(i, HIGH); } Explicacién del cédigo. 1. El potenciémetro entrega un limite minimo de 0 y un maximo de 1023. 2. Se inicializa i, pinPotenciometro, valorPotenciometro en 0. 3. 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). 4, Serial.begin (velocidad) inicializa o abre el puerto serie asignandole una velocidad de transmision de datos (bits por segundo). Dicha funcién debe ser llamada desde dentro de la estructura o seccién setup(). 5. Luego en la linea valorPotenciometro = analogRead(pinPotenciometro); estamos diciendo que los valores enviados por el potenciémetro se almacenaran en la variable valorPotenciometro. 6. Serial printin(valorPotenciometro, DEC), es para que si queremos ver los valores que esté enviando el potenciémetro en pantalla, los envie en formato decimal (para ver la consola 0 monitor, vamos a Tools > Serial Monitor). 7. Cada uno de los if que siguen en el cédigo, especifican una accion 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 realizacién del proyecto: 1.- Para programar tu Arduino, software de Arduino, descarga en: http://goo.glirr0OPP- 2- Para documentar tu proyecto, te recomendamos el uso de Fritzing: http:/a00. ql M6MEP 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 electrénica 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 precaucién durante la realizacién de tu proyecto. Paso 1. El sensor LDR tiene la siguiente forma y representaci6n eléctrica. we — 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 funcién 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 “NI | 10 Resistance (k®) 104 oy oy 10 10 160 1000 10,000 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 analogicos. Algunas aplicaciones del sensor LDR son: 1.- Uso en fotocopiadoras: Densidad del toner. 2.- Aplicaciones de control luz en la calle. 3.- Balanzas electronicas. 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 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 medicion 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. 7 MLeeremos del pin 0. int LDR_pin = 0; Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje INariable para leer los datos del LDR. int LDR_val = 0; void setup() { INisualizaci6n de los valores por la consola, hay que clickear len el boton Serial Monitor Serial.begin(9600); void loop() { En el loop iremos leyendo continuaamente de! sensor LDR. LDR_val = analogRead(LDR_pin); Iimpresién de los valores leidos por el sensor por pantalla. Serial.print("LOR ="); Serial.printin(LDR_val); 1IParo 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 Educativo Guaymax Innovacién, libertad y devocién por ol aprendizaje Ejercicio #13: LDR. http:/www.arduino.cc/playground/Leaming/PhotoResistor hitp:/farduino.ccles/Reference/Map Detalles: Este es un ejercicio muy sencillo en el que veremos como obtener lecturas analdgicas de un sensor y daries salida por el monitor del puerto serie para verlas Herramientas: ‘* 1 placa Arduino. ‘+ 1 resistencia sensible a la luz 0 fotoresistencia, 2 resistencias. * 1 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 1 int lightPin = 0; // Pin para la fotoresistencia int ledPin=11; _// Pin al que se conecta el LED void setup() { Serial.begin(9600); _// Inicia la comunicaci6n serie pinMode(ledPin, OUTPUT); // Establece el pin del LED J como salida void loop() { 1/ Primero leemos el valor que nos da la fotoresistecia 1 lo mostramos por el puerto serie Serial.printin(analogRead(lightPin)); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje 1/ Ahora cogemos la lectura de la fotoresistencia, la I dividimos por 4 y la mandamos como salida analégica Mal LED analogWrite(ledPin, analogRead(lightPin)/4); 1 Hacemos una pequefia pausa para que el baile de // 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 niimero (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, desdeAlto, ser4 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 tttiles, asi que si le pasamos un valor fuera del rango inicial calcularé una salida dentro del 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 algin rango pueden ser mayores o menores que el limite “superior” por lo que map() puede utilizarse para revertir una serie de ntimeros, 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 I/valor minimo que da la foto-resistencia int max = livalor maximo que da la foto-resistencia void setup() { Serial.begin(9600); //Inicializa la comunicacién serie pinMode( ledPin, OUTPUT ); void loop() { valor = analogRead(lightPin); valor ap(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); //pequefo retardo para darle I tiempo al LED a responder. Ejercicio #14 Encendido y apagado de led en funcién de la luz. 1.- Ahora lo que haremos seré 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 habitacién 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. Arduino “UNC 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 a. BraRES 2ndu bojeuy am OuInpIy so amv a4 tuo 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 usario en aplicaciones que requieran de un tiempo de respuesta corto. Cédigo. r “Lectura de los valores medidos por un sensor LDR. 4 /Leeremos del pin 0. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje int LDR_pin = 0; INariable para leer los datos del LDR. int LDR_val = 0; 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() { A * En el loop iremos leyendo continuamente del sensor LDR. ” LDR_val = if(LDR_val >= 20){ //si hay luz, apago el led. nalogRead(LDR_pin); //lee el valor de entrada de LDR. digitalWrite(LED_pin,LOW); //apagamos el led. } else if(LDR_val < 20){//si no hay luz enciendo el led. 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 tensi6n 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. * Conversion Analégico-Digital (ADC). Es el proceso mediante el cual se convierte una magnitud fisica como un voltaje, corriente, temperatura, etc en un ntmero 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 procesarta numéricamente. Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Materiales. 1) 1 Arduino UNO. 2) 1 fotoresistor (LDR). 3) 1 resistencia de 10 kohm 1/4W. 4) 3 resistencias de 220 0 330 ohm 1/4 W. 5) 3 leds. 6) Cables para protoboard. DiagramalPrototipo. frit Debemos armar el circuito como se muestra en el siguiente diagrama pictorico. Recordar que los leds tienen polaridad y hay que respetaria. 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 de! led y el arduino (del lado positivo de! 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 del voltaje en el pin del LDR y se accionan los leds segin 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 = int pinLed2 = 3; int pinLed3 = 4; 1/ Pin analogico de entrada para el LDR int pinLDR = 0; 1! Nariable donde se almacena el valor del LOR int valorLDR = 0; void setup() { 11 Configuramos como salidas los pines donde se conectan los led pinMode(pinLed1, OUTPUT); pinMode(pinLed2, OUTPUT); pinMode(pinLed3, OUTPUT); II Configurar el puerto serial Serial.begin(9600); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje void loop() { 1 Apagar todos los leds siempre que se inicia el ciclo digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW); 1] Guardamos el valor leido del ADC en una variable 1/ El valor leido por el ADC (voltaje) aumenta de manera directamente proporcional Icon respecto a la luz percibida por el LOR valorLDR= analogRead(pinLDR); 1 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 Innovacién, libertad y devocién por el 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 conversion anal6gico a digital. Ejercicio #16. Trabajando con fotoresistencia (Continuidad). ‘Tomando como referencia el ejercicio 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 0 a la oscuridad), por un lado conectada estd a tierra, y por el otro lado, alimentando con 5V el sensor. En la union entre el sensor y la resistencia de 10K, se saca una salida que va hacia la entrada analégica del Arduino. Esto nos dara 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 = 3; int ledPin3 = 4; void setup(){ pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje pinMode(ledPin3, OUTPUT); void loop(t int lectura = analogRead(lightPi if(lectura < 300) t digitalWrite(ledPint, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); } else ifflectura >= 300 && lectura < 500) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); } else ifflectura >= 500 && lectura < 700) { digitalWrite(ledPin1, HIGH); igitalWrito(ledPin2, HIGH); digitalWrite(ledPin3, LOW); } else iflectura >= 700) { digitalWrite(ledPin1, HIGH); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, HIGH); } delay(100); Ejercicio #17 Luces estroboscépicas con variacién de tiempo. Material Y¥ Arduino UNO. Y resistencias 330 ohms. ¥ 2ieds. ¥ 1 pulsador. Realizar el circuito como se muestra en la siguiente imagen. 330 ohm: Rrauino Lt LED Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Codigo. ILuces estroboscépicas con variacién de tiempo Ilsalidas 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, OUTPU’ pinMode(ledrojo, OUTPU’ pinMode(entrada, INPUT); } void loop() { digitalWrite(ledazul, HIGH); —_/prende led azul dolay(tiempo); / espera un tiempo de 200 0 30ms digitalWrite(ledazul, LOW); —_//apaga el led azul dolay(tiempo); J/ espera un tiempo de 200 0 30ms digitalWrite(ledazul, HIGH); _//prende led azul delay(tiempo); espera un tiempo de 200 0 30ms digitalWrite(ledazul, LOW); —_//apaga el led azul delay(150); JT espera un tiempo de 150ms Centro Educative Guaymax Innovacién, libertad y devocién por el 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 o 30 mili segundos digitalWrite(ledrojo, LOW); —_/apaga el led rojo. delay(150); JT espera un tiempo de 150 mili segundos pulsador = digitalRead(entrada); /lee el valor del pin 2 si esta en alto 0 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 ¥ Arduino UNO. 1 pantalla LCD. 1 potenciémetro. v v Y ‘resistencia 10 kohm. ¥ Cables machos a macho. Realizar el circuito como se muestra en la siguiente imagen. Puente 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 +5 7 back light current 3¥ eel reer Pin Assignment ~ Vss (GIID,supply) Bune ~ R/W (Read/Write) - E (enable) 71.4 ~- (Data bit O~7) - Back light (+) Back light (-) you aa Cédigo pantalla LCD r LiquidCrystal Library - scrollDisplayLeft() and scroliDisplayRight() 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 5 * LCD DS pin to 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. htt j00.gl/rj T]MK " // include the library code: ffinelude // initialize the library with the numbers of the interface pins Liquidcrystal led(12, 1, 5, 4, 3,2); void setupl){ J] set up the LCD's number of columns and rows: Iecd.begin(16, 2}; // Print a message to the LCD. led.print("hello, world!"); delay(1000); } void loop() { Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje // scroll 13 positions (string length) to the left 1/ to move it offscreen left: {or {int positionCounter = 0; positionCounter < 13; positionCounter++) { // scroll one position left: Ied.scrolDisplayLeft(); Mwait a bit: delay(150); ) // scroll 29 positions (string length + display length) to the right 1/ to move it offscreen right: for {int positionCounter = 0; positionCounter < 29; positionCounter++) { 1/ scroll one position right: Ied.scrolDisplayRight(); Af wait a bit: delay(150); } 1/ scroll 16 positions (display length + string length) to the left //t0 move it back to center: for (int positionCounter positionCounter < 16; positionCounter++) { // scroll one position left: led.scrollDisplayLeft(); Af wait a bit delay(150); d // 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 Y Arduino UNO. ¥ Servo motor. ¥ Cables macho macho. Realizar ol circuito como se muestra en la siguiente imagen. Soneeee wrens Pobeeee fees 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 // ncluye la libreria Servo Servo servol; // Crea el objeto servol con las caracteristicas de Servo void setup() t servol.attach(5,600,1500); // Asocia el servol al pin 3, define el min y max del ancho del pulso ) // es0 depende del fabricante del servo void loop() { servoL.write(0); // Gira el servo a0 grados delay(700);, // Espera 700 mili segundos a que el servo llegue a la posicién servoL.write(90); // 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. ¥ Servomotor. Y 2pulsadores. Y 2ieds. Y 2resistencias, Y Cables macho macho. Realizar el circuito como se muestra en la siguiente imagen. seeee wee Senne eeee Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Cédigo. 1 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/ Incluye la libreria Servo Servo servot; 1! Crea el objeto servot con las caracteristicas de Servo int pulsador_dor = 4; II 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(5,600,1500); // Asocia el servot al pin 3, define el min y max del ancho del pulso Meso depende del fabricante del servo pinMode(2, INPUT); 1 Configuramos el pin 2 como entrada pinMode(3, INPUT); 1 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_der == LOW) { 11 si se oprimié el pulsador de la derecha servot write(180); 11 Gira el servo a 1800 grados delay(15); 11 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_i LOW){ _//si se oprimio el pulsador de la izquierda servot.write(0); 1 Gira el servo a 0 grados delay(15); 11 Espera 15 mili segundos a que el servo llegue a la posicion } if(pulsador_izq =: los dos pulsadores HIGH && pulsador_det = HIGH{ // Si se dejan de oprimir servot.write(90); Gira el servo a 90 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 Casa inteligente ‘A continuacién les mostraremos como hacer las conexiones en la tarjeta Arduino Mega paso a paso: (todas las conexiones estén basadas en el sketch que programamos para el arduino). Conectando los LEDs amarillos (habitacion, sala, comedor y cocina): 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 positivos de los LEDs. La habitacién tiene dos LEDs, sus polos positivos los conectamos a los puertos 46 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 domotica, 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: 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 5V. Pin 3 a la salida del potenciémetro (conexi6n 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 dispositivo Android Es el momento de instalar los servomotores los cuales abrirdn y cerrar la ventana y la puerta de nuestra casa domotica. 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 9V. (los relays los podemos usar también cuando queremos interactuar con el arduino y aparatos que trabajen con 110 0 220 voltios). En el siguiente plano les mostramos como conectar los motores al relay de 2 canales yestos a la tarjeta Arduino Mega 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 negativos 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. E1 polo positivo que proviene de la bateria lo conectamos a los puertos comunes de! 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 estaran 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. EICH1 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 a la 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 domotica 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 el Modulo Bluetooth VCC Io 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 del 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 dispositive 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 1 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 luz_calle_3 = 26; const int luz_calle_4 = 28; const int luz_calle_5 = 30; const int luz_calle_6 = 32; const int luz_sala_1 = 34; const int luz_sala_2 = 36: const int luz_comedor_1 = 38; const int luz_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: 1 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 Ied.begin(16, 2); //iniciamos la pantalla liquida Icd.print (" Casa Domotica *); led.setCursor(0,1); Icd.print (" Bienvendido "); 1 configuramos los puertos de los LEDs como salida pinMode(luz_calle_1, OUTPUT); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje pinMode(luz_calle_2, OUTPUT); pinMode(luz_calle_3, OUTPUT); pinMode(luz_calle_4, OUTPUT); pinMode(luz_calle_5, OUTPUT); pinMode(luz_calle_6, OUTPUT); pinMode(luz_sala_1, OUTPUT); pinMode(luz_sala_2, OUTPUT); pinMode(luz_comedor_1, OUTPUT); pinMode(luz_comedor_2, OUTPUT); pinMode(luz_cocina_1, OUTPUT): pinMode(luz_cocina_2, OUTPUT); pinMode(luz_habitacion_1, OUTPUT); pinMode(luz_habitacion_2, OUTPUT); 11 confuguramos los pines de los motores como salida pinMode(aire_acondicionado, OUTPUT); pinMode(calentador, OUTPUT); J 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(1 char c dispositivo android mensaje += c; // sumamos el contenido del comando a la variable mensaje } if (mensaje length()>0) { // verifica que la variable mensaje no esta vacia J hacemos un delay para dar estabilidad al programa serial read(); !/ ¢ almacena el comando que proviene del /iniciamos las funciones que realiza la casa segun el comando que enviamos desde el dispositivo 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 led.setCursor(0,1); // ubicamos la pantalla en la primera fila Icd.print ("Puerta pirncipal "); // escribimos el mensaje superior Icd.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 ed.setCursor(0,1); // ubicamos la pantalla en la primera fila Icd.print ("Puerta pirncipal "); // escribimos el mensaje superior Icd.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print(" Cerrada_—"); }/ escribimos el mensaje inferior else if (mensaje=="*abrir ventana’) { ventana write(30); // ponemos el servomotor de la ventana en posicion de abrir Icd.setCursor(0,1); !/ ubicamos la pantalla en la primera fila \cd.print (" Ventana master "); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.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 Icd.setCursor(0,1); !/ ubicamos la pantalla en la primera fila \cd.print (" Ventana master "); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila \cd.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 Icd.setCursor(0,1); !/ ubicamos la pantalla en la primera fila Icd.print (" Puertas "); // escribimos el mensaje superior Icd.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.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 Ied.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 Icd.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 Icd.setCursor(0,1); // ubicamos la pantalla en la primera fila \cd.print ("Luces Habitacion "); // escribimos el mensaje superior Icd.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar principal") { digitaWrite(1uz_habitacion_1, LOW); // apagamos el primer led de la habitacion digitaWrite(1uz_habitacion_2, LOW); // apagamos el segundo led de la habitacion Ied.setCursor(0,1); // ubicamos la pantalla en la primera fila \cd.print ("Luces Habitacion "); // escribimos el mensaje superior Icd.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print (" apagadas "); } // escribimos el mensaje inferior else if (mensaje=="*prender sala") { digitalWrite(1uz_sala_1, HIGH); // prendemos el primer led de la sala digitaWrite(1uz_sala_2, HIGH); // prendemos el segundo led de la sala Icd.setCursor(0,1); !/ ubicamos la pantalla en la primera fila \cd.print (" Luces Sala"); // escribimos el mensaje superior Icd.setCursor(0,1); // ubicamos la pantalla en la segunda fila \cd.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar sala") { digitaWrite(1uz_sala_1, LOW); // apagamos el primer led de la sala digitalWrite(luz_sala_2, LOW); // apagamos el segundo led de lasala Ied.setCursor(0,1); !/ ubicamos la pantalla en la primera fila Icd.print (" Luces Sala"); // escribimos el mensaje superior Icd.setCursor(0,1); // ubicamos la pantalla en la segunda fila \cd.print (" apagadas "); }// escribimos el mensaje inferior else if (mensaje=="*prender cocina’) { digitalWrite(luz_cocina_1, HIGH): // prendemos el primer led de la cocina digitalWrite(luz_cocina_2, HIGH); // prendemos el segundo led de la cocina Iod.setCursor(0,1); // ubicamos la pantalla en la primera fila Iod.print (" Luces Cocina"); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje led.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar cocina’) { digitaWrite(1uz_cocina_1, LOWY); // apagamos el primer led de la cocina digitalWrite(luz_cocina_2, LOW); // apagamos el segundo led de la cocina Icd.setCursor(0,1); // ubicamos la pantalla en la primera fila led.print (" Luces Cocina "); // escribimos el mensaje superior Icd.setCursor(0, 1); // ubicamos la pantalla en la segunda fila Icd.print(" apagadas *); }// escribimos el mensaje inferior else if (mensaje==""prender comedor’) { digitalWrite(1uz_comedor_1, HIGH); // prendemos el primer led del comedor digitalWrite(1uz_comedor_2, HIGH); // prendemos el segundo led del comedor Icd.setCursor(0,1); !/ ubicamos la pantalla en la primera fila \cd.print (" Luces Comedor "); // escribimos el mensaje superior Icd.setCursor(0,1); !/ ubicamos la pantalla en la segunda fila lcd.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar comedor") { digitaWrite(luz_comedor_1, LOW); // apagamos el primer led del comedor digitalWrite(1uz_comedor_2, LOW); // apagamos el segundo led de! comedor Ied.setCursor(0,1); !/ ubicamos la pantalla en la primera fila Icd.print (" Luces Comedor "); // escribimos el mensaje superior \ed.setCursor(0,1); // ubicamos la pantalla en la segunda fila led.print(" apagadas _"); }// escribimos el mensaje inferior else if (mensaje=="*prender exterior”) { digitalWrite(1uz_calle_1, HIGH); // prendemos el primer led de la calle digitaWrite(1uz_calle_2, HIGH); // prendemos el segundo led de la calle digitalWrite(luz_calle_3, HIGH); // prendemos eltercer led de la calle digitaWrite(1uz_calle_4, HIGH); // prendemos el cuarto led de la calle digitaWrite(1uz_calle_5, HIGH); // prendemos el quinto led de la calle digitalWrite(Iuz_calle_6, HIGH); // prendemos el sexto led de la calle Icd.setCursor(0,1); !/ ubicamos la pantalla en la primera fila Icd.print (" Luces exterior "); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print (" encendidas "); }// escribimos el mensaje inferior else if (mensaje=="*apagar exterior") { digitalWrite(luz_calle_1, LOW); // apagamos el primer led de la calle digitaWrite(1uz_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 digitaWrite(1uz_calle_4, LOW); // apagamos el cuarto led de la calle digitaWrite(1uz_calle_5, LOW): !/ apagamos el quinto led de Ia calle digitaWrite(1uz_calle_6, LOW); // apagamos el sexto led de la calle Icd.setCursor(0, 1); // ubicamos la pantalla en la primera fila Icd.print (" Luces exterior "); // escribimos el mensaje superior {ed setCursor(0,1); // ubicamos la pantalla en la segunda fila Ied.print(" apagadas "); }/ escribimos el mensaje inferior else if (mensaje=="prender aire") { digitalWrite(aire_acondicionado, HIGH); // prendemos el motor el aire acondicionado Icd.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") { digitaWrite(aire_acondicionado, LOW); // apagamos el motor el aire acondicionado Icd.setCursor(0,1); !/ ubicamos la pantalla en la primera fila \cd.print ("Aircon"); // escribimos el mensaje superior Icd.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print(" apagado —*); }// escribimos el mensaje inferior else if (mensaje=="*prender calentador") { digitalWrite(calentador, HIGH); // prendemos el motor del calentador Ied.setCursor(0,1); !/ ubicamos la pantalla en la primera fila \cd.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 ied setCursor(0,1); !/ ubicamos la pantalla en la primera fila Ied.print (" Calefaccion "); // escribimos el mensaje superior Icd.setCursor(0,1); !/ ubicamos la pantalla en la segunda fila \cd.print (" apagada _"); }/ escribimos el mensaje inferior else if (mensaje=="*prender luces") { digitaWrite(1uz_calle_1, HIGH); // prendemos el primer led de la calle digitaWrite(1uz_calle_2, HIGH); / prendemos el segundo led de la calle digitalWrite(Iuz_calle_3, HIGH): // prendemos eltercer led de la calle digitalWrite(1uz_calle_4, HIGH); // prendemos el cuarto led de la calle digitalWrite(1uz_calle_5, HIGH); // prendemos el quinto led de la calle digitalWrite(luz_calle_6, HIGH): // prendemos el sexto led de la calle digitaWrite(Iuz_habitacion_1, HIGH); // prendemos el primer led de la habitacion Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje digitaWrite(1uz_habitacion_2, HIGH); // prendemos el segundo led de la habitacion digitaWrite(1uz_sala_1, HIGH); // prendemos eltercer led de la sala digitaWrite(1uz_sala_2, HIGH); // prendemos el cuarto led de la sala digitalWrite(1uz_cocina_1, HIGH); // prendemos el quinto led de la cocina digitalWrite(Iuz_cocina_2, HIGH); // prendemos el sexto led de la cocina digitalWrite(luz_comedor_1, HIGH); // prendemos el quinto led del comedor digitaWrite(luz_comedor_2, HIGH); // prendemos el sexto led del comedor Icd.setCursor(0,1); !/ ubicamos la pantalla en la primera fila Icd.print(" Luces —"); // escribimos el mensaje superior Ied.setCursor(0,1); // ubicamos la pantalla en la segunda fila Icd.print(" encendidas "); } // escribimos el mensaje inferior else if (mensaje=="*apagar luces") { digitalWrite(luz_calle_1, LOW): // apagamos el primer led de la calle digitaWrite(1uz_calle_2, LOW); !/ apagamos el segundo led de la calle digitaWrite(1uz_calle_3, LOW); // apagamos eltercer led de la calle digitalWrite(luz_calle_4, LOW); // apagamos el cuarto led de la calle digitaWrite(1uz_calle_5, LOW); // apagamos el quinto led de la calle digitaWrite(1uz_calle_6, LOW); // apagamos el sexto led de la calle digitalWrite(luz_habitacion_1, LOW); // apagamos el primer led de la habitacion digitalWrite(luz_habitacion_2, LOW); // apagamos el segundo led de la habitacion digitaWrite(Iuz_sala_1, LOW); // apagamos eltercer led de la sala digitaWrite(1uz_sala_2, LOW); // apagamos el cuarto led de la sala digitaWrite(1uz_cocina_1, LOW); // apagamos el quinto led de la cocina digitalWrite(luz_cocina_2, LOW); // apagamos el sexto led de la cocina digitaWrite(1uz_comedor_1, LOW); // apagamos el quinto led del comedor digitalWrite(1uz_comedor_2, LOW); // apagamos el sexto led de! comedor ied setCursor(0,1); !/ ubicamos la pantalla en la primera fila Icd.print(" Luces —_"); // escribimos el mensaje superior Icd.setCursor(0,1); !/ ubicamos la pantalla en la segunda fila \cd.print (" apagadas —"); }/ escribimos el mensaje inferior mensaj reseteamos la variable Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje Domética gas ‘Lumbador Activo ALARMA GAS I 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 andloga de! Puerto AO Conexién del Médulo Bluetooth al Arduino usando Pin 0 y 1 " #finclude Servo servol; —_/ 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=0; void setup(){ servot attach(4); pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11,OUTPUT); pinMode(10, OUTPUT); pinMode(9,OUTPUT); pinMode(8,OUTPUT); pinMode(7,QUTPUT); pinMode(6,OUTPUT); pinMode(5,OUTPUT); pinMode(4,OUTPUT), pinMode(3,OUTPUT), Serial.begin(9600); delay(1000); } void loop(){ if(Serial.available(>0){ 11 Si el puerto serie esta habilitadp estado = Serialread(); _// Lee lo que llega por el puerto Serie 11 on/off de los pin 13 al pin 6 digitalWrite(13, HIGH); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje iffestado=='b' ){ digitalwrite(13,LOW); } if(estado== 'c’){ digitalWrite(12,HIGH); } if(estado== 'd' ){ digitarite(12,LOW); } if(estado=='e'){ digitalWrite(11,HIGH); } iffestado== 'f { digitalWrite(11,LOW); digitalWrite(10, HIGH); } if(estado=='h’ digitarite(10,LOW); } if(estado== ‘I ){ digitalWrite(9,HIGH); } iflestado== j! { digitalWrite(9,LOW); } if(estado== Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje digitalWrite(8, HIGH); } if(estado= x digitalwrite(8, LOW); digitalWrite(7,LOW); } if(estadi mit digitalWrite(6,HIGH); digitalWrite(6,LOW); } if(estad: servo1 write(0); ‘A’ {i Movimiento del SERVO } if(estado== 'B' ){ servot .write(90); } if(estado= cK servot write(180); {Dimer 1 conectado al pin 5 Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje analogWrite(5,0); } if(estado=="t){ analogWrite(5,3): } iffestado=='uy{ analogWrite(5,8); } iffestado=="v/{ analogWrite(5,20); } iffestado==w){ analogWrite(5,30); analogWrite(5,125); } iffestado=='2'){ analogWrite(5,255); } i Dimer 2 conectado al pin 3 Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje analogWrite(3,0); } if(estado=='2" analogWrite(3,3); } iffestado=='3' analogWrite(3,8); analogWrite(3,20); } iffestado=='5')f analogWrite(3,30); analogWrite(3,125); } iffestado=='8' analogWrite(3,255); } 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 f° Alarma de Gas Metano Conecta el Arduino con el Sensor de Gas MQ4 y cuando el nivel de concentracién 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 Veo 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); 1! Activa el puerto Serial a 9600 Baudios pinMode(13, OUTPUT); 1 Configura el Pin 13 como salida para el Zumbador } void loop() { Serial_printin(analogRead(A0)): // Envia al Serial el valor leido del Sensor MQ4 if(analogRead(A0) > valor_limite){ _1/ Si la medida de gas metano es mayor de valor limite digitalWrite(13, HIGH); _// Enciende el Zumbador conectado al Pin 13 } else{ 11 Sies menor del valor limite apaga el Zumbador digitalwrite(13, LOW); } delay (300); 11 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 contro! puente H prueba. Camino #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 positivo 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(derB, OUTPUT); pinMode(izq, OUTPUT); pinMode(izq8, OUTPUT); } void loop() { analogWrite(derB, 0); // Detiene los Motores analogWrite(izaB, 0); delay (500); analogWrite(derA, vel); // Frente 2 segundos analogWrite(izaA, 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); /* 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 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(derB, 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(izaA, 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(izaA, 0); delay (500); analogWrite(derB, vel); // Reversa 2 segundos analogWrite(izqB, vel): delay (2000); Cédigo carro control puente H, completo. 1° Carro Inalambrico Bluetooth 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. Conexion de! Modulo Bluetooth HC-06 y el Arduino ARDUINO Bluetooth HC-06 O(RX) 1X 1(1X) RK 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 7 int izgA = 5; int izqB = 6; int derA = 9; int derB = 10; int vel = 255; II Velocidad de los motores (0-255) intestado='g; —_//inicia detenido Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje int pecho = 2; I define el pin 2 como (pecho) para el Ultrasonido int ptrig = 3; II 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(izqB, 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(Serialavailable()>0){__// lee el bluetooth y almacena en estado estado = Serial.read(); iffestado: analogWrite(der8, 0); analogWrite(izqB, 0); analogWrite(derA, vel); 1 Boton desplazar al Frente analogWrite(izqA, vel); } Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje iffestado=="'b{ ——_‘// Boton IZQ analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, vel); if(estado=='c'){ _// Boton Parar analogWrite(der8, 0); analogWrite(izaB, 0); analogWrite(derA, 0); analogWrite(izaA, 0); } iffestado=='d{ _/ Boton DER analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(izaA, 0); analogWrite(derA, vel); ) iffestado: 1/ Boton Reversa analogWrite(derA, 0); analogWrite(izaA, 0); analogWrite(derB, vel); analogWrite(izqB, vel); J 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; 1/ calcula la distancia en centimetros delay(10); if (distancia <= 15 && distancia >=2){ _// sila distancia es menor de 15cm digitalWrite(13, HIGH); 1/ Enciende LED analogWrite(der8, 0); 1/ Parar los motores por 200 mili segundos analogWrite(izaB, 0); analogWrite(derA, 0); analogWrite(izaA, 0); delay (200); analogWrite(derB, vel); 1 Reversa durante 500 mili segundos analogWrite(izqB, vel); delay(500); analogWrite(derB, 0); 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(izqA, vel); } iffestado: analogWrite(derB, 0); ‘{ J Boton OFF, detiene los motores no hace nada analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izaA, 0); Centro Educative Guaymax Innovacién, libertad y devocién por el aprendizaje

Vous aimerez peut-être aussi