PROPÓSITO DEL MANUAL El presente manual diseñado tiene como propósito apoyar como guía hacia el participante, mostrando de manera teórico práctico los contenidos pertinentes a la temática Arduino desde cero con el IDE Arduino, se espera que el manual cumpla con su finalidad ajustándose a las necesidades del participante acompañado de la guía del docente. OBJETIVO DEL TALLER. Analizar, diseñar 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 Educativo 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, diseñada 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 más usados son el Atmega 168, Atmega328, Atmega1280, Atmega8 por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación Processing/Wiring y el cargador de arranque que es ejecutado en la placa. Historia Arduino se inició en el año 2005 como un proyecto para estudiantes en el Instituto IVREA, en Ivrea (Italia). En ese tiempo, los estudiantes usaban el microcontrolador BASIC Stamp, cuyo coste era de 100 dólares estadounidenses, lo que se consideraba demasiado costoso para ellos. Por aquella época, uno de los fundadores de Arduino, Massimo Banzi, daba clases en Ivrea. El nombre del proyecto viene del nombre del Bar di Re Arduino (Bar del Rey Arduino) donde Massimo Banzi pasaba algunas horas. En su creación, contribuyó el estudiante colombiano Hernando Barragán, quien desarrolló la tarjeta electrónica Wiring, el lenguaje de programación y la plataforma de desarrollo.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Aplicaciones El módulo Arduino ha sido usado como base en diversas aplicaciones electrónicas. Xoscillo: Osciloscopio de código abierto. Equipo científico para investigaciones. Aduinome: Un dispositivo controlador MIDI. OBDuino: un económetro que usa una interfaz de diagnóstico a bordo que se halla en los automóviles modernos. Humane Reader: dispositivo electrónico de bajo coste con salida de señal de TV que puede manejar una biblioteca de 5000 títulos en una tarjeta microSD. The Humane PC: equipo que usa un módulo Arduino para emular un computador personal, con un monitor de televisión y un teclado para computadora. Ardupilot: software y hardware de aeronaves no tripuladas. ArduinoPhone: un teléfono móvil construido sobre un módulo Arduino.
Lenguajede programación Arduino La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programación de alto nivel Processing. Sin embargo, es posible utilizar otros lenguajes de programación y aplicaciones populares en Arduino, debido a que Arduino usa la transmisión serial de datos soportada por la mayoría de los lenguajes mencionados. Para los que no soportan el formato serie de forma nativa, es posible utilizar software intermediario que traduzca los mensajes enviados por ambas partes para permitir una comunicación fluida. Algunos ejemplos son:
3DVIA Virtools: aplicaciones interactivas y de tiempo real. Adobe Director. BlitzMax (con acceso restringido). C C++ (mediante libSerial o en Windows). C# Cocoa/ Objective-C (para Mac OS X). Flash (mediante ActionScript). Gambas. Isadora (Interactividad audiovisual en tiempo real). Instant Reality (X3D). Java Software de medición y experimentación. Mathematica. Matlab. Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
MaxMSP: Entorno gráfico de programación para aplicaciones musicales, de audio y multimedia. Miniblog: Entorno gráfico de programación, corre también en las computadoras OLPC. Perl. Php. Physical Etoys: Entorno gráfico de programación usado para proyectos de robótica educativa. Processing. Pure Data. Python. Ruby. Scratch for Arduino (S4A). Entorno gráfico de programación, modificación del entorno para niños Scratch, del MIT). Squeak: Implementación libre de Smalltalk. SuperCollider: Síntesis de audio en tiempo real. VBScript. Visual Basic .NET. VVVV: Síntesis de video en tiempo real.
Centro Educativo 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 características 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 Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
8. Puerto ICSP para programación serial. 9. Microcontrolador ATmega 328. 10. Cristal de cuarzo de 16 Mhz, 11. Regulador de voltaje. 12. Conector hembra 2.1mm con centro positivo. 13. Pines de voltaje y tierra. 14. Entradas análogas. La placa Arduino UNO será la encargada de procesar las entradas y salidas que vayamos conectando en nuestros proyectos. Si bien el que se encarga del procesamiento específicamente es el microcontrolador que está integrado (9), podríamos decir que el Arduino sería el cerebro de nuestros proyectos. Arduino UNO.- El protoboard (la placa de pruebas) de desarrollo de microcontroladores que estará en el corazón de tus proyectos. Es un ordenador sencillo, pero con el todavía no tienes forma de interactuar. Vas a construir los circuitos y las interfaces para la interacción, 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 diseños sin que sea necesario soldar y desoldar componentes. Las protoboard o breadboard están compuestas por bloques de plástico perforados y numerosas láminas delgadas de una aleación de cobre, estaño y fósforo. Internamente, una protoboard tiene conexiones preestablecidas que nos ayudarán a la hora de conectar unos componentes con otros. El esquema de conexiones internas de una protoboard es el siguiente:
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Protoboard. Una placa sobre la que puedes construir circuitos electrónicos. Es como un panel de parches, con filas de agujeros que te permiten conectar cables y componentes. Los del lado son columnas y filas los del centro, hay 5 grupos, en medio hay una separación.
LED y Resistencia El diodo LED, Light-Emitting Diode, es un tipo especial de diodo semiconductor, que tiene la capacidad de emitir luz al disponerse en polarización directa. Se usan como indicadores en muchos dispositivos y cada vez con mucha más frecuencia en iluminación. Los LEDs presentan muchas ventajas sobre las fuentes de luz incandescente como un consumo de energía mucho menor, mayor tiempo de vida, menor tamaño, gran durabilidad y fiabilidad. El LED tiene una polaridad, un orden de conexión, y al conectarlo al revés se puede quemar.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
La resistencia por otro lado es un componente eléctrico pasivo de dos terminales que introduce una resistencia eléctrica en el lugar del circuito donde se coloque. Está formada por carbón y otros elementos que en cierto modo “absorben” la corriente que circula por ellas. Entonces podríamos decir básicamente el concepto general es “absorber”. Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Como se puede ver en la imagen, las resistencias tienen bandas de colores a lo largo de las mismas y es a partir de esas que se puede obtener el valor de resistencia. El valor de la resistencia eléctrica se obtiene leyendo las cifras como un número de una, dos o tres cifras; se multiplica por el multiplicador y se obtiene el resultado en Ohmios (Ω).
Usamos de diferentes tipos de resistencias, el trabajo de las resistencias. Esto es una montaña, la altura de la montaña lo consideramos como el voltaje, la corriente
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
son las piedras que caen y las resistencias son unos bloques para que las piezas no caigan todas.
¿Cómo medir el valor de una resistencia a partir por medio de los códigos de colores? ¿Qué es una resistencia? Es un elemento electrónico que limita el paso de corriente en un circuito. Físicamente están hechos de carbono o metal. Están en radios, televisores, amplificadores, etc. La unidad de medición de la resistencia es el ohm (Ω). Representación gráfica.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
¿Cómo se leen los colores? Se leen de izquierda a derecha, la primera y segunda cifra representan la primera cifra del valor de la resistencia comprendida entre 0 y 9.
Diferentes colores que puede tener una resistencia.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Ejemplo:
El primer color vale 1(uno) El segundo color vale 0(cero) El tercer color vale 100(cien). Por lo que 10 * 100 = 1000 Ω (Ohms) = 1 kΩ
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Tabla de equivalencias.
Continuando con el primer ejemplo: El color dorado tiene una tolerancia del 5%. Entonces es 1 kOhm con 5% de tolerancia. Ejemplo 2:
Valor rojo = 2. Valor violeta = 7. Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Valor café = 10. El último color es el dorado que equivale a 5%.
El resultado sería:
El resultado es 270 Ω con 5% de tolerancia.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Los leds soportan 1.5 volts. Pulsador y Potenciómetro.
Un botón o pulsador es utilizado para activar alguna función. Los botones son por lo general activados al ser pulsados, normalmente con un dedo. Un botón de un dispositivo electrónico funciona por lo general como un interruptor eléctrico, es decir en su interior tiene dos contactos, si es un dispositivo NA (normalmente abierto) o NC (normalmente 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 el aprendizaje
Un potenciómetro es una resistencia variable en la cual podemos elegir el valor que puede tomar. De esta forma, controlamos la intensidad de corriente que fluye por un circuito si éste está conectado en paralelo, así 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. Simbología.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Lavadoras o lámparas como está 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. Energía en luz. 6.- Resistencia. 7.- Pila 8. Conexión a tierra. Gnd. Ejemplo
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Señal Analógica o Digital.
Entradas digitales: Lo que hicimos con nuestro botón, o está prendido o está apagado, no hay intermedio, en código binario es un uno, o cero. Entradas analógicas: Si hay intermedio, cuando utilizamos sensores, por ejemplo un sensor de temperatura, sensor de inclinación. Puede variar. Estructura básica de un programa
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
La estructura IF.
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Estructura FOR.
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Estructura DO-WHILE.
Estructura SWITCH-CASE
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
¿Qué es programar? Es el arte de enseñarle a una computadora que es lo que tiene que hacer. Enseñarle a realizar estas operaciones, debemos dar instrucciones específicas, para que las ejecute secuencialmente, es a partir de esas instrucciones que las computadoras son capaces de mostrarnos un video, una página web, o el personaje favorito en un videojuego. Entonces, ¿qué es programar? Darle instrucciones específicas a la computadora para que las ejecute secuencialmente. Al igual que usamos un lenguaje para comunicarnos entre unos a otros igual es para comunicarnos con una computadora, debemos aprender un lenguaje específico.
Una semejanza de comunicación con las computadoras, la computadora tiene un montón de lenguajes, cada uno para determinadas tareas. Para construir aplicaciones web, construir videojuegos, aplicaciones para robótica. La programación en la vida cotidiana. Como microondas.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Microcontrolador que regula las temperaturas y el tiempo de cocción.
Aplicación de mensajería en el celular, cuando pagamos a través de una tarjeta el colectivo o subterráneo. Moldeen y mejoren la calidad de vida. Descripción del hardware y software de Arduino. Comunidad oficial de Arduino. https://forum.arduino.cc/
Que es Arduino. Es una plataforma construida sobre hardware y software libre muy fáciles de usar. Por un lado cuenta con una placa.
Centro Educativo 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 específico, para que sean ejecutadas. Estas instrucciones o códigos se escriben, utilizando el software Arduino.
Lenguaje conocido como Processing, basado en la plataforma JAVA.
Otro aspecto de Arduino es su comunidad, tiene una gran cantidad de usuarios, que constituyen su corazón, desde su foro oficial hasta su wiki, proyectos compartidos y mejorados continuamente. Que puedo hacer con la placa Arduino.
¿Para qué podemos usar Arduino?
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Una analogía con su hermano mayor, que es la computadora, una computadora tiene un procesador central al cual podemos dar distintos dispositivos de entrada como un mouse, teclado, etc.
El procesador utiliza esa información, para generar acciones de salida, escribir información en un monitor, reproducir música en un parlante. Esas entradas pueden ser, perillas, botones, incluso un micrófono. Estas entradas o sensores se procesan en el cerebro de nuestro arduino y nos permiten generar salidas como mostrar información en una pantalla LCD, o accionar un botón eléctrico. Hacer proyectos con domótica o robótica. ¿Qué es Arduino? Una plataforma de Hardware y Software libre. Preguntas. 1.- ¿Qué significa que Arduino es una plataforma Open Source? ¿Una plataforma Open Source es lo mismo que gratuita? 2.- ¿Por qué creen que es importante generar una cultura DIY (Do It Yourself) en las escuelas? 3.- ¿Por qué algunos especialistas afirman que la programación es el inglés del futuro?
Antes de empezar: IDE de Arduino.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Conocer las distintas secciones de este entorno de desarrollo integrado. Crear y editar sketches o bocetos, que son los archivos que contienen estas instrucciones específicas para Arduino, escritas en lenguaje Processing. 1.- Instalar el programa de arduino. 2.- Ir a la página oficial de arduino. 3.- Sector de descargas. 4.- Reconocer los principales botones del entorno. 5.- Iremos conociendo todas las secciones del menú: Botón abrir, ver nuevos bocetos, checkear que mi código compile, o crear uno nuevo.
Pasos previos. 1.- Ingresamos a la página oficial de Arduino, cual es la siguiente liga: https://www.arduino.cc/ Como se muestra en la siguiente imagen.
2.- En el menú 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 versión que se ajuste a nuestras necesidades. Hay dos caminos para instalar Arduino: Instalador: Seguir el asistente. Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
La carpeta: Ejecutar la aplicación.
4.- Aparecerá una nueva ventana como la siguiente, donde nuevamente se nos pedirá si queremos realizar la descarga o contribuir con una donación y al mismo tiempo descargar el software. En nuestro caso descargamos haciendo clic izquierdo sobre Just Download y listo.
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 Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
En el caso personal la aplicación se instaló en la ubicación C:\Program Files (x86), además 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 aplicación ejecutable arduino. Para ejecutarlo hacemos doble clic izquierdo o simplemente un clic izquierdo y presionamos la tecla Enter.
3.- También podemos acceder al programa desde el escritorio siempre y cuando lo hayamos especificado dentro de la aplicación. Como se muestra en la siguiente imagen:
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
4.- Habrá ocasiones, no siempre donde nuestro programa no responda de forma correcta por lo que habrá que instalar de nuevo los drivers, veamos los siguientes pasos: 1.- Una vez instalado ir: Administrador de dispositivos o Device Manager. Para este paso ya debemos tener lo siguiente: Modelo Arduino R3 y el cable usb AB.
Importante: COM: Puerto de comunicación serial de la computadora, es decirle a la computadora en que canal está conectado el arduino para que al momento de subir los programas le llegue la información a arduino.
a)
Buscamos el Panel de Control.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
b) Una vez abierto abrimos el Administrador de dispositivos, hacemos clic izquierdo.
c) Nos abrirá una ventana como la siguiente, nos enfocaremos en Puertos (COM y LPT). En caso de que el puerto esté con un mensaje de advertencia será necesario por recomendación instalar los drivers, que podemos encontrar en la carpeta de instalación de Arduino.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
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 el aprendizaje
e) Nos abrirá una ventana como la siguiente, por lo general cuando hacemos clic izquierdo sobre la primera opción Buscar automáticamente software de controlador actualizado nos avisa que todo está correctamente, por lo que es mejor seleccionar con clic izquierdo la opción Buscar software de controlador en el equipo.
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 el aprendizaje
Agregamos la ruta de la carpeta de instalación de arduino, de ser necesario a nivel de los drivers.
g) Una vez realizado la búsqueda e instalación, nos mostrará la siguiente ventana.
h) De tal manera, que nos quedará lo siguiente, una instalación sin errores.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Interfaz de Arduino. Barra de título.
Menú general.
De izquierda a derecha: 1. Verificar/Compilar. 2. Subir. , 3. Nuevo, 4. Abrir, 5. Salvar.
Salida de mensajes.
Editor de código / área de trabajo
Información de la placa arduino y puerto.
Detalles: Un proyecto en arduino se llama sketch. 1.- Verificar/compilar: 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, librerías, ejemplos, etc. 5.- Salvar: Guardar.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Conociendo la placa Arduino
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 algún 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 número. Esos son los pines analógicos. Diferencias. Los digitales es decir hay voltaje o no hay voltaje. Son 1 y 0. Representados por la palabras HIGHT 5 Volts- LOW 0 Volts. Y en los 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 mayúsculas. Poner paréntesis después de cada comando, cada argumento separado por una coma, y al final punto y coma para decir que allí termina la instrucción. Importante: La velocidad en la que se lee las líneas de código es bastante rápido.
Centro Educativo 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 aparecerá una ventana como la siguiente:
Con los siguientes bloques de código:
2.- En el primer bloque de código setup se va a leer solo una vez en sí el arduino solo lo va a leer una vez. 3.- En el segundo bloque de código loop en español significa ciclo, se repite indefinidamente hasta que se desconecte el arduino de la corriente o se le cargue otro programa.
Centro Educativo 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 específico) en este caso de la placa de arduino. Conectar el arduino a la computadora. 1.- Conectar el arduino a la PC. 2.- Utilizar un CASE, para tener aislación estática. 3.- Conectarlo al cable USB. Punta cuadrada – punta convencional. 4.- El arduino está vacío, no está haciendo nada. 5.- Cargar un programa. 6.- Comprobar que nuestra placa esté conectada. 7.- Herramientas -> Placa/Puerto. Revisar sección de puertos. Los sketches o programas de Arduino se dividen en 2.
Setup: Inicializar todos los componentes que voy a usar en el resto de nuestro programa. Antes: Decirle a nuestro arduino, IDE, software, en que puerto serial está conectado nuestro arduino, para eso es el Administrador de dispositivos, para ello iremos a Herramientas (Tools)/Puerto (Port) y seleccionamos el puerto que ocupa nuestro arduino. Como se muestra a continuación:
Centro Educativo 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 resuelto: /** Ejercicio #1 *Encender led naranja que está conectado al pin 13. */ /** *Es decirle a arduino que tiene algo conectado en el pin 13, */ void setup() { // 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 número del pin, que va ser: entrada o salida. pinMode (13, OUTPUT); }
void loop() { // 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. //Lleva 2 argumentos (pin donde vamos a escribir, mandar 0 ó 1 (HIGHT, LOW). digitalWrite(13, HIGH);
//Espérate mil milisegundos (1 segundo). delay(1000); Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
//Apagar (0 volts). digitalWrite(13,LOW); delay(1000); }
Desafío Una vez que hemos terminado el proyecto anterior, te proponemos la siguiente actividad para ejercitar: Realizar una modificación del código para que la luz parpadee de la siguiente manera:
Prendido 3 segundos. Apagado 2 segundos. Prendido 2 segundos. Apagado 1 segundo. Prendido 1 segundo. Apagado 0.5 segundos. Que luego vuelva arrancar.
Conceptos básicos de electrónica básica. La materia está compuesta de elementos químicos que, en esencia, son todos similares en su minúscula estructura: un núcleo en donde se acumulan partículas denominadas protones y neutrones, en torno al cual orbitan partículas denominadas electrones. Al conjunto se le denomina átomo. 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, ¿cuándo circulan los electrones? Para que un electrón quiera moverse tiene que tener ganas de ello, es decir, se tiene que sentir atraído 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 más que el efecto de los electrones moviéndose por la atracción que surge con los protones. ¿Te has fijado que los cables generalmente están recubiertos de plástico y por dentro tienen un filamento metálico? Son así para que los electrones puedan “viajar” Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
por el cable metálico y el plástico evita que salgan y los mantiene en el mismo. Esto es porque el metal es CONDUCTOR DE LA ELECTRICIDAD y el plástico es AISLANTE (no deja pasar a los electrones). Conceptos clave. Voltaje
Una magnitud física que impulsa a los electrones a lo largo de un conductor (por ejemplo un cable) en un circuito eléctrico cerrado, provocando el flujo de una corriente eléctrica. Su unidad es el Voltio (V). El instrumento usado para medir el voltaje se lo conoce como Voltímetro. 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 electroimán, 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 amperímetro, colocado en serie con el conductor cuya intensidad se desea medir.
Resistencia
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Es la propiedad física mediante la cual todos los materiales tienden a oponerse al flujo de la corriente. La unidad de este parámetro es el Ohmio (Ω). Puedes encontrar resistencias en los calefactores eléctricos, tarjetas electrónicas, estufas son muy útiles para limitar el paso de la corriente. Ley de Ohm
La ley dice que la corriente (I) que circula por un conductor eléctrico es directamente proporcional al voltaje (V) e inversamente proporcional a la resistencia (R). La pirámide de la derecha es muy útil para conocer la fórmula 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 I (corriente) por R (resistencia), una más tapa I (Corriente), I va a ser igual a V dividido R. Sistemas electrónicos Un sistema electrónico es un conjunto de circuitos que interactúan entre sí para obtener un resultado. Una forma de entender los sistemas electrónicos consiste en dividirlos en entradas, salidas y procesamiento de señal. Las entradas o inputs
Son sensores (o transductores) electrónicos o mecánicos que toman las señales (en forma de temperatura, presión, humedad, contacto, luz, movimiento, pH, etc) del mundo físico y las convierten en señales de corriente o voltaje. Por ejemplo un sensor de temperatura, un pulsador, una fotocelda, un potenciómetro, un sensor de movimiento entre muchos más. Las salidas o Outputs
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Son actuadores u otros dispositivos (también transductores) que convierten las señales de corriente o voltaje en señales físicamente útiles como movimiento, luz, sonido, fuerza, rotación, entre otros. Por ejemplo: un motor que gire, un LED o sistema de luces que se encienda automáticamente cuando esté oscureciendo, un buzzer que genere diversos tonos. Ojo!! La pata corta del led es siempre el polo negativo (cátodo) y la pata larga el polo positivo (ánodo). Primero conectar todos los componentes a la protoboard y a lo último conectar la placa Arduino al equipo portátil.
Desafío
La sintaxis ante todo Los puntos y comas son uno de los elementos más importantes para escribir código para Arduino y uno de los que más fácilmente nos olvidamos. Se usan para separar las diferentes líneas de código en su programa e indica a Arduino donde termina su comando. Completa el código con los ; que falten.
Cambiando de pin Modificar el código para que el LED si en lugar de estar en el PIN 4, estuviera conectado al PIN 8.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Ejercicio #2: Encender led desde la protoboard. Realizar el circuito como se muestra en la siguiente imagen.
Centro Educativo 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.
Desafío
Centro Educativo 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.
Desafío
Centro Educativo 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: 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. 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 Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Hacer el prototipo siguiente como se muestra en la siguiente imagen. Pasos: 1.- Conectar la patita larga del led (ánodo) al pin digital número 13. 2.- Y la otra patita corta (cátodo) a Tierra o Ground.
Nota: Cabe destacar que solo fue necesario cambiar el prototipo sin mover nada de código desde el IDE arduino.
Ejercicio 4: Encender led con Push Button.
Centro Educativo 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 táctil. 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 más larga a voltaje.
3.- Protoboard. Las dos primeras líneas están conectadas horizontalmente (de arriba hacia debajo de la imagen). Negativo o a tierra y el positivo o a 5 volts, para alimentar toda una línea.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
4.- Tenemos dos partes donde van a ir conectados nuestros componentes. Cual están conectadas verticalmente. Distinguir resistencias. Para el 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.
Procedimientos: Para el L.E.D. 1.- Las patitas del led en cada extremo de los bloques. 2.- Del lado de la pata corta (cátodo) sobre la misma línea vertical poner la resistencia dejando pasar un espacio recibirá tierra. Para el botón. 1.- Poner el botón atrás del led o delante según sea el caso, dos patas para un bloque y el otro igual. 2.- Una resistencia de 10K conectarla al botón del lado de una patita sobre la misma línea, esa resistencia recibirá tierra. Conectarlos al arduino. 1.- Conectar la tierra y el voltaje (5v) a la protoboard. 2.- El voltaje pasará a través del pin digital #4 de la pata más larga del led. 3.- La alimentación a tierra, pasará 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 línea azul, y del botón una de las patas está conectada a tierra a través de esta resistencia.
Imágenes ilustrativas.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Conectar los componentes al Arduino. 1.- De la misma línea que tenemos conectada la tierra en el botón, vamos a conectarlo al pin digital #2 del arduino. De la otra patita conectarlo a 5 volts. 2.- La alimentación del led vendrá del pin digital #4 desde la pata larga. Del lado de la patita corta del led, sobre la misma línea conectar una resistencia a Tierra. 3.- En la otra pata se le da voltaje al botón desde la línea roja de la protoboard. 4.- Nota: Tierra como alimentación que va ser controlada por el pin. MIENTRAS SE TENGA PRESIONADO EL BOTÓN SE ENCIENDE EL LED Y SI SE SUELTA SE APAGA.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Diseño de prototipo
Muestra de código. /* *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, básicamente son dos placas, de metal que están separadas y cuando no las presionamos *se juntan, cerrando el circuito dando un 0 o un uno. */ int estadoBoton = 0; //Constante de tipo entero conectado al pin 2. const int boton = 2; //led conectado al pin 4. const int led = 4; Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
void setup() { /* * Decirle al arduino aqui, que nuestro led vale 4, conectado al pin 4, eso es salido output. * Boton es una entrada o input. * */ pinMode(led,OUTPUT); pinMode(boton,INPUT); }
void loop() {
/* * queremos leer un pin digital, * argumento de digitalRead(Es que pin voy a leer). */ estadoBoton = digitalRead(boton);
/* * Si nuestro botón, si está presionado prende el led, sino esta presionado apaga el led */
//Si nuestro botón la lectura de nuestro botón es igual a 5volts, uno ó quiere decir que está en el estado HIGH. // if(estadoBoton == HIGH){
Centro Educativo 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. o 5 volts.
}else{ // 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. //PARTE 2 LED Y PUSH BUTTON.
/* * Presionar el botón que encienda el led, saltar el botón que se quede encendido. que guarde el estado de que está encendido, * volverlo a presionar para que el led se apague. */ const int boton = 2;
const int led = 4;
int estadoBoton = 0;
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
/* * Se utilizan como condicionales, de true o false, 1 o 0, HIGH o LOW, */ boolean estadoAnteriorBoton = LOW; //Guardar el estado anterior del botón. boolean encenderLed = false; //Nos va dar la pauta para encender nuestro led o apagar.
void setup() {
pinMode(led,OUTPUT); pinMode(boton,INPUT);
}
void loop() {
estadoBoton = digitalRead(boton);
//Saber si el botón está siendo presionado en este momento, //Si antes estaba LOW y ahora sí esta presionado, vamos a encender nuestro led, if(estadoBoton == HIGH && estadoAnteriorBoton == LOW){ //Invertir el estado de la funcion booleana. encenderLed = !encenderLed; estadoAnteriorBoton = HIGH; //Se sale del if al no cumplir la condición. }else{ estadoAnteriorBoton = estadoBoton; //Igualar el estado anterior del botón a cualquier estado del botón en este momento. Centro Educativo 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/Diseño:
Código. /*Programa para controlar un LED RGB con arduino. Usando las salidas PWM se puede controlar la intensidad de cada color para hacer las mezclas. Centro Educativo 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 (o) o rosado (p)) usando sus siglas en ingles*/
/* Materiales: 1 Arduino UNO. 1 LED RGB de 4 patas cátodo común 3 resistencias de 220[ohm] Cables de conexión
Autor: Jesús. Fecha: 18 Julio 2016*/
/*-----Declaracion de variables para cada color R G B-----*/ int rled = 11; // Pin PWN 11 para led rojo int bled = 10; // Pin PWM 10 para led azul int gled = 9; // Pin PWM 9 para led verde
/*----Declaracion de variables auxiliares-----*/ int i; // Variable para ciclos repetitivos int repeat = 5; // Variables para cantidad límite de repeticiones
void setup() { /*----- Se inicializan pines PWM como salida*/ pinMode(rled, OUTPUT);
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
pinMode(bled, OUTPUT); pinMode(gled, OUTPUT); }
void loop() {
for(i=0; i<repeat; i++) //Se repite la ejecucion de la funcion rgbon() "repeat" veces rgbon(); delay(1000); //Se espera 1 segundo colors('y'); //Se enciende el LED en color amarillo (y de yellow) delay(1000); colors('o'); //Se enciende el LED en color naranko (o de orange) delay(1000); colors('p'); //Se enciende el LED en color rosado (p de pink) delay(1000); }
/*-----Funcion para mostrar colores principales cada 500 ms-----*/ void rgbon(){ analogWrite(rled,255); // Se enciende color rojo delay(500);
// Se esperan 500 ms
analogWrite(rled,0); // Se apaga color rojo analogWrite(bled,255); // Se enciende color azul delay(500);
// Se esperan 500 ms
analogWrite(bled,0); // Se apaga color azul analogWrite(gled,255); // Se enciende color verde delay(500);
// Se esperan 500 ms
analogWrite(gled,0); // Se apaga color verde
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
}
/*-----Funcion que permite escoger entre color amarillo, naranjo o rosado-----*/ void colors(char color){ //La funcion recibe un parametro que se guarda en variable color
switch(color){ //Se compara variable color con dato guardado case 'y': analogWrite(rled,255); // Si color == 'y' se enciende color amarillo analogWrite(gled,255); // Mezclando r = 255 / g = 255 / b = 0 analogWrite(bled,0); break; case 'o': analogWrite(rled,255); // Si color == 'o' se enciende color naranjo analogWrite(gled,180); // Mezclando r = 255 / g = 180 / b = 0 analogWrite(bled,0); break; case 'p': analogWrite(rled,255); // Si color == 'p' se enciende color rosado analogWrite(gled,0); // Mezclando r = 255 / g = 0 / b = 255 analogWrite(bled,255); break; } }
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Ejercicio #7 Controlar el brillo de un led con potenciómetro. Objetivo: Controlar la intensidad de brillo de un LED mediante un potenciómetro. Aprender a utilizar los pines analógicos de Arduino. Material: 1.- Tarjeta Arduino Uno. 2.- Cable USB para Arduino. 3.- Tarjeta protoboard. 4.- Software IDE de Arduino. 5.- Diodo led de cualquier color. 6.- Resistencia de 220 / 330 Ohms. 7.- Potenciómetro de para conectar en un Protoboard, de 10 kilos. Descripción: 1.- Conectamos un LED a nuestra protoboard. 2.- La parte redonda del LED la conectamos al pin 3 de nuestro Arduino (es importante que sea el pin 3). 3.- Conectamos una resistencia de 220 o 330 ohm a la parte plana del LED. 4.- Conectamos la resistencia a tierra. 5.- Ahora es tiempo de conectar nuestro potenciómetro, lo conectamos en la protoboard 6.- Viendo el potenciómetro de frente, el pin del extremo izquierdo lo conectamos a tierra y el del extremo derecho a 5 Volts. 7.- El pin central de nuestro potenciómetro lo conectamos al pin A0 de la sección digital de nuestro Arduino. 8.- Ahora cargamos el código para ver los resultados. Aclaración: Es importante que sea el pin 3 ya que es una salida analógica, aunque la Arduino Uno cuenta con otros pines analógicos aparte del 3, estos el 5, 6, 10 y 11, se les puede reconocer por el signo ~ que les antecede.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Diagrama de conexión de la práctica Código. /* Práctica 3 Voltajes analógicos y PWM Ajustar el brillo de un led dependiendo del voltaje de un potenciómetro.
*/
const int led =3; // led conectado al pin 3 const int pot =0; // el pot esta conectado al pin A0
int brillo; //variable para el brillo
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
void setup () { pinMode (led, OUTPUT); // declaramos el led como salida /* los pin analรณgicos se declaran como entrada automรกticamente */ }
void loop (){ /*leemos el valor del potenciรณmetro divididos entre 4 ya que solo se pueden usar valores entre 0 y 255 en analog Write */ brillo = analogRead (pot) / 4; /*analogWrite recibe dos valores, el pin a usar y la intensidad del voltaje los valores de voltaje van de 0 a 255*/ analogWrite(led, brillo);
Conocimientos aprendidos. Se aprendiรณ sobre las entradas y salidas digitales de Arduino, las salidas requieren especificar el pin y tambiรฉn el voltaje con valores de 0 a 255. Y las entradas analรณgicas no necesitan declararse pues los pines analรณgicos se declaran como entrada automรกticamente. Ejercicio #8 Uso del sensor de Temperatura. Objetivo: Aprender a manejar un sensor de temperatura. Y a usar la funciรณn map y constrain de Arduino.
Descripciรณn 1.- Conectamos el sensor de temperatura a la protoboard, teniendo el lado plano del sensor de frente realizamos las conexiones de la siguiente forma: 1. El pin izquierdo lo conectamos a 5 volts. 2. El pin derecho lo conectamos a tierra. 3. El pin central lo conectamos a cualquier pin analรณgico de nuestro Arduino (el pin A0 en nuestro caso).
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
2.- Conectamos dos LEDs de distintos colores, agregamos una resistencia a cada LED en la parte plana que vaya a tierra. 3.- El otro pin del LED lo conectamos uno al 3 y 5 que son los que tienen funcionalidad PWM. 4.- Conectamos los cables de tierra y 5V del Arduino a la protoboard. 5.- Cargamos el código.
Diagrama de conexión de la práctica. Código. /* Practica Uso del Sensor de temperatura. Encender un LED rojo o azul dependiendo de la temperatura*/
const int sensor = 0; // entrada del sensor LM35 const int ledRojo = 3; // pin del LED rojo Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
const int ledAzul = 5; // pin del LED azul
long miliVolts; long temperatura; int brillo;
long calctemp(int datosSensor){ /*Calculamos los mV en la entrada*/ miliVolts = (analogRead(datosSensor) * 5000L) / 1023; /* Calculamos la temperatura*/ temperatura = miliVolts / 10; /*Regresamos el valor de temperatura*/ return temperatura; }
void setup () { Serial.begin(9600); // iniciamos la comunicacion serial /*Declaramos los LEDs como salida*/ pinMode(ledRojo, OUTPUT); pinMode(ledAzul, OUTPUT); }
void loop () { /*Llamamos a la funciรณn para calcular temperatura y guardamos el valor*/ temperatura = calctemp(sensor);
/*Ajustamos la escala de temperatura para poder usar analogWrite*/
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
brillo = map(temperatura, 10, 40, 0, 255); /*Restringimos el rango de brillo entre 0 y 255*/ brillo = constrain(brillo, 0, 255);
/*Ajustamos el color de los LED*/ analogWrite(ledRojo, brillo); analogWrite(ledAzul, 250-brillo);
/*Mandamos el valor de la temperatura al monitor serial y agregamos un delay para no saturar el monitor*/ Serial.print("Temperatura: "); Serial.print(temperatura); Serial.println("grados"); delay(200); } Observaciones: El producto final es tener un termómetro visual que son los LEDs si la temperatura aumenta el LED azul aumenta su brillo y el del rojo disminuye, si baja la temperatura ocurre lo contrario. Nota: Se aprendió acerca del sensor de temperatura LM35, y en cuanto a programación el uso de dos funciones de Arduino el map y el constrain, que en este caso el map lo emplee para convertir los valores a un rango de 0 a 255 y el constrain para restringir los valores a ese rango.
Como instalar una librería en Arduino. Si llevamos un rato jugando con nuestro arduino y poco a poco nos convencemos para enfrentar proyectos cada vez más ambiciosos, seguramente nos encontraremos muy pronto en el siguiente escenario. Un sensor que requiere una librería especial para poder acceder a sus funciones y no sabemos como instalar el software necesario para hacerlo funcionar. En este ejemplo estaremos viendo la instalación de la librería NewPing para sensores ultrasónicos.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
¿Qué es una librería de arduino? Las librerías son colecciones de código que facilitan la interconexión de sensores, pantallas, módulos electrónicos, etc. El entorno de arduino ya incluye algunas librerías de manera que se facilite, por ejemplo, mostrar texto en pantallas LCD. Existen cientos de librerías desarrolladas por terceros en internet, que nos ayudarán a conectar prácticamente cualquier dispositivo a nuestras tarjetas con arduino. Las librerías normalmente incluyen los siguientes archivos comprimidos en un archivo ZIP:
Un archivo .cpp (código de C++). Un archivo .h o encabezado de C. Un archivo Keywords.txt. Muy posiblemente la librería incluye un archivo readme con información adicional sobre la librería para el desarrollador. Directorio de sketch de ejemplo (opcional). En la siguiente imagen vemos el contenido de la librería NewPing (que maneja varios sensores ultrasónicos) y como están organizados sus archivo.
¿Cómo instalar una librería de Arduino? 1.- Ubicar y descargar la librería de arduino que requerimos. Normalmente nos encontraremos con archivos en formato ZIP.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
2.- Abrir el IDE de Arduino y hacer clic en Sketch > Import Library… > Add Library en la barra de menú.
3.- Se mostrará la pantalla donde debemos indicar la ruta del archivo .ZIP que contiene la librería de arduino. Elegimos el archivo ZIP que acabamos de bajar y damos clic en “Select” o “Seleccionar”.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
4.- Nuevamente hacemos clic en Sketch > Import Library y deberíamos ver la librería nueva en la parte baja del menú.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Después de completar estos pasos la librería será descomprimida en nuestro directorio de sketches y podremos utilizarla en todos nuestros programas. Sin embargo, los ejemplos contenidos con la librería no serán visibles dentro del menú File > Examples hasta que reiniciemos el entorno de desarrollo.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Ruta: Programa/ incluir Librería/ Añadir librería ZIP.
Instalación manual de una librería. Si el método anterior para instalar una librería de arduino no funciona o queremos instalar manualmente la librería para “un mayor control”. Podemos hacerlo de la siguiente forma:
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Descomprimimos el archivo .ZIP. En Windows copiamos la carpeta de la librería a la siguiente ruta: My Documents\Arduino\libraries. En MAC copiamos la carpeta de la librería a la siguiente ruta: Documents/Arduino/libraries.
Al final deberíamos tener en nuestro directorio los siguientes archivos (Windows):
En MAC quedaría algo así:
Ejercicio #9 Uso del sensor HC-SR04 Usaremos la siguiente librería: https://goo.gl/H4a8VK Objetivo: Conocer el funcionamiento del sensor HC-SR04. Y usarlo para detectar qué tan lejos o cerca se encuentra un objeto. Materiales. 1 Tarjeta Arduino Uno. 1 Cable USB para Arduino. 1 Tarjeta protoboard. 1 Software IDE de Arduino. 1 Sensor HC - SR04. 1 Led común de cualquier color. 1 resistencia de 220 0 330 ohms. 1 zumbador o speaker para 5 volts. Cables. Descripción 1. Conectamos en sensor HC- 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 Educativo 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 o 330 ohm, y el extremo redondo lo conectamos al pin 8 de Arduino. 4. Conectamos el zumbador a la protoboard, el cable negro lo conectamos a tierra y el otro lo conectamos al pin 5 de nuestro Arduino. 5. Conectamos los cables de tierra y corriente del Arduino a la protoboard. 6. Cargamos el código.
A continuación se muestra el diagrama de conexión de la presente práctica.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Cรณdigo.
/*Practica - Uso del Sensor ultrasonico*/ //Se importa la libreria NewPing #include <NewPing.h>
const int trig = 4; const int echo = 3;
//Pin trig en pin 4 //Pin Echo en pin 3
const int zumbador = 5; //zumbador en pin 5 const int led = 8;
//LED en pin 8
int distancia; //Guardamos la distancia que detecte el sensor
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
int pausa;
//Guarda el tiempo de espera entre parpadeo
// 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(){
// en la variable distancia guardamos la distancia en centĂmetros 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 digitalWrite(led, LOW); //apagamos el LED delay(pausa); // esperamos el tiempo de pausa }
Centro Educativo Guaymax InnovaciĂłn, libertad y devociĂłn por el aprendizaje
Finalidad de la práctica: Es que al posicionar un objeto en el rango del sensor, el speaker emite un sonido y el LED comienza a parpadear, y entre más cerca se esté del sensor el ruido y el parpadeo serán más rápidos. Nota: Aparte del LED, también se encuentra un speaker conectado y funciona como debería emitiendo un sonido intermitente, el sonido es muy débil. Se aprendió acerca del uso del sensor de proximidad, específicamente del HCSR04 y su correcta conexión al Arduino y en tanto a la programación, aprendimos a como usar las librerías, 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. 5 leds. 5 resistencias de 220 ohms. Alambre o conectores MM. 1 potenciómetro Arduino IDE.
A continuación se muestra el prototipo de la parte del hardware:
Centro Educativo 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 Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
pinMode(i, OUTPUT);
Serial.begin(9600);
}
void loop() { valorPotenciometro = analogRead(pinPotenciometro); Serial.println(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 = 2; i < 7; i++) digitalWrite(i, LOW); Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
} void encenderLeds(){ for (i = 2; i < 7; i++) digitalWrite(i, HIGH); }
Explicación del código. 1. El potenciómetro entrega un límite mínimo de 0 y un máximo de 1023. 2. Se inicializa i, pinPotenciometro, valorPotenciometro en 0. 3. Por medio del pinMode definimos que pinPotenciometro será 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 asignándole una velocidad de transmisión de datos (bits por segundo). Dicha función debe ser llamada desde dentro de la estructura o sección setup(). 5. Luego en la línea valorPotenciometro = analogRead(pinPotenciometro); estamos diciendo que los valores enviados por el potenciómetro se almacenarán en la variable valorPotenciometro. 6. Serial.println(valorPotenciometro, DEC), es para que si queremos ver los valores que está enviando el potenciómetro en pantalla, los envíe en formato decimal (para ver la consola o monitor, vamos a Tools > Serial Monitor). 7. Cada uno de los if que siguen en el código, especifican una acción con determinado valor que viene del potenciómetro, cuando es 0, se ejecuta el método apagarLeds, lo que pone en LOW a los leds, apagándolos, cuando es el máximo, 1023, se activa el método encenderLeds, el cual pone en HIGH los leds, encendiéndolos todos. Las demás condiciones hace que pasando por determinados valores, los leds enciendan uno por uno.
Centro Educativo 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 teoría del sensor LDR, como conectarlo a la placa de Arduino, su funcionamiento mediante ejemplos prácticos 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.gl/rr0OPP 2.- Para documentar tu proyecto, te recomendamos el uso de Fritzing: http://goo.gl/fM6MEP Otras consideraciones antes de empezar: Ten en cuenta las siguientes consideraciones antes de empezar:
Tener precaución en el manejo de los diferentes dispositivos. Evitar largas exposiciones al sol de la electrónica, verter agua, etc. Antes de alimentar la electrónica, asegúrate de haber realizado las conexiones tal y como se muestran. De otro modo podrías dañar la electrónica.
Prevención de riesgos. Los siguientes riesgos están 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 representación eléctrica.
Centro Educativo 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 varía 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:
Algunas características de este sensor son: 1.- Tiempo de respuesta corto, ideal para aplicaciones que requieran respuesta rápida. 2.- Varían su valor de acuerdo a la intensidad de la luz. 3.- Son analógicos. Algunas aplicaciones del sensor LDR son: 1.- Uso en fotocopiadoras: Densidad del tóner. 2.- Aplicaciones de control luz en la calle. 3.- Balanzas electrónicas. 4.- Equipos de pruebas colorimétricas. Medición de luz con mi sensor LDR. La primera parte del proyecto consiste en conectar el sensor LDR a la protoboard para poder empezar a hacer mediciones de luz. Las haremos mediante: 1.- Vamos a montar el siguiente circuito en la protoboard.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
El circuito consiste básicamente 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 medición del sensor. 2.- Ahora vamos a trabajar con el software de Arduino. 3.- Compilamos y verificamos que el código no presente ningún error. Código
/* *Lectura de los valores medidos por un sensor LDR. */
//Leeremos del pin 0. int LDR_pin = 0;
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
//Variable para leer los datos del LDR. int LDR_val = 0;
void setup() {
//Visualización de los valores por la consola, hay que clickear //en el boton Serial Monitor Serial.begin(9600);
}
void loop() {
//En el loop iremos leyendo continuaamente del sensor LDR. LDR_val = analogRead(LDR_pin);
//Impresión de los valores leídos por el sensor por pantalla. Serial.print("LDR = "); Serial.println(LDR_val); //Paro 1 segundo delay(1000);
}
Centro Educativo 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 el aprendizaje
Ejercicio #13: LDR. Información de referencia: http://www.arduino.cc/playground/Learning/PhotoResistor http://arduino.cc/es/Reference/Map Detalles: Este es un ejercicio muy sencillo en el que veremos como obtener lecturas analógicas de un sensor y darles salida por el monitor del puerto serie para verlas. Herramientas:
1 placa Arduino. 1 resistencia sensible a la luz o 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 Educativo 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 o---/\/\/--.--/\/\/---o GND | Pin 0 o-------' ---------------------------------------------------*/ int lightPin = 0; // Pin para la fotoresistencia int ledPin=11;
// Pin al que se conecta el LED
void setup() { Serial.begin(9600);
// Inicia la comunicaci贸n serie
pinMode(ledPin,OUTPUT); // Establece el pin del LED // como salida }
void loop() { // Primero leemos el valor que nos da la fotoresistecia // y lo mostramos por el puerto serie Serial.println(analogRead(lightPin));
Centro Educativo Guaymax Innovaci贸n, libertad y devoci贸n por el aprendizaje
// Ahora cogemos la lectura de la fotoresistencia, la // dividimos por 4 y la mandamos como salida analógica // al LED analogWrite(ledPin, analogRead(lightPin)/4);
// Hacemos una pequeña pausa para que el baile de // números 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 más, 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 número (valor) a mapear. desdeBajo: el límite inferior del rango actual del valor. desdeAlto: el límite superior del rango actual del valor. hastaBajo: límite inferior del rango deseado. hastaAlto: límite superior del rango deseado. El comando map() re-mapea un número desde un rango hacia otro. Esto significa que, un valor contenido en el al rango desdeBajo, desdeAlto, será mapeado al rango hastaBajo-hastaAlto. No se limitan los valores dentro del rango, ya que los valores fuera de rango son a veces objetivos y útiles, así 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 límites de los rangos.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Ten en cuenta que los límites “inferiores” de algún rango pueden ser mayores o menores que el límite “superior” por lo que map() puede utilizarse para revertir una serie de números, por ejemplo: y = map(x,1,50,50,1); La función maneja correctamente también los números negativos, por ejemplo: y = map(x,1,50,50,-100); también es válido y funciona correctamente. El comando map() usa matemática de enteros por lo que no generará números 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 mínimo cuando tapas con la mano la LDR y al máximo cuando la LDR capta la luz de ambiente. Código. int lightPin = A0; //define el pin de la foto-resistencia int ledPin=11; int valor;
//define el pin para el LED
//define una variable en la que haremos los cálculos
int min = 0;
//valor mínimo que da la foto-resistencia
int max = 0;
//valor máximo que da la foto-resistencia
void setup() { Serial.begin(9600); //Inicializa la comunicación serie pinMode( ledPin, OUTPUT ); }
void loop() { valor = analogRead(lightPin); valor = map(valor, min, max, 0, 255); analogWrite(ledPin, valor); Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Serial.println(valor); delay(10); //pequeño retardo para darle // 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 la 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.
La principal diferencia con el esquema anterior es que hemos añadido un LED con una resistencia conectados al pin 13 de Arduino. 3.- Una vista del esquema del circuito.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
4.- Ahora vamos al software de Arduino y escribimos el código necesario. 5.- Comprobaremos que encendiendo la luz de nuestra habitación, el led se apaga, y si apagamos la luz de la habitación, el led se enciende. También vemos que el tiempo de respuesta de un sensor LDR es muy corto, por lo que podremos usarlo en aplicaciones que requieran de un tiempo de respuesta corto. Código.
/* *Lectura de los valores medidos por un sensor LDR. */
//Leeremos del pin 0. Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
int LDR_pin = 0;
//Variable para leer los datos del LDR. int LDR_val = 0;
int LED_pin = 13; // el led estรก en el pin 13.
void setup() { pinMode(LED_pin,OUTPUT); // El led esta en el pin 13. } void loop() { /* * En el loop iremos leyendo continuamente del sensor LDR. */ LDR_val = analogRead(LDR_pin); //lee el valor de entrada de LDR. if(LDR_val >= 20){ //si hay luz, apago el led. digitalWrite(LED_pin,LOW); //apagamos el led. } else if(LDR_val < 20){//si no hay luz enciendo el led. digitalWrite(LED_pin, HIGH); //encendemos el led. } }
Centro Educativo 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 así como en un grupo de leds. Aprender como conectar sensores que varían su resistencia dependiendo de una magnitud física. Conceptos básicos. 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 varía sensiblemente, con la cantidad de luz percibida. La relación entre la intensidad lumínica 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: Más 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 tensión 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.
Conversión Analógico-Digital (ADC). Es el proceso mediante el cual se convierte una magnitud física como un voltaje, corriente, temperatura, etc en un número binario (o señal digital) con el propósito de facilitar su manejo por circuitos digitales como un CPU. El Arduino realiza este proceso para conocer la cantidad de luz percibida por el LDR y poder procesarla numéricamente.
Centro Educativo 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 o 330 ohm 1/4 W. 5) 3 leds. 6) Cables para protoboard. Diagrama/Prototipo.
Debemos armar el circuito como se muestra en el siguiente diagrama pictórico. Recordar que los leds tienen polaridad y hay que respetarla. El pin más largo va conectado a la tarjeta Arduino, mientras que el pin más corto va con una resistencia a tierra, la resistencia también puede conectarse sin problema entre el ánodo del led y el arduino (del lado positivo del led).
Centro Educativo 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 están 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 según correspondan. /* * Ejemplo de medidor de luz con Arduino utilizando una fotoresistencia LDR y * un grupo de leds para mostrar el resultado de las lecturas. */
// Pin donde se conectan los leds int pinLed1 = 2; int pinLed2 = 3; int pinLed3 = 4; // Pin analogico de entrada para el LDR int pinLDR = 0;
// Variable donde se almacena el valor del LDR int valorLDR = 0;
void setup() { // Configuramos como salidas los pines donde se conectan los led pinMode(pinLed1, OUTPUT); pinMode(pinLed2, OUTPUT); pinMode(pinLed3, OUTPUT);
// Configurar el puerto serial Serial.begin(9600); Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
}
void loop() { // Apagar todos los leds siempre que se inicia el ciclo digitalWrite(pinLed1, LOW); digitalWrite(pinLed2, LOW); digitalWrite(pinLed3, LOW);
// Guardamos el valor leido del ADC en una variable // El valor leido por el ADC (voltaje) aumenta de manera directamente proporcional // con respecto a la luz percibida por el LDR valorLDR= analogRead(pinLDR);
// Devolver el valor leido a nuestro monitor serial en el IDE de Arduino Serial.println(valorLDR);
// 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 Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
digitalWrite(pinLed3, HIGH); } // Esperar unos milisegundos antes de actualizar delay(200); } Para probar el proyecto medidor de luz, solamente debemos colocarlo sobre una fuente de luz y verificar que los leds se enciendan conforme aumenta la cantidad de luz. En la terminal, también podemos ver como va cambiando el valor de la conversión analógico a digital.
Ejercicio #16. Trabajando con fotoresistencia (Continuidad). Tomando como referencia el ejercicio anterior. Cuando hay suficiente luz ambiente, todos los leds están apagados, y conforme baja el nivel de luz, se encienden las diferentes “alertas”, siendo la roja la que indica mayor oscuridad. Para esto se utiliza una resistencia (pulldown) de 10K (puede ser menor, dependiendo de si queremos ser sensibles a la claridad o a la oscuridad), por un lado conectada está a tierra, y por el otro lado, alimentando con 5V el sensor. En la unión entre el sensor y la resistencia de 10K, se saca una salida que va hacia la entrada analógica del Arduino. Esto nos dará valores entre 0 (mucha luz) y 1023 (oscuridad total).
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Cรณdigo (sketch)
int lightPin = 0; //define a pin for Photo resistor
int ledPin1 = 2; int ledPin2 = 3; int ledPin3 = 4;
void setup(){ pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT);
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
pinMode(ledPin3, OUTPUT); }
void loop(){
int lectura = analogRead(lightPin);
if(lectura < 300) { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); } else if(lectura >= 300 && lectura < 500) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); } else if(lectura >= 500 && lectura < 700) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, LOW); } else if(lectura >= 700) { digitalWrite(ledPin1, HIGH);
Centro Educativo 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
Arduino UNO. 2 resistencias 330 ohms. 2 leds. 1 pulsador.
Realizar el circuito como se muestra en la siguiente imagen.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Cรณdigo. //Luces estroboscรณpicas con variaciรณn de tiempo //salidas digitales 8 y 7 , entrada pin 2 para variar el tiempo
int ledazul = 8; int ledrojo = 7; int entrada = 2;
int pulsador = 0; int tiempo = 30;
void setup() { pinMode(ledazul, OUTPUT); pinMode(ledrojo, OUTPUT); pinMode(entrada, INPUT); }
void loop() { digitalWrite(ledazul, HIGH); delay(tiempo);
// espera un tiempo de 200 o 30ms
digitalWrite(ledazul, LOW); delay(tiempo);
//prende led azul
// espera un tiempo de 200 o 30ms
digitalWrite(ledazul, LOW); delay(150);
//apaga el led azul
// espera un tiempo de 200 o 30ms
digitalWrite(ledazul, HIGH); delay(tiempo);
//prende led azul
//apaga el led azul
// espera un tiempo de 150ms
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
digitalWrite(ledrojo, HIGH); delay(tiempo);
//prende led rojo
// espera un tiempo de 200 o 30 mili segundos
digitalWrite(ledrojo, LOW); delay(tiempo);
//apaga el led rojo
// espera un tiempo de 200 o 30 mili segundos
digitalWrite(ledrojo, HIGH); delay(tiempo);
//prende led rojo
// espera un tiempo de 200 o 30 mili segundos
digitalWrite(ledrojo, LOW); delay(150);
//apaga el led rojo
// espera un tiempo de 150 mili segundos
pulsador = digitalRead(entrada); //lee el valor del pin 2 si esta en alto o bajo if (pulsador == HIGH) { contrario es 200ms
// si esta en alto el tiempo es de 30ms de lo
tiempo=30; } else { tiempo=200; } }
Centro Educativo 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. 1 resistencia 10 kohm. Cables machos a macho.
Realizar el circuito como se muestra en la siguiente imagen.
Nota: Cabe destacar que el potenciómetro solo es para calibrar el contraste de la pantalla.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Cรณdigo pantalla LCD /* LiquidCrystal Library - scrollDisplayLeft() and scrollDisplayRight()
Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface.
This sketch prints "Hello World!" to the LCD and uses the scrollDisplayLeft() and scrollDisplayRight() methods to scroll the text.
The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
* LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3)
This example code is in the public domain.
http://goo.gl/rjTjMK */
// include the library code: #include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); delay(1000); }
void loop() { Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
// scroll 13 positions (string length) to the left // to move it offscreen left: for (int positionCounter = 0; positionCounter < 13; positionCounter++) { // scroll one position left: lcd.scrollDisplayLeft(); // wait a bit: delay(150); }
// scroll 29 positions (string length + display length) to the right // to move it offscreen right: for (int positionCounter = 0; positionCounter < 29; positionCounter++) { // scroll one position right: lcd.scrollDisplayRight(); // wait a bit: delay(150); }
// scroll 16 positions (display length + string length) to the left // to move it back to center: for (int positionCounter = 0; positionCounter < 16; positionCounter++) { // scroll one position left: lcd.scrollDisplayLeft(); // wait a bit: delay(150); }
// delay at the end of the full loop: delay(1000); Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
}
Ejercicio #19 Servo motor. Hacer mover servo de extremo a extremo con parada en el centro. Material Arduino UNO. Servo motor. Cables macho macho. Realizar el circuito como se muestra en la siguiente imagen.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
C贸digo. // Mover servo de extremo a extremo con parada en el centro #include <Servo.h>
Servo servo1;
// Incluye la libreria Servo
// Crea el objeto servo1 con las caracteristicas de Servo
void setup() { servo1.attach(5,600,1500); // Asocia el servo1 al pin 3, define el min y max del ancho del pulso }
// eso depende del fabricante del servo
void loop() { servo1.write(0); delay(700);
servo1.write(90);
// Gira el servo a 0 grados // Espera 700 mili segundos a que el servo llegue a la posici贸n
// Gira el servo a 90 grados
delay(700);
servo1.write(180);
//Gira el servo a 180 grados
delay(700); }
Centro Educativo 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 automáticamente al centro (Dirección de Carro). Material.
Servomotor. 2 pulsadores. 2 leds. 2 resistencias. Cables macho macho.
Realizar el circuito como se muestra en la siguiente imagen.
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Código. // Mover servo de derecha a izquierda al oprimir el pulsador de cada lado // El servo regresa automáticamente al centro (Dirección de Carro)
#include <Servo.h>
// Incluye la librería Servo
Servo servo1;
// Crea el objeto servo1 con las características de Servo
int pulsador_der = 1;
// Fijamos el pulsador de la derecha en 0
int pulsador_izq = 1;
// Fijamos el pulsador de la izquierda en 0
void setup() { servo1.attach(5,600,1500); ancho del pulso
// Asocia el servo1 al pin 3, define el min y max del
// eso depende del fabricante del servo pinMode(2, INPUT);
// Configuramos el pin 2 como entrada
pinMode(3, INPUT);
// Configuramos el pin 3 como entrada
}
void loop() { pulsador_der = digitalRead(2); //lee el valor del pin 2 si esta en alto o bajo pulsador_izq = digitalRead(3); //lee el valor del pin 3 si esta en alto o bajo
if (pulsador_der == LOW) { servo1.write(180); delay(15);
// si se oprimió el pulsador de la derecha // Gira el servo a 1800 grados
// Espera 15 mili segundos a que el servo llegue a la posición
} Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
if (pulsador_izq == LOW) { servo1.write(0); delay(15); posicion
// si se oprimio el pulsador de la izquierda // Gira el servo a 0 grados // Espera 15 mili segundos a que el servo llegue a la
} if(pulsador_izq == HIGH && pulsador_der == HIGH){ // Si se dejan de oprimir los dos pulsadores servo1.write(90); delay(15); llegue a la posiciรณn
// Gira el servo a 90 grados // Espera 15 mili segundos a que el servo
} }
Centro Educativo 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 (habitaciรณn, sala, comedor y cocina):
Centro Educativo 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 y 48 de la tarjeta Arduino Mega. Todos los polos negativos de los LEDs, van conectados a través de resistencias de 220 Ohms al GND del Arduino, como se puede ver en el plano superior.
Ahora conectamos los LEDs de la parte exterior de la casa:
Centro Educativo 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 domótica, 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:
Centro Educativo 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 (conexión central). Pin 4 al puerto digital 11. Pin 5 a GND. Pin 6 a puerto digital 12. Pin 11 a puerto digital 5. Pin 12 a puerto digital 4. Pin 13 a puerto digital 3. Pin 14 a puerto digital 2. Pin 15 conectado a una resistencia de 220 Ohms, esta a su vez debemos conectarla a 5V. Pin 16 a GND. Ya tenemos listas las conexiones para los bombillos de la casa y la pantalla que nos traduce las ordenes que enviamos a través de la aplicación de control de voz que diseñamos para nuestro dispositivo Android Es el momento de instalar los servomotores los cuales abrirán y cerrar la ventana y la puerta de nuestra casa domótica.
Sigue el siguiente plano para conectar los servomotores:
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
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 baterĂa de 9V y un relay de 2 canales para que podamos darle la orden al relay que los encienda.
Centro Educativo 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 batería 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 y estos a la tarjeta Arduino Mega:
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Lo primero que debemos hacer es conectar la batería a los polos positivos y negativos de la breadboard. Es Importante que el polo negativo o GND este puenteado al GND de la tarjeta Arduino MEGA, de esta manera evitaremos que se sobrecargue nuestro circuito. El polo positivo que proviene de la batería lo conectamos a los puertos comunes del relay (conectores centrales) debemos conectar los polos positivos de los motores a los puertos con la sigla NO del relay, esto quiere decir que cuando se activa el relay con el Arduino, va a encender los motores. Si lo conectamos al puerto con la sigla NC, al conectar la corriente, lo motores estarán encendidos y al activar el relay lo que haría sería apagarlos.
El puerto VCC lo conectamos a 5V del arduino y el GND al GND del Arduino. El CH1 del relay lo conectamos al puerto 6 y el CH2 lo conectamos al puerto 7.
Modulo Bluetooth. Una vez tenemos conectados los motores, solo nos hace falta agregar el modulo Bluetooth el cual es la base de este proyecto. Es muy importante que al subir el programa a la tarjeta Arduino Mega, el modulo Bluetooth no tenga el VCC conectado a la tarjeta, pues generara un error y el programa no se podrá cargar. Solo cuando el programa este guardado en la memoria, podremos conectar el modulo a los 5V del arduino y nuestra casa domótica estará operativa.
Este es el la manera correcta de conectar el modulo a la tarjeta Arduino Mega:
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Como conectar el Modulo Bluetooth. VCC lo conectamos al puerto 5V del Arduino (conectar solo cuando el sketch este cargado en la tarjeta). GND lo conectamos a la GND de la placa. RXD lo conectamos al puerto TX 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 domรณtica.
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
String mensaje; //variable que contiene el mensaje del dispositivo android #include <Servo.h> // 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 <LiquidCrystal.h> // incluimos la linbreria para la pantalla liquida LiquidCrystal lcd(12, 11, 5, 3, 3, 2); // configuramos los puertos de la pantalla en el arduino // nombramos las variables para los LEDs y los puertos donde estan conectados const int luz_calle_1 = 22; const int luz_calle_2 = 24; const int 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; // 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 // configuracion para la pantalla liquida lcd.begin(16, 2); // iniciamos la pantalla liquida lcd.print (" Casa Domotica "); lcd.setCursor(0,1); lcd.print (" Bienvendido "); // configuramos los puertos de los LEDs como salida pinMode(luz_calle_1, OUTPUT); Centro Educativo 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); // confuguramos los pines de los motores como salida pinMode(aire_acondicionado, OUTPUT); pinMode(calentador, OUTPUT); // servomotores puerta.attach(51); // pin al que esta conectado el servomotor de la puerta ventana.attach(53); // pin al que esta conectao el servomotor de la ventana puerta.write(95); // iniciamos la puerta en posicion de cerrada ventana.write(150); // iniciamos la ventana en posicion cerrada } void loop() { // iniciamos el bucle del programa while(Serial.available()) { // confirmando que la comunicacion serial este disponible delay(10); // hacemos un delay para dar estabilidad al programa char c = Serial.read(); // c almacena el comando que proviene del 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 // 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 Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print ("Puerta pirncipal "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" Abierta "); } // escribimos el mensaje inferior else if (mensaje=="*cerrar puerta") { puerta.write(95); // ponemos el servomotor de la ventana en posicion de abrir lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print ("Puerta pirncipal "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" Cerrada "); } // escribimos el mensaje inferior else if (mensaje=="*abrir ventana") { ventana.write(30); // ponemos el servomotor de la ventana en posicion de abrir lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Ventana master "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.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 lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Ventana master "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.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 lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Puertas "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.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 lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
lcd.print (" Puertas "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.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 lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print ("Luces Habitacion "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" encendidas "); } // escribimos el mensaje inferior else if (mensaje=="*apagar principal") { digitalWrite(luz_habitacion_1, LOW); // apagamos el primer led de la habitacion digitalWrite(luz_habitacion_2, LOW); // apagamos el segundo led de la habitacion lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print ("Luces Habitacion "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" apagadas "); } // escribimos el mensaje inferior else if (mensaje=="*prender sala") { digitalWrite(luz_sala_1, HIGH); // prendemos el primer led de la sala digitalWrite(luz_sala_2, HIGH); // prendemos el segundo led de la sala lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces Sala "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" encendidas "); } // escribimos el mensaje inferior else if (mensaje=="*apagar sala") { digitalWrite(luz_sala_1, LOW); // apagamos el primer led de la sala digitalWrite(luz_sala_2, LOW); // apagamos el segundo led de lasala lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces Sala "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.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 lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces Cocina "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
lcd.print ("
encendidas
"); } // escribimos el mensaje inferior
else if (mensaje=="*apagar cocina") { digitalWrite(luz_cocina_1, LOW); // apagamos el primer led de la cocina digitalWrite(luz_cocina_2, LOW); // apagamos el segundo led de la cocina lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces Cocina "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" apagadas "); } // escribimos el mensaje inferior else if (mensaje=="*prender comedor") { digitalWrite(luz_comedor_1, HIGH); // prendemos el primer led del comedor digitalWrite(luz_comedor_2, HIGH); // prendemos el segundo led del comedor lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces Comedor "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" encendidas "); } // escribimos el mensaje inferior else if (mensaje=="*apagar comedor") { digitalWrite(luz_comedor_1, LOW); // apagamos el primer led del comedor digitalWrite(luz_comedor_2, LOW); // apagamos el segundo led del comedor lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces Comedor "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" apagadas "); } // escribimos el mensaje inferior else if (mensaje=="*prender exterior") { digitalWrite(luz_calle_1, HIGH); // prendemos el primer led de la calle digitalWrite(luz_calle_2, HIGH); // prendemos el segundo led de la calle digitalWrite(luz_calle_3, HIGH); // prendemos eltercer led de la calle digitalWrite(luz_calle_4, HIGH); // prendemos el cuarto led de la calle digitalWrite(luz_calle_5, HIGH); // prendemos el quinto led de la calle digitalWrite(luz_calle_6, HIGH); // prendemos el sexto led de la calle lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces exterior "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" encendidas "); } // escribimos el mensaje inferior else if (mensaje=="*apagar exterior") { digitalWrite(luz_calle_1, LOW); // apagamos el primer led de la calle digitalWrite(luz_calle_2, LOW); // apagamos el segundo led de la calle digitalWrite(luz_calle_3, LOW); // apagamos eltercer led de la calle Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
digitalWrite(luz_calle_4, LOW); // apagamos el cuarto led de la calle digitalWrite(luz_calle_5, LOW); // apagamos el quinto led de la calle digitalWrite(luz_calle_6, LOW); // apagamos el sexto led de la calle lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces exterior "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" apagadas "); } // escribimos el mensaje inferior else if (mensaje=="*prender aire") { digitalWrite(aire_acondicionado, HIGH); // prendemos el motor el aire acondicionado lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Aircon "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" encendido "); } // escribimos el mensaje inferior else if (mensaje=="*apagar aire") { digitalWrite(aire_acondicionado, LOW); // apagamos el motor el aire acondicionado lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Aircon "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" apagado "); } // escribimos el mensaje inferior else if (mensaje=="*prender calentador") { digitalWrite(calentador, HIGH); // prendemos el motor del calentador lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Calefacicon "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" encendida "); } // escribimos el mensaje inferior else if (mensaje=="*apagar calentador") { digitalWrite(calentador, LOW); // apagamos el motor del calentador lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Calefaccion "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" apagada "); } // escribimos el mensaje inferior else if (mensaje=="*prender luces") { digitalWrite(luz_calle_1, HIGH); // prendemos el primer led de la calle digitalWrite(luz_calle_2, HIGH); // prendemos el segundo led de la calle digitalWrite(luz_calle_3, HIGH); // prendemos eltercer led de la calle digitalWrite(luz_calle_4, HIGH); // prendemos el cuarto led de la calle digitalWrite(luz_calle_5, HIGH); // prendemos el quinto led de la calle digitalWrite(luz_calle_6, HIGH); // prendemos el sexto led de la calle digitalWrite(luz_habitacion_1, HIGH); // prendemos el primer led de la habitacion Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
digitalWrite(luz_habitacion_2, HIGH); // prendemos el segundo led de la habitacion digitalWrite(luz_sala_1, HIGH); // prendemos eltercer led de la sala digitalWrite(luz_sala_2, HIGH); // prendemos el cuarto led de la sala digitalWrite(luz_cocina_1, HIGH); // prendemos el quinto led de la cocina digitalWrite(luz_cocina_2, HIGH); // prendemos el sexto led de la cocina digitalWrite(luz_comedor_1, HIGH); // prendemos el quinto led del comedor digitalWrite(luz_comedor_2, HIGH); // prendemos el sexto led del comedor lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" encendidas "); } // escribimos el mensaje inferior else if (mensaje=="*apagar luces") { digitalWrite(luz_calle_1, LOW); // apagamos el primer led de la calle digitalWrite(luz_calle_2, LOW); // apagamos el segundo led de la calle digitalWrite(luz_calle_3, LOW); // apagamos eltercer led de la calle digitalWrite(luz_calle_4, LOW); // apagamos el cuarto led de la calle digitalWrite(luz_calle_5, LOW); // apagamos el quinto led de la calle digitalWrite(luz_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 digitalWrite(luz_sala_1, LOW); // apagamos eltercer led de la sala digitalWrite(luz_sala_2, LOW); // apagamos el cuarto led de la sala digitalWrite(luz_cocina_1, LOW); // apagamos el quinto led de la cocina digitalWrite(luz_cocina_2, LOW); // apagamos el sexto led de la cocina digitalWrite(luz_comedor_1, LOW); // apagamos el quinto led del comedor digitalWrite(luz_comedor_2, LOW); // apagamos el sexto led del comedor lcd.setCursor(0,1); // ubicamos la pantalla en la primera fila lcd.print (" Luces "); // escribimos el mensaje superior lcd.setCursor(0,1); // ubicamos la pantalla en la segunda fila lcd.print (" apagadas "); } // escribimos el mensaje inferior } mensaje=""; // reseteamos la variable
}
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Domótica gas
/* 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 análoga del Puerto AO
Conexión del Módulo Bluetooth al Arduino usando Pin 0 y 1
*/
#include <Servo.h> Servo servo1;
// Crea el servo1 con las librerias de Servo.h
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
int estado=0; int retardo=100; int analogo=0;
void setup(){ servo1.attach(4); pinMode(13,OUTPUT); pinMode(12,OUTPUT); pinMode(11,OUTPUT); pinMode(10,OUTPUT); pinMode(9,OUTPUT); pinMode(8,OUTPUT); pinMode(7,OUTPUT); pinMode(6,OUTPUT); pinMode(5,OUTPUT); pinMode(4,OUTPUT); pinMode(3,OUTPUT); Serial.begin(9600); delay(1000); } void loop(){ if(Serial.available()>0){ estado = Serial.read();
// Si el puerto serie esta habilitadp // Lee lo que llega por el puerto Serie
}
if(estado== 'a'){
// on/off de los pin 13 al pin 6
digitalWrite(13,HIGH); }
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
if(estado== 'b' ){ digitalWrite(13,LOW); } if(estado== 'c'){ digitalWrite(12,HIGH); } if(estado== 'd' ){ digitalWrite(12,LOW); } if(estado== 'e'){ digitalWrite(11,HIGH); } if(estado== 'f' ){ digitalWrite(11,LOW); } if(estado== 'g' ){ digitalWrite(10,HIGH); } if(estado== 'h' ){ digitalWrite(10,LOW); } if(estado== 'i' ){ digitalWrite(9,HIGH); } if(estado== 'j' ){ digitalWrite(9,LOW); } if(estado== 'k' ){
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
digitalWrite(8,HIGH); } if(estado== 'l' ){ digitalWrite(8,LOW); } if(estado== 'm' ){ digitalWrite(7,HIGH); } if(estado== 'n' ){ digitalWrite(7,LOW); } if(estado== 'o' ){ digitalWrite(6,HIGH); } if(estado== 'p' ){ digitalWrite(6,LOW); } if(estado== 'A' ){
// Movimiento del SERVO
servo1.write(0); } if(estado== 'B' ){ servo1.write(90); } if(estado== 'C' ){ servo1.write(180); }
if(estado=='s'){
// Dimer 1 conectado al pin 5
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
analogWrite(5,0); }
if(estado=='t'){ analogWrite(5,3); } if(estado=='u'){ analogWrite(5,8); } if(estado=='v'){ analogWrite(5,20); } if(estado=='w'){ analogWrite(5,30); } if(estado=='x'){ analogWrite(5,60); } if(estado=='y'){ analogWrite(5,125); } if(estado=='z'){ analogWrite(5,255); }
if(estado=='1'){
// Dimer 2 conectado al pin 3
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
analogWrite(3,0); }
if(estado=='2'){ analogWrite(3,3); } if(estado=='3'){ analogWrite(3,8); } if(estado=='4'){ analogWrite(3,20); } if(estado=='5'){ analogWrite(3,30); } if(estado=='6'){ analogWrite(3,60); } if(estado=='7'){ analogWrite(3,125); } if(estado=='8'){ analogWrite(3,255); }
if(estado=='q'){
// envia el valor leido del puerto analogo A0
analogo=analogRead(A0); Serial.print(analogo);
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Serial.println("°C"); delay (retardo); estado=0; } delay(retardo); }
PARTE 2 /* 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 límite se activa una alarma sonora, el nivel de gas metano se puede visualizar por el Monitor Serial. Conexiones: ARDUINO
5V GND A0
MQ4
Zumbador
Vcc GND A0
Pin 13
+
GND
GND
*/
int valor_limite= 200;
// Fiaja el valor limite en el que se activa la alarma
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
// Fije el valor después de visualizar el nivel con el Monitor Serial void setup() { Serial.begin(9600);
// Activa el puerto Serial a 9600 Baudios
pinMode(13,OUTPUT); Zumbador
// Configura el Pin 13 como salida para el
}
void loop() { Serial.println(analogRead(A0));
// Envía al Serial el valor leído del Sensor MQ4
if(analogRead(A0) > valor_limite){ valor limite digitalWrite(13, HIGH);
// Si la medida de gas metano es mayor de
// Enciende el Zumbador conectado al Pin 13
} else{
// Si es menor del valor limite apaga el Zumbador
digitalWrite(13, LOW); } delay (300);
// Espera 300ms para realizar la próxima medida
}
Centro Educativo Guaymax Innovación, libertad y devoción por el aprendizaje
Carro
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
Cรณdigo carro control 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
5V
1, 9, 16
GND
4, 5, 12, 13
Centro Educativo 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(izqB, 0); delay (500); analogWrite(derA, vel); // Frente 2 segundos analogWrite(izqA, vel); delay (2000);
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
analogWrite(derA, vel); // Derecha 0,5 segundos analogWrite(izqA, 0); delay (500);
analogWrite(derA, 0);
// Izquierda 0,5 segundos
analogWrite(izqA, vel); delay (500);
analogWrite(derA, 0);
// Detiene los Motores
analogWrite(izqA, 0); delay (500); analogWrite(derB, vel); // Reversa 2 segundos analogWrite(izqB, vel); delay (2000); }
Cรณdigo carro control puente H prueba. Camino #2
/* Prueba del Puente H (L293D)
ARDUINO L293D(Puente H) 5
10
6
15
9
7
10
2
5V
1, 9, 16
GND
4, 5, 12, 13
Centro Educativo 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(izqB, 0); delay (500); analogWrite(derA, vel); // Frente 2 segundos analogWrite(izqA, vel); delay (2000);
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
analogWrite(derA, vel); // Derecha 0,5 segundos analogWrite(izqA, 0); delay (500);
analogWrite(derA, 0);
// Izquierda 0,5 segundos
analogWrite(izqA, vel); delay (500);
analogWrite(derA, 0);
// Detiene los Motores
analogWrite(izqA, 0); delay (500); analogWrite(derB, vel); // Reversa 2 segundos analogWrite(izqB, vel); delay (2000); } Cรณdigo carro control puente H, completo. /* Carro Inalambrico Bluetooth
ARDUINO L293D(Puente H) 5
10
6
15
9
7
10
2
5V
1, 9, 16
GND
4, 5, 12, 13
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
El motor 1 se conecta a los pines 3 y 6 del Puente H El motor 2 se conecta a los pines 11 y 14 del Puente H
La fuente de alimentacion de los Motores se conecta a tierra y el positivo al pin 8 del puennte H.
Conexion del Modulo Bluetooth HC-06 y el Arduino ARDUINO
Bluetooth HC-06
0 (RX)
TX
1 (TX)
RX
5V
VCC
GND
GND
!!Cuidado!! 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-SR04 ARDUINO
Ultrasonido HC-SR04
2
Echo
3
Trig
5V
VCC
GND
Gnd
*/ int izqA = 5; int izqB = 6; int derA = 9; int derB = 10; int vel = 255;
// Velocidad de los motores (0-255)
int estado = 'g';
// inicia detenido Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
int pecho = 2; int ptrig = 3;
// define el pin 2 como (pecho) para el Ultrasonido // 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(derB, 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(Serial.available()>0){
// lee el bluetooth y almacena en estado
estado = Serial.read(); } if(estado=='a'){
// Boton desplazar al Frente
analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, vel); analogWrite(izqA, vel); }
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
if(estado=='b'){
// Boton IZQ
analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, vel); } if(estado=='c'){
// Boton Parar
analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, 0); } if(estado=='d'){
// Boton DER
analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(izqA, 0); analogWrite(derA, vel); }
if(estado=='e'){
// Boton Reversa
analogWrite(derA, 0); analogWrite(izqA, 0); analogWrite(derB, vel); analogWrite(izqB, vel); }
if (estado =='f'){
// Boton ON, se mueve sensando distancia
Centro Educativo 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 = pulseIn(pecho, HIGH); distancia = (duracion/2) / 29;
// Lee el tiempo del Echo // calcula la distancia en centimetros
delay(10);
if (distancia <= 15 && distancia >=2){
// si la distancia es menor de 15cm
digitalWrite(13,HIGH);
// Enciende LED
analogWrite(derB, 0);
// Parar los motores por 200 mili segundos
analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, 0); delay (200);
analogWrite(derB, vel);
// Reversa durante 500 mili segundos
analogWrite(izqB, vel); delay(500);
analogWrite(derB, 0);
// Girar durante 1100 milisegundos
analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, vel); delay(1100);
digitalWrite(13,LOW);
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje
} else{
// Si no hay obstaculos se desplaza al frente
analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, vel); analogWrite(izqA, vel); } } if(estado=='g'){
// Boton OFF, detiene los motores no hace nada
analogWrite(derB, 0); analogWrite(izqB, 0); analogWrite(derA, 0); analogWrite(izqA, 0); } }
Centro Educativo Guaymax Innovaciรณn, libertad y devociรณn por el aprendizaje