# 3 Programación en código # Entorno de programación {{@2938}} # Maqueta Compramos una hoja de **cartón piedra** de formato A3 (el doble de un folio) y lo cortamos por la mitad a la larga, y en dos cuadrados la otra mitad. En uno de esos cuadrados recortamos la puerta, en total sólo 3 paredes y el suelo es la otra parte de arriba:  La mejor forma de pegarlo es con pistola, pero también clavando agujas o las dos a la vez. Para ir poniendo los componentes lo más fácil y reciclable es perforar, con una simple punta de bolígrafo:  Y atarlo con alambre plastificado típicos de las bolsas de pan de molde:  El soporte del servomotor con la puerta es difícil, una opción es pegarlo con una pistola de pegamento.  Tanto el cartón piedra como el alambre se puede conseguir en cualquier bazar a precios muy económicos. Otra opción para la apertura de la puerta es usar un palillo : [](https://libros.catedu.es/uploads/images/gallery/2023-05/2023-05-12-19-11-44-vid20230510235454-mp4-google-drive.png) # APERTURA DE PUERTA ## **Reto** Esta vez vamos a centrarnos con la apertura de la puerta, dejaremos el LDR para la alarma - Cuando se pulse el interruptor táctil (sería como una llave táctil) - Se abre la puerta - Al cabo de 5 segundos, tiempo suficiente para entrar - Se avisa que la puerta se va a cerrar con 3 pulsos buzzer - Se cierra la puerta - Por la pantalla del ordenador saldrán mensajes de apertura y cierre ##### **Solución maqueta** Esta vez en la maqueta ponemos los siguientes elementos 1. Fijación placa Arduino 1. Fijación placa Arduino 1. Interruptor táctil 1. Buzzer 1. Servo 1. Portapilas  Detalle por delante 1. Interruptor táctil 2. Fijación servo 3. Fijación servo 4. Puerta \*si, ya sé, un poco chapuza ¿y qué pasa? \*  ##### **Solución esquema de conexiones** Es el mismo mostrado en [APERTURA DE LA PUERTA](https://libros.catedu.es/24-apertura-puerta.md), pero ahora vamos montando la maqueta: 1. Terminales GND 2. Terminales +5V 3. Terminales Servo van aparte (ver nota) con D4 al control del servo 4. Terminales 1. D2 Interruptor táctil 2. D3 Buzzer activo 5. Interruptor táctil 6. Buzzer activo 7. Servo 8. Led el pin largo en D13 y el corto en GND.  > Nota: El servo al tener terminales hembra, se ha optado por conectarlo directamente en la placa protoboard utilizando machos machos como el de la figura:  > **Nota**: Sí, ya sé que conectar el **LED DIRECTAMENTE EN D13 no es una buena práctica,** pero internamente Arduino tiene unas resistencias en cada entrada/salida de 30k que lo puede aguantar, o sea, no es lo correcto pero no pasa nada (y como es muy cómodo, y necesitamos espacio, optamos por lo práctico). Si lo pones al revés no funcionará (no se estropea nada pero asegúrate el pin largo al D13 y el corto al GND). ##### **Solución video** ##### **Solución código** [https://create.arduino.cc/editor/javierquintana/f89a2537-117b-4140-806f-5c79ef4f684a/preview](https://create.arduino.cc/editor/javierquintana/f89a2537-117b-4140-806f-5c79ef4f684a/preview) # JOYSTICK ## **Reto** Ahora vamos a utilizar el Joystick para dos intenciones: - Aprovechando el SWITCH central: - Si se hace una pulsación larga: - la puerta se abre (si estaba cerrada) - o se cierra (si estaba abierta) - El mando del Joystick nos regulará una luz ambiental - El eje X en azul - El eje y el rojo - Un valor intermedio es un valor de los dos ##### **Solución maqueta** Vamos ampliando nuestra casa domótica con la luz RGB y el Joystick: 1. Joystick fijado en la pared 2. Led RGB fijado en la pared 3. Conexiones Joystick en entradas analógicas 4. Conexiones de RGB a las salidas digitales  ##### **Solución esquema eléctrico** Es igual que cuando vimos [Joystick:](https://libros.catedu.es/26-joystick.md) 1. Terminales GND del led RGB y del Joystick 2. Terminal +5V del Joystick 3. Otra opción de conectar el terminal GND 4. Otra opción de conectar +5V y las demás conexiones igual que antes: - D5 PWM al Rojo del RGB (tiene que ser PWM) - D6 PWM al Azul del RGB (tiene que ser PWM) - D7 al Verde del RGB (luego lo utilizaremos) - A1 al EJEX JOYSTICK - A2 al EJEY JOYSTICK - A3 al SWITCH JOYSTICK
Nota: El microruptor del Joystick es digital luego lo apropiado es conectarlo en una entrada salida digital, pero como vamos escasos de entradas y salidas digitales (ya verés como esto se complica), lo trataremos como analógico.
 ##### **Solución vídeo** ##### **Solución código** [https://create.arduino.cc/editor/javierquintana/f4dfc995-5a42-4d45-a911-238f67b0c169/preview](https://create.arduino.cc/editor/javierquintana/f4dfc995-5a42-4d45-a911-238f67b0c169/preview) # ALARMA AGUA ## **Reto** Ahora vamos a utilizar el sensor de agua para prevenir "accidentes" en casa - Si el sensor de agua detecta líquido - Suena una alarma de 10 pulsos mientras esté funcionando - Si la puerta estuviera abierta - La cierra pues entraría agua ##### **Solución esquema eléctrico** - Sensor de Agua en D8 igual que vimos en la parte de bloques - Alimentación GND y +5V del sensor de agua o en 1 y 2 o en 3 y 4  ##### **Solución vídeo** ##### **Solución código** [https://create.arduino.cc/editor/javierquintana/3eaca00b-a7b7-4357-a191-c5cfd33c004a/preview](https://create.arduino.cc/editor/javierquintana/3eaca00b-a7b7-4357-a191-c5cfd33c004a/preview) # FUEGO**ATENCIÓN hemos pensado la utilización del sensor de fuego sólo en la parte de CODIGO, pues es para nivel de secundaria.** **Implica la utilización de un mechero, con el peligro que conlleva. Utilizar este ejemplo en clase bajo responsabilidad y supervisión del docente.**
## **Reto** Tenemos que hacer dos programaciones \* Activar o no la alarma \* cuando hay una pulsación larga en el pulsador escondido, se activa o se desactiva la alarma \* si se ha disparado la alarma tiene que apagarla \* Disparo de la alarma \* Si la alarma está actividad, vigilando y se produce una detección, la alarma tiene que sonar hasta que la desactivamos con una pulsación larga del pulsador. ##### **Solución maqueta** Fijaremos en la pared el sensor llama que lo vimos anteriormente en 2.7 y el pulsador de activación o no de la alarma. 1. Sensor llama 2. Pulsador analógico 3. Conexión sensor llama a la entrada digital 4. Conexión del pulsador analógico a la entrada analógica Las alimentaciones de los dos sensores igual que en las páginas anteriores.  ##### **Solución esquema eléctrico** - Sensor llama a D9 - Pulsador analógico a A4 ##### **Solución vídeo** ##### **Solución código** [https://create.arduino.cc/editor/javierquintana/fce4e1a9-c2c2-4806-9540-04c3d26c04bd/preview](https://create.arduino.cc/editor/javierquintana/fce4e1a9-c2c2-4806-9540-04c3d26c04bd/preview) # LÁSER {{@2992#bkmrk-el-diodo-l%C3%A1ser-es-un}} {{@2992#bkmrk-}} {{@2992#bkmrk-si-quieres-saber-m%C3%A1s}} ## **Reto** - Si activo la alarma el láser tiene que encenderse - Una vez activada si se corta el láser, por lo tanto el valor del LDR sube, la alarma se dispara. - Si desactivo la alarma - La alarma se apaga si se ha disparado - El laser de apaga. ##### **Solución vídeo** ##### **Solución maqueta** {{@2992#bkmrk-en-este-caso-hay-que}} {{@2992#bkmrk-hemos-utilizado-dos-}} {{@2992#bkmrk--1}} ##### **Solución conexiones eléctricas** - La alimentación del láser y el del LDR igual que en los casos anteriores - El control del LÁSER a la salida digital D10 - La lectura del LDR a la entrada analógica A0 **Solución código**Aquí lo tienes [https://create.arduino.cc/editor/javierquintana/dfca79db-6299-47c1-beef-7db3350c2cee/preview](https://create.arduino.cc/editor/javierquintana/dfca79db-6299-47c1-beef-7db3350c2cee/preview)
# BLUETOOTH APP->ARDUINO ## Conocimientos previos Tienes que visitar las siguientes páginas de la [Unidad 4 Comunicaciones con Arduino](https://catedu.github.io/programa-arduino-mediante-codigo/arduino_y_mvil.html): - ¿Qué es el [HC-06](https://catedu.github.io/programa-arduino-mediante-codigo/mdulo_bluetooth.html)? - [La APP](https://catedu.github.io/programa-arduino-mediante-codigo/la_app.html) que tienes que intalarte - [Vincular tu móvil con el HC-06](https://catedu.github.io/programa-arduino-mediante-codigo/vincular_mvil.html) con tu móvilAprende a configurar los botones de la APP !! diapositiva 12 pero en vez de Up, Down, Right y Left los que se establezcan en el reto
[Configuración avanzada](https://catedu.github.io/programa-arduino-mediante-codigo/configuracion_avanzada.html) pues **nosotros somos pitos, y conectaremos el HC-06 en los pines digitales D11 y D12** y no en D0 y D1 pues están ocupados con la comunicación del ordenador. El RX del HC-06 en 11 y el TX del HC-06 en el 12
### **RETO BÁSICO: Apertura de puerta y encendido láser.** **Enunciado reto básico** Vamos a realizar : - Que desde la APP ->Placa - Con el comando A abre la puerta - Con el comando R que cierre la puerta - Con el comando L que se encienda o se apague el láser (es decir, si estaba encendido, que se apague, y viceversa) **Conexiones reto básico** - Bluetooth HC-06 RX al 12 y TX al 11 - Puerta servo D4 - Láser al D10 [](https://libros.catedu.es/uploads/images/gallery/2024-02/domotica-simple-laser.png) El programa es este [https://create.arduino.cc/editor/javierquintana/88cfa21b-a86c-428c-95c4-a89a62a9218d/preview](https://create.arduino.cc/editor/javierquintana/88cfa21b-a86c-428c-95c4-a89a62a9218d/preview) **Reto básico Resultado** [https://www.youtube.com/shorts/vSjZBe\_iEIQ](https://www.youtube.com/shorts/vSjZBe_iEIQ) ### **Reto avanzado** Controlar nuestra casa con el móvil, para ello vamos a definir los siguientes comandos:| COMANDO | VOZ | DATO | descripción |
|---|---|---|---|
| Comando 1 | abrir | A | abrir la puerta y cierra automáticamente |
| Comando 2 | puerta | P | abrir/cerrar la puerta |
| Comando 3 | alarma | L | activar/desactivar la alarma |
| Comando 4 | pit | T | hace un pit |
| Comando 5 | rojo | R | enciende luz interior roja |
| Comando 6 | azul | B | enciende luz interior azul |
| Comando 7 | apaga | O | apaga luces interiores |
Recuerda que con la APP que existen en GOOGLE PLAY como la utilizada en el capítulo anterior [https://libros.catedu.es/books/domotica-con-arduino/page/bluetooth](https://libros.catedu.es/books/domotica-con-arduino/page/bluetooth-app-arduino-I6y) la comunicación es PLACA<-APP
### **RETO BÁSICO** **Enunciado reto básico** Vamos a realizar : - Que desde la APP ->Placa - Con el comando A abre la puerta - Con el comando R que cierre la puerta - Con el comando L que se encienda o se apague el láser (es decir, si estaba encendido, que se apague, y viceversa) - Que desde la Placa ->APP - Si detecta ladrón que avise **Conexiones reto básico** - Bluetooth HC-06 RX al 12 y TX al 11 - Puerta servo D4 - Láser D10 apuntando al LDR - Sensor LDR D9 [](https://libros.catedu.es/uploads/images/gallery/2024-02/arduino-domotica-basico-bidireccional-bluetooth-bb.png) **RETO BÁSICO LA APP EN APP INVENTOR** los pasos son parecidos a los tratados en [https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks](https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks)Lo tienes en [https://gallery.appinventor.mit.edu/?galleryid=286eb7c2-792d-436c-b7d0-3d9e1e0592aa](https://gallery.appinventor.mit.edu/?galleryid=286eb7c2-792d-436c-b7d0-3d9e1e0592aa)
Para llevar la APP al móvil mira [https://libros.catedu.es/books/arduino-en-el-aula/page/llevar-la-app-creada-en-app-inventor-al-movil](https://libros.catedu.es/books/arduino-en-el-aula/page/llevar-la-app-creada-en-app-inventor-al-movil) **RETO BÁSICO PROGRAMA EN EL ARDUINO CON CODIGO**El programa lo tienes aquí [https://create.arduino.cc/editor/javierquintana/ea8fa750-8cd1-48fd-8ea1-65bac09b78ce/preview](https://create.arduino.cc/editor/javierquintana/ea8fa750-8cd1-48fd-8ea1-65bac09b78ce/preview)
**BUG**: Cuando el laser pasa de APAGADO a ENCENDIDO, el LDR es más lento que el programa Arduino y detecta LADRÓN luego desaparece, pero ya se ha quedado el fondo de pantalla rojo. **RETO**: Habría que poner un pequeño retardo delay(500); para solucionar este problema ¿Dónde?
**Resultado video** **[https://www.youtube.com/shorts/RZ\_0EX4OulI?feature=share](https://www.youtube.com/shorts/RZ_0EX4OulI?feature=share)** **** ### **RETO AVANZADO** Como en la página anterior ##### **RETO AVANZADO LA APP EN APP INVENTOR** los pasos son parecidos a los tratados en [https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks](https://libros.catedu.es/books/arduino-en-el-aula/page/app-tdr-steam-app-inventor-blocks) Pero en la vista de **Designer**, hemos añadido más botones, imagen, etc... [](https://libros.catedu.es/uploads/images/gallery/2023-12/designer.jpg) Y la vista de **Blocks** es más completa [](https://libros.catedu.es/uploads/images/gallery/2023-12/mlGblocks.png) El programa lo tienes aquí : [https://gallery.appinventor.mit.edu/?galleryid=b4979892-5df3-4225-90be-538a64d469e0](https://gallery.appinventor.mit.edu/?galleryid=b4979892-5df3-4225-90be-538a64d469e0) ##### **RETO AVANZADO** **EL PROGRAMA EN EL ARDUINO** Y hemos modificado el programa en Arduino para que envíe los comandos por bluetoothBusca los comandos **Serial1.print(...);**
[https://create.arduino.cc/editor/javierquintana/b2c39d6f-d0ef-44e2-bb5b-2d9351dddb94/preview](https://create.arduino.cc/editor/javierquintana/b2c39d6f-d0ef-44e2-bb5b-2d9351dddb94/preview) ##### **RETO AVANZADO** **RESULTADO** [https://youtu.be/gtuJzYvTBJM](https://youtu.be/gtuJzYvTBJM)