# 2 Programación en bloques mBlock

# Instalando mBlock

{{@13341}}

# Dos formas de programar en mBlock

#### <span style="color: rgb(22, 145, 121);"><span style="color: #169179;"><span style="font-size: 23.324px;">**DOS FORMAS DE PROGRAMAR EN MBLOCK** </span></span></span>

<span style="color: rgb(22, 145, 121);"><span style="color: #169179;"><span style="font-size: 23.324px;"><span style="color: rgb(0, 0, 0);">Como vemos, mBlock permite dos formas de programar :</span></span></span></span>

<span style="color: rgb(0, 0, 0);"><span style="font-size: 23.324px;">{{@7552#bkmrk-}}</span></span>

#### <span style="color: rgb(22, 145, 121);"><span style="color: #169179;"><span style="font-size: 23.324px;">**OPCIÓN**</span></span> **Programación en vivo**</span>

El programa reside en el ordenador, y en la placa hay instalado un Firmware para ir escuchando y ejecutando lo que manda el ordenador.

- **VENTAJAS** 
    - Te permite interactuar el robot y el ordenador, por ejemplo podemos hacer que cuando el detector de humedad detecte agua, que salga por pantalla un fondo acuático, o que pulsando una tecla del teclado se encienda un LED en la placa...
- **DESVENTAJAS**
    - **hay que cargar dentro del robot el Firmware exclusivo de mBlock** para que Arduino haga caso a mBlock
    - Hay que tener **nuestro ordenador como intermediario**, **se come los recursos** y puede que nuestro programa vaya lento
    - Por supuesto necesita tener ordenador conectado al robot, o sea, trabaja como un esclavo del ordenador.

#### <span style="color: rgb(22, 145, 121);">**OPCIÓN Programación cargar a la placa**</span>

Todos los programas editores de Arduino (tanto los que programan con código como el Arduino IDE) como los editores de programas gráficos en bloque (mBlock, Snap4Arduino, Arduinoblocks, ...) permiten cargar el programa en la placa. Las ventajas y desventajas son las opuestas de trabajar en vivo.

<p class="callout success">{{@7552#bkmrk-en-vivo-%C2%BFqu%C3%A9-es-eso%3F}}</p>

# Métodos para interactuar los objetos y el robot (dispositivo)

Si queremos que nuestro robot se pueda comunicar con el objeto o objetos que tenga mBlock, antes con mBlock 3.0 la comunicación era inmediata, fíjate en este script de una alarma:

[![embedded-image-xGEexnUg.jpeg](https://libros.catedu.es/uploads/images/gallery/2022-02/scaled-1680-/embedded-image-xgeexnug.jpeg)](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-xgeexnug.jpeg)

Mezcla en el mismo script:

- órdenes específicas de la placa arduino (set digital...)
- órdenes específicas del objeto que exista en mBlock (por defecto el oso panda) say .... switch costume to ....
- órdenes del fondo switch backdrop to ...

Con mBlock 5.0 **YA NO SE PUEDE**, pero tenemos unos trucos

## <span style="color: rgb(22, 145, 121); background-color: rgb(255, 255, 255);">**MÉTODO UTILIZAR VARIABLES GLOBALES**</span>

Se pueden crear variables, en cualquier objeto, y las lee cualquier objeto,

<p class="callout warning">**<span style="text-decoration: underline;">Este método se utiliza con la opción EN VIVO</span>**</p>

[![variablesglobales.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/variablesglobales.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/variablesglobales.jpg)

De esta manera si creamos una variable **frase** para todos los objetos:

[![frase3.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/frase3.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/frase3.jpg)

Podemos usarla en el robot

[![frase1.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/frase1.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/frase1.jpg)

y el programa del objeto que queramos, en este caso el oso panda lo puede visualizar

[![frase2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/frase2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/frase2.jpg)

## <span style="color: rgb(22, 145, 121); background-color: rgb(255, 255, 255);">**MÉTODO UTILIZAR MENSAJES**</span>

Cualquier objeto tiene a su disposición enviar mensajes a los otros

<p class="callout warning">**<span style="text-decoration: underline;">Este método se utiliza con la opción EN VIVO</span>**</p>

[![mensajes.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/mensajes.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/mensajes.jpg)

## <span style="color: rgb(22, 145, 121); background-color: rgb(255, 255, 255);">**MÉTODO EXTENSIÓN BROADCAST = TRANSMITIR MENSAJES**</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">**Este método se utiliza con la opción EN CARGA**</span></p>

Es parecido al anterior, hay que ir al + que hay abajo para instalar extensiones

[![arduino-pelotahinchadistancia3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia3.png)

Buscar la extensión "Broadcast" e instalarla

[![broadcast.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/broadcast.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/broadcast.jpg)

Se instala primero descargándola con el + aquí

[![broadcast1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/broadcast1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/broadcast1.png)

Y luego añadir una vez descargada

[![broadcast2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/broadcast2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/broadcast2.png)

Entonces aparecen unas nuevas instrucciones

[![broadcast3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/broadcast3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/broadcast3.png)

y se instalan unas instrucciones extras parecidas a las anteriores pero más potentes

- En el mismo mensaje podemos transmitir valores asociados
- Funciona **EN MODO CARGA**
    - Esto es muy útil pues hay instrucciones que sólo se pueden utilizar en modo CARGA, de esta manera podemos pasar valores de la placa electrónica a los objetos del ordenador (oso panda o lo que sea) simplemente teniendo conectado la placa con el ordenador.

<p class="callout success">El resto de objetos trabajan en modo vivo, es decir, si cambias un bloque, automáticamente se ven los efectos</p>

<p class="callout success">A lo otros objetos TAMBIÉN hay que instalar la extensión BROADCAST</p>

<p class="callout warning">**DESVENTAJA** no se pueden transmitir mensajes de objetos a la placa. Sólo de la placa a los objetos</p>

# Preparando mBlock y Arduino

Hay que hacer dos cosas

- Cuando te descargas **mBlock** por defecto está preparado para utilizarlo con los robots (mBot), hay que decirle que no vamos a conectar un robot, que la placa será **Arduino UNO**
- Nuestro **ARDUINO** no pueden entender mBlock por lo que hay que grabarle un software dentro (un software que se graba en una placa hardware se llama **FIRMWARE**, no se borra cuando se apaga) y este firmware entiende lo que le manda mBlock, es decir, si conectamos otro Arduino y no le hemos grabado el firmware, no entenderá a mBlock.

Lo mejor un tutorial muy breve:

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--1" src="https://docs.google.com/presentation/d/e/2PACX-1vRLqEoJCT355xMCeCXsd0Wc7JcJRk9JkwLCyzEPb_h1S2IbYKK7OdUf33yWRIXq216Zgh9Da7-gIOq1/embed?start=false&loop=false&delayms=3000" width="960"></iframe>

# INTERRUPTOR CREPUSCULAR

## <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

#### **<span style="color: rgb(22, 145, 121);">SENSOR DE LUZ LDR</span>**

  
El LDR es una resistencia que varía su valor con la luz, cuanto <span style="text-decoration: underline;">más OSCURO más grande es su valor</span>, por lo tanto por la ley de Ohm V= I\*R este módulo nos da una señal analógica (voltios) que aumenta con la oscuridad. Para saber más del LDR te recomendamos [esta página de Luis Llamas.](https://www.luisllamas.es/medir-nivel-luz-con-arduino-y-fotoresistencia-ldr/)

Los valores analógicos en el Arduino van desde 0 a 1023, luego hay que elegir un valor umbral, el cual, a partir de ese valor es un valor digital 1 o un 0, nosotros hemos elegido 500.

Por hardware puedes regular el potenciómetro que tiene el módulo para que produzca el cambio cuando lo desees:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-oqwqe1w7.jpeg)

#### <span style="color: rgb(22, 145, 121);">**MODULO LED RGB**</span>

Este módulo tiene 4 pines que podemos proporcionar valores analógicos desde 0V a 5V para conseguir diferentes colores:  
  
Pines B = Blue G = Green R = Red (-) = GND  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-tiesxuv1.jpeg)

<p class="callout warning">Recuerda que Arduino tiene entradas digitales, entradas analógicas, salidas digitales, **pero no tiene salidas analógicas.** En vez de ello tiene salidas PWM ¿Qué no sabes lo que es? 🤔 eso es porque te has saltado un capítulo anterior.  
</p>

De momento conectaremos el pin G (Green) a una salida digital normal (pin 7), luego sólo se puede encender o apagar.  
  
Más adelante usaremos los colores Blue y Red a salidas PWM  
  
En [esta página](https://tkkrlab.nl/wiki/Arduino_KY-016_3-color_LED_module) puedes encontrar más detalles de este módulo y un ejemplo curioso de utilización sin cables.

### <span style="color: rgb(22, 145, 121);">**RETO**</span>

- Cuando el sensor LDR detecte oscuridad
    
    
    - El led RGB se enciende verde
    - Cambiamos a fondo tipo "noche"
- En caso contrario
    
    
    - el led RGB está apagado
    - el fondo es día

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

- El módulo LDR lo conectamos al pin analógico A0
- El LED RGB lo conectamos
    
    
    - Pin 5 digital - Blue
    - Pin 6 digital - Red
    - Pin 7 digital - Green

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-cojet41i.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución Video**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--2" src="//www.youtube.com/embed/c_eyV8aCdvk" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución programa**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3255351](https://planet.mblock.cc/project/3255351)

Utilizaremos la técnica variables globales [https://libros.catedu.es/books/domotica-con-arduino/page/programacion-mblock](https://libros.catedu.es/books/domotica-con-arduino/page/dos-formas-de-programar-en-mblock)

**Objeto placa arduino**

Nota: el pin digital 3 bajo es por si tienes puesto el buzzer, para que no suene, lo veremos más adelante.

[![interruptor-crepuscular1.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/interruptor-crepuscular1.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/interruptor-crepuscular1.jpg)

**Objeto panda**

[![interruptor-crepuscular2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/interruptor-crepuscular2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-12/interruptor-crepuscular2.jpg)

# APERTURA PUERTA

### <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

##### <span style="color: rgb(22, 145, 121);">**SERVOMOTORES**</span>  


Visita [esta página](https://libros.catedu.es/books/programa-arduino-mediante-codigo/page/control-de-servomotores) para que veas dos vídeos y entiendas la diferencia entre:

- *Servos convencionales*
- Servos de rotación contínua

[![servo.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/servo.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/servo.jpg)  
![](https://libros.catedu.es/assets/servo.jpg)Tranquilo, que el servo que nos interesa es un **servo convencional** donde simplemente se fija el ángulo con la instrucción en mBlock  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-mvq4mgta.jpeg)  
  
Si quieres saber más sobre servos te aconsejamos visitar [esta página de Luis Llamas.](https://www.luisllamas.es/controlar-un-servo-con-arduino/)

#### <span style="color: rgb(22, 145, 121);">**INTERRUPTOR** </span><span style="color: #169179;">**TÁCTIL**</span>

  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-jr7x0ry2.jpeg)  
  
No tiene mucho misterio: detecta una acumulación de carga y dispara un pulso positivo. Si quieres saber más mira [esta página de Luis Llamas.](https://www.luisllamas.es/interruptor-touchless-con-arduino-y-sensor-capacitivo/)

##### <span style="color: rgb(22, 145, 121);">**BUZZER ACTIVO**</span>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-r3w7vric.jpeg)  
  
La diferencia con el pasivo es que no es necesario enviarle pulsos para que emita una frecuencia, sólo tenemos que dar la orden y él reproduce un tono.  
  
**Ojo que funciona con lógica negativa** es decir:

- *si queremos que **suene** tenemos que enviar un **LOW**.*
- si queremos que **no suene** tenemos que enviar un **HIGH**

Si quieres saber más de este componente visita [esta página](https://www.luisllamas.es/arduino-buzzer-activo/)

### <span style="color: rgb(22, 145, 121);">**RETO**</span>

Cuando se pulse el interruptor 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 y cambiando el color el sprite del Panda de mBlock
    - Se cierra la puerta

(sería como una llave táctil)

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

- pin 2 digital: El interruptor táctil touchless.
- pin 3 digital: El buzzer activo.
- pin 4 digital: Servo de la puerta.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-l8ml7eri.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución Video**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--3" src="//www.youtube.com/embed/bBA3GEhLmRg" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución programa**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3251877](https://planet.mblock.cc/project/3251877)

Se utiliza la técnica de envío de mensajes [https://libros.catedu.es/books/domotica-con-arduino/page/programacion-mblock](https://libros.catedu.es/books/domotica-con-arduino/page/dos-formas-de-programar-en-mblock)

**El dispositivo ARDUINO**

[![domotica-aperturapuerta1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/8zKdomotica-aperturapuerta1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/8zKdomotica-aperturapuerta1.png)

**El objeto OSO PANDA**

[![domotica-aperturapuerta2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/nbzdomotica-aperturapuerta2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/nbzdomotica-aperturapuerta2.png)

El objeto **puerta** tiene este sencillo programa:

[![domotica-aperturapuerta3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-aperturapuerta3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-aperturapuerta3.png)

# ALARMA AGUA

### <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

##### <span style="color: rgb(22, 145, 121);">**SENSOR DE AGUA**</span>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-1eo71lti.jpeg)  
  
Es un sensor muy sencillo: Al mojar los conductores, aumenta la conductibilidad y se traduce en una salida HIGH en su pin de salida **S**.   
Si quieres saber más de este sensor visita [esta página de Luis Llamas.](https://aprendiendoarduino.wordpress.com/2018/10/17/sensor-deteccion-de-agua-para-arduino/)  
  
Con sólo tener los dedos húmedos ya lo detecta.  
  
Hay que tener en cuenta que sólo queremos detectar AGUA o NO AGUA, o sea digital. Hay otros sensores de humedad que están indicados para medir la humedad del suelo, (tienen forma de dos pinchos para clavarlos) en estos casos que queremos medir la cantidad de humedad la señal es más precisa y analógica. [Ver](https://www.luisllamas.es/arduino-humedad-suelo-fc-28/)

### <span style="color: rgb(22, 145, 121);">**RETO**</span>

Si detecto agua : Aviso de agua en el fondo y en el objeto Panda y cierro la puerta pues entra el agua de la lluvia con el mismo procedimiento que en apartado anterior.

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

- Pin D8 : Sensor de agua

El esquema el sensor de agua es uno de humedad, pero no había otro en Fritzing 😳

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-l4yr2xgc.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución Vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/VqUBA445Two" width="560"></iframe>

<span style="color: rgb(22, 145, 121);">**Solución programa**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3255438](https://planet.mblock.cc/project/3255438)

Se utiliza la técnica de variables globales [https://libros.catedu.es/books/domotica-con-arduino/page/programacion-mblock](https://libros.catedu.es/books/domotica-con-arduino/page/dos-formas-de-programar-en-mblock)

Dispositivo ARDUINO

[![domotica-agua1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-agua1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-agua1.png)

Objeto Oso panda

[![domotica-agua2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-agua2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-agua2.png)

# JOYSTICK

### <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

##### **<span style="color: rgb(22, 145, 121);">JOYISTICK</span>**

Yo no sé qué tiene este componente que llama la atención a los chavales  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-2crh6z96.jpeg)

  
  
Así que vamos a aprovecharlo: Tiene 2 potenciómetros según los ejes X e Y y un interruptor central. Las dos primeras salidas son analógicas, el *microruptor (cuando presionas el joystick)* lo trataremos también analógico, pues nos faltarán entradas y salidas digitales cuando lleguemos al final y queramos poner un Bluetooth.  
  
Si quieres saber más de este componente visita [esta página. de Luis LLamas](https://www.luisllamas.es/arduino-joystick/)

<span style="color: rgb(22, 145, 121);">**SALIDAS PWM**</span>  
  
Como Arduino no tiene valores de salida analógicos, utilizaremos los pines PWM (~) para simular tensiones variables de salida.   
  
De esta manera la luz Roja y Azul serán variables pudiendo crear el ambiente que queramos.

<p class="callout success">**¿No sabes lo que es PWM (~)?**  eso es que no te has leído los capítulos anteriores  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-tsoqgcru.png)  
</p>

### <span style="color: rgb(22, 145, 121);">**RETO**</span>

- Si muevo en el eje X el Joystick la luz RGB se enciende AZUL proporcionalmente a la inclinación del mando Joystick.
- Si muevo en el eje Y el Joystick la luz RGB se enciende ROJO proporcionalmente a la inclinación del mando Joystick.
- Si pulso el Switch central
    
    
    - Si la puerta estaba cerrada la abre
    - Si la puerta estaba abierta, la cierra, con los avisos correspondientes.
- Además vamos a complicar el reto Y TIENE QUE INCLUIR 
    - Lo visto en interruptor crepuscular: 
        - Si es luz&lt;500 se hace de noche, tanto en el fondo com el oso panda
        - se enciende la luz verde del led RGB
    - Lo visto en la apertura y cierre de la puerta con el sensor táctil exterior 
        - - si se pulsa el sensor táctil exterior, se abre la puerta, tanto la real, como la del objeto
            - se mantiene abierta durante 5 segundos
            - avisa que va a cerrar la puerta con tres avisos, el led13 parpadeando y el objeto avisando
            - se cierra la puerta, tanto la real como la del objeto
    - Lo visto en alarma agua, pero modificado 
        - si hay agua objeto gotera aparece y suena pitido

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

Al ser un componente analógico lo conectaremos en las entradas analógicas: \* La salida eje X que gradúa la luz azul en A1 \* La salida eje Y que gradúa la luz roja en A2 \* La salida Switch central en A3 ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-wlt65hwc.jpeg)

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/jPvQin9iFTE" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución esquema**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3255492](https://planet.mblock.cc/project/3255492)

Se ha utilizado el truco DE ENVIOS MENSAJES BROADCAS ver [https://libros.catedu.es/books/domotica-con-arduino/page/programacion-mblock](https://libros.catedu.es/books/domotica-con-arduino/page/dos-formas-de-programar-en-mblock)

<p class="callout warning">Elegimos esta opción pues el programa es muy complejo para ejecutarlo EN VIVO es mejor cargar, y que la placa Arduino envíe los mensajes correspondientes. Si se realiza EN VIVO da problemas</p>

Para ir simplificando se ha utilizado la creación de bloques, y cada mensaje que envía la placa Arduino lo recogerá un objeto

<span style="text-decoration: underline;">**DISPOSITIVO ARDUINO**</span>

Ejecuta siempre los 4 bloques

[![DOMOTICA-JOYSTICK1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/cd3domotica-joystick1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/cd3domotica-joystick1.png)

Bloque NOCHE

[![DOMOTICA-JOYSTICK2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick2.png)

Bloque AGUA

[![DOMOTICA-JOYSTICK3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick3.png)

Bloque PULSADOR

[![DOMOTICA-JOYSTICK4.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick4.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick4.png)

Bloque ABERPUERTA-Y-DESPUESICERRA

[![DOMOTICA-JOYSTICK5.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick5.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick5.png)

Finalmente bloque JOYSTICK -RGB que lee los pines de entrada A2 y A3.

Son valores desde 0 hasta +1024 pero la posición central del Joystick está en 500, luego tenemos que contar desde 500 hasta 1024, luego hay que convertirlos a 0-255

Esos valores ya normalizados transmitirlos a los pines digitales donde está conectado el pin rojo y azul del led RGB por PWM

[![DOMOTICA-JOYSTICK6.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick6.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick6.png)

<span style="text-decoration: underline;">**OBJETO OSO PANDA** </span>

recoge la LUZ

[![DOMOTICA-JOYSTICK7.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick7.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick7.png)

<span style="text-decoration: underline;">**El OBJETO PUERTA**</span>

Que recoge los mensajes del sensor táctil

[![DOMOTICA-JOYSTICK9.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick9.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick9.png)

<span style="text-decoration: underline;">**OBJETO WATER**</span>

recoge el mensaje gotera y aparece si hay

[![DOMOTICA-JOYSTICK10.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-joystick10.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-joystick10.png)

# ALARMA LASER

## <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

El diodo láser es un elemento motivador, barato y fácil de usar con el Arduino pues se activa digitalmente:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-2elvyhy0.png)

Si quieres saber más de este componente, te recomendamos [esta página de Luis Llamas](https://www.luisllamas.es/diodo-laser-arduino/). Si tienes que comprar uno, te recomendamos que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo \[[+info](https://cuidatuvista.com/punteros-laser-juguetes-ojos/)\]. El modelo que te proponemos es de 1mW, no obstante, **EVITA SIEMPRE QUE EL LÁSER APUNTE A LOS OJOS** especialmente con niños.

## <span style="color: rgb(22, 145, 121);">**Reto**</span>

- **ALARMA**
    - 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, también por pantalla
        - El laser de apaga.
- Mantenemos la alarma **agua**
    - Si se detecta agua, suena un aviso, también por pantalla
- Mantenemos el **pulsador exterior**
    - Si se pulsa, la puerta se abre y se mantiene 5seg
    - Se cierra automáticamente pero antes avisa, con un led y por pantalla
- Mantenemos el **Joystick**
    - Si se mueve, se visualiza el led RGB colores azul y verde
    - si se pulsa se abre la puerta

No mantenemos la programación del interruptor crepuscular pues necesitamos el LDR para la alarma

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-n93i2glp.png)

#### <span style="color: rgb(22, 145, 121);">**Solución maqueta**</span>

En este caso **hay que tener cuidado con la fijación del láser y el LDR para que apunte al LDR** y otra cuestión son los cables: al instalarse fuera de la casa hay que utilizar cables largos o añadir dos M-H consecutivos.

- Hemos utilizado dos fijaciones con alambre el LDR para que quede fijo.
- En el láser hemos fijado con una chincheta para fijar el láser además de alambre
- Truco, si la maqueta va a estar fija, una buena gota con la pistola de pegamento es mano de santo para que se quede fijo

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-z6pifppp.jpeg)

#### **<span style="color: rgb(22, 145, 121);">Solución conexiones eléctricas</span>**

- 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
- El resto: Joystick, detector fuego, sensor de agua, igual que las páginas anteriores

#### **<span style="color: rgb(22, 145, 121);">Solución vídeo</span>**

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/3O7UwfKRlrI" width="560"></iframe>

#### <span style="color: rgb(22, 145, 121);">**Solución programa**</span>

El programa lo tienes aquí [https://planet.mblock.cc/project/3255982](https://planet.mblock.cc/project/3255982)

Principalmente el difícil es el bloque Alarma

[![DOMOTICA-ALARMA.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-alarma.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-alarma.png)

Los otros objetos

Objeto puerta

[![DOMOTICA-ALARMA2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-alarma2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-alarma2.png)

Objeto gota

[![DOMOTICA-ALARMA3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-alarma3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-alarma3.png)

Objeto Policia

[![DOMOTICA-ALARMA4.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-alarma4.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-alarma4.png)

## <span style="color: rgb(22, 145, 121);">**Otra opción**</span>

En vez de un láser, con un SENSOR DISTANCIA POR ULTRASONIDOS  
![](https://catedu.github.io/programa-arduino-mediante-codigo/img/Captura_de_pantalla_2015-04-01_a_las_22.48.19.png)  
  
Este sensor mide las distancias utilizando el eco:  
  
 *Un* ojo *marcado con la T es un altavoz: Emite un sonido ultrasónico fuera de lo audible*  El otro *ojo* marcado con una R es un micrófono que detecta el pulso emitido por T.  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-pv9zy9hg.jpeg)  
  
Por software hay que calcular la distancia utilizando la fórmula v=e/t donde v es la velocidad del sonido.  
  
Si quieres saber más de este sensor mira esta página de [Luis Llamas.](https://www.luisllamas.es/medir-distancia-con-arduino-y-sensor-de-ultrasonidos-hc-sr04/)

 su código en mBlock es muy sencillo:  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-lyr8ivs9.jpeg)  
  
Podríamos usar uno más profesional, por ejemplo [DETECTOR DE MOVIMIENTO CON ARDUINO Y SENSOR PIR](https://www.luisllamas.es/detector-de-movimiento-con-arduino-y-sensor-pir/), pero su ángulo de sensibilidad es tan abierto que todo el rato se dispara. (un rollo si se utiliza en clase).

Reto alternativo

- Si se pulsa el botón de activación
    
    
    - Si la alarma no está activada
        
        
        - **Activa** la alarma, es decir *está vigilando*.
    - Si la alarma está activada
        
        
        - **Desactiva** la alarma, *deja de vigilar*.
    - Si la alarma está disparada
        
        
        - Anula el disparo y desactiva la alarma
- Si la alarma está activada:
    
    
    - Está encendido el led verde para indicar que *está vigilando*.
    - Si detecta un *intruso* a menos de 10 cm
        
        
        - Se **dispara** la alarma, es decir se enciende la luz roja y el buzzer de forma intermitente, no se apaga hasta que se pulsa el interruptor.

Conexiones

- Entradas y salidas digitales
    
    
    - D3 Buzzer
    - D5 Blue de led RGB
    - D6 Red de led RGB
    - D7 Green de led RGB
    - D12 Echo del sensor de ultrasonidos
    - D13 Trg del sensor de ultrasonidos
- Entradas y salidas analógicas
    
    
    - A4 Pulsador

Video

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--8" src="//www.youtube.com/embed/RB7K16FhHlg" width="560"></iframe>

El programa lo puedes descargar [aquí](https://drive.google.com/open?id=1bV5VehaV7vf1eMwBAjru-LZ0Wh9E75Wq) pero realizado en mBlock3

# BLUETOOTH pasos previos

### <span style="color: rgb(22, 145, 121);">**Conocimientos previos**</span>

{{@3000#bkmrk-tienes-que-visitar-l}}

{{@3000#bkmrk-%C2%BFqu%C3%A9-es-el-hc-06%3F-la}}

{{@3000#bkmrk-aprende-a-configurar}}

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--1" src="https://docs.google.com/presentation/d/e/2PACX-1vT0vG1z61MuZXKmdiw4ga7z15FlQfeussqDNYzMauJSZUU2G2NlL7M-JjXb4PFT4YTigj9Yal8PzHmR/embed?start=false&loop=false&delayms=3000" width="100%"></iframe>

{{@3000#bkmrk-configuraci%C3%B3n-avanza}}

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--0" src="https://docs.google.com/presentation/d/e/2PACX-1vSCv2j25rIQxh6pHjMM4n4AXttDDetQPL93qMrYfQO2p-BVC6tSzeRVgU7nVq4_pXEnLedrvF7LTM4V/embed?start=false&loop=false&delayms=3000" width="960"></iframe>

##### <span style="color: rgb(22, 145, 121);">**En mBlock INSTALAR LA EXTENSIÓN HC-06**</span>

Entramos en Extensión

[![DOMOTICA-BLUETOOTH1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth1.png)

Y ponemos en el buscador HC-06 nosotros hemos elegido esta, pero podría ser otra, es cuestión de experimentar

[![DOMOTICA-BLUETOOTH2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth2.png)

IMPORTANTE

- SOLO FUNCIONA CARGANDO EL PROGRAMA en vivo no
- NO PUEDES USAR ESTAS INTRUCCIONES DENTRO DE UN BLOQUE no entiendo por qué, si alguien lo consigue que me lo diga

[![DOMOTICA-BLUETOOTH3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth3.png)

##### <span style="color: rgb(22, 145, 121);">**Un ejemplo: Apertura simple de la puerta**</span>

Conectamos:

- RX del HC-06 en 12
- TX del HC-06 en 11
- El servo de la puerta en D4

y el código es:

[https://planet.mblock.cc/project/3481632](https://planet.mblock.cc/project/3481632)

[![mblock-bluetooch-simpleapartura.png](https://libros.catedu.es/uploads/images/gallery/2024-02/scaled-1680-/mblock-bluetooch-simpleapartura.png)](https://libros.catedu.es/uploads/images/gallery/2024-02/mblock-bluetooch-simpleapartura.png)

.

# BLUETOOTH

### <span style="color: rgb(22, 145, 121);">**Reto**</span>

{{@3000#bkmrk-controlar-nuestra-ca}}

{{@3000#bkmrk-comando-voz-dato-des}}

{{@3000#bkmrk-lo-tienes-que-hacer-}}

##### <span style="color: rgb(22, 145, 121);">**Solución conexiones eléctricas**</span>

{{@3000#bkmrk-conectaremos-vcc-y-g}}

##### <span style="color: rgb(22, 145, 121);">**Solución vídeo**</span>

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/UGP6Oq95dfE" width="100%"></iframe>

##### **<span style="color: rgb(22, 145, 121);">Solución programa</span>**

El programa lo tienes aquí : [https://planet.mblock.cc/project/3259600](https://planet.mblock.cc/project/3259600)

Todo este código, si lo pongo en un bloque, NO FUNCIONA, no sé por qué, así que a lo bruto en el bloque principal

[![DOMOTICA-BLUETOOTH4.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth4.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth4.png)

Total que el programa del <span style="text-decoration: underline;">dispositivo Arduino </span>queda bastante monstruoso

[![DOMOTICA-BLUETOOTH5.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth5.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth5.png)

<span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;">Objeto puerta</span></span>

[![DOMOTICA-BLUETOOTH6.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth6.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth6.png)

<span style="text-decoration: underline;">Objeto gotera</span>

[![DOMOTICA-BLUETOOTH7.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/domotica-bluetooth7.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/domotica-bluetooth7.png)

<span style="text-decoration: underline;">Objeto policia</span>

[![DOMOTICA-BLUETOOTH8.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/45ydomotica-bluetooth8.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/45ydomotica-bluetooth8.png)