# Cyberpi y mBot2

Cyberpi es una placa basada en ESP32 con sensores, salidas, conectividad wifi y Bluetooth. Con esta placa es ya un robot independiente.  
mBot2 es un robot que necesita Cyberpi y amplia sus posibilidades a lo mecánico.

# Introducción

# Objetivos y contenidos

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

- **CYBERPI**
    - Conocer Cyberpi, sonidos, leds, display, sensor movimientos, joystick, Lan e IoT
- **mBOT2**
    - Conocer mBot2, sensor luz, evita obstáculos, sigue líneas, control remoto, etc..
- **Programación** Dos posibilidades de realizar el curso 
    - Programación gráfica en bloques mBlock adecuado para 3º ciclo primaria y ESO
    - Programación en código Python adecuado para 4ESO y superior

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

- Conocer las posibilidades didácticas del robot Cyberpi y de mBot2 
    - Trabajar en diferentes entornos de los actuadores y sensores que tienen estos robots.
- Desarrollar prácticas de comunicaciones en robótica 
    - Internet de las cosas (IoT)
- Conocer y desarrollar posibilidades avanzadas, como el uso de la Inteligencia Artificial

# Pensamiento computacional

¿Dónde se encaja este robot? ¿Se puede comparar este robot con otros robots de otros cursos que hacemos desde CATEDU?

Esta es la hoja de ruta que proponemos, no se tiene que tomar al pie de la letra, pero intenta ayudar al profesorado que tenga una visión global de tanta oferta robótica:

Como se puede ver **CYBERPI + MBOT2** tiene la ventaja de ser un robot de suelo con muchas posibilidades y para muchas etapas.

{{@4518}}

# Lenguajes de programación

mBot, mBot2 se puede programar

- Por bloques principalmente con mBlok
- Por código principalmente Python

{{@13859}}

# Muro

[https://padlet.com/CATEDU/mbot2](https://padlet.com/CATEDU/mbot2)

<iframe allow="camera;microphone;geolocation;display-capture;clipboard-write" frameborder="0" src="https://padlet.com/embed/ii9sgtvy7xlkutmn" style="width: 100%; height: 608px; display: block; padding: 0; margin: 0;"></iframe>

<div class="padlet-embed" id="bkmrk--1" style="border: 1px solid rgba(0,0,0,0.1); border-radius: 2px; box-sizing: border-box; overflow: hidden; position: relative; width: 100%; background: #F4F4F4;"><div style="display: flex; align-items: center; justify-content: end; margin: 0; height: 28px;">[<div style="display: flex; align-items: center;">![Hecho con Padlet](https://padlet.net/embeds/made_with_padlet_2022.png)</div>](https://padlet.com?ref=embed)</div></div>

# mBlock5

{{@13340}}

# En VIVO o EN CARGA ¿Eso que es?

{{@11514}}

# Cyberpi

# Conocer Cyberpi

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

<span style="color: rgb(0, 0, 0);">Cyberpi <span style="text-decoration: underline;">ya es un robot</span>, tipo placa electrónica, basado en ESP32 por lo tanto con Wifi y Bluetooh integrado y se le incorporan los suiguientes **SENSORES Y ACTUADORES**</span>

[![2024-05-16 20_42_23-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-20-42-23-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-20-42-23-cyberpi-guia-1-pdf-xchange-viewer.png)

[![2024-05-16 21_03_57-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-21-03-57-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-21-03-57-cyberpi-guia-1-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

##### <span style="color: rgb(22, 145, 121);">**<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/8WCQO9w8qtQ" width="560"></iframe>** </span>

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

<span style="color: rgb(22, 145, 121);">**[![2024-05-16 21_32_56-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-21-32-56-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-21-32-56-cyberpi-guia-1-pdf-xchange-viewer.png)** <span style="color: rgb(0, 0, 0);">{{@12107#bkmrk-manual-de-cyberpi-ht}}</span>  
</span>

- <span style="color: rgb(0, 0, 0);">**Puerto para conexión de tarjetas de extensión** : La tarjeta Cyberpi esta diseñada para conectarse al chasis del robot mBot2, así como otros shields comerciales para esta placa. por ejemplo el de la figura:  
    [![2024-05-16 21_39_06-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-21-39-06-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-21-39-06-cyberpi-guia-1-pdf-xchange-viewer.png)  
    *Fuente: [ Guia Cyberpi Robotix ](https://www.robotix.es/ebook/cyberpi-guia.pdf)con permiso del autor*  
    </span>
- <span style="color: rgb(0, 0, 0);">**Puerto USB tipo C** para conectarnos con el PC e instalar los programas que deseemos, Se pueden añadir varios y seleccionar con el Joystick cual ejecuta.</span>
- <span style="color: rgb(0, 0, 0);">**Puerto para Conexión módulos electrónicos**:, con protocolos serie I2C, permite conexión de diferentes módulos, sin necesidad de tener más puertos, simplemente conectando todos en serie.</span>

*[![2024-05-16 21_33_23-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-21-33-23-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-21-33-23-cyberpi-guia-1-pdf-xchange-viewer.png)* {{@12107#bkmrk-manual-de-cyberpi-ht}}

### <span style="background-color: rgb(255, 255, 255); color: rgb(22, 145, 121);">**SOFTWARE**</span>

Permite una programación en bloques con mBlock5 y con código con Python que también se puede hacer desde el mismo mBlock.

Para actualizar el Firmware instalado en Cyberpi, se tiene que hacer desde el mismo mBlock, [Aquí cómo se hace.](https://www.yuque.com/makeblock-help-center-en/cyberpi/pocket-start#chTiI)

Para ejecutar los programas que se graban en Cyberpi, se entra en **Cambiar programa** y seleccionando los programas cargados.

[![2024-05-16 22_27_07-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-22-27-07-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-22-27-07-cyberpi-guia-1-pdf-xchange-viewer.png)

[![2024-05-16 22_27_38-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-22-27-38-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-22-27-38-cyberpi-guia-1-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

 Si se quiere ejecutar los programas **predefinidos** mover el joystick en el menú anterior a la derecha, y encontramos los típicos: Nivel de voz, sigue líneas, ....

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

# Mi primer programa "Hola mundo"

Conectamos Cyberpi con el PC utilizando un cable USB tipo c

[![2024-05-16 22_29_10-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-22-29-10-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-22-29-10-cyberpi-guia-1-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

<p class="callout warning">OJO, hay cables baratos que sólo sirven para "cargar", el cable que necesitamos tiene que permitir la comunicación bidireccional.</p>

Entramos en mBlock5 **[https://ide.mblock.cc/](https://ide.mblock.cc/)** y añadimos el dispositivo CyberPi

[![2024-05-16 22_29_43-cyberpi-guia (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-22-29-43-cyberpi-guia-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-22-29-43-cyberpi-guia-1-pdf-xchange-viewer.png)

Una vez cargado el dispositivo CyberPi recomendamos entrar en la **conexión directa (**3) y pulsamos **Conectar** (4)

[![2024-05-16 23_31_11-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-23-31-11-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-23-31-11-mblock-block-based-ide-coding-for-beginners.png)

Al dar a **Conexión directa** nos da dos opciones, Bluetooth y Serie, elegimos **serie**

[![2024-05-17 13_00_51-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-13-00-51-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-13-00-51-window.jpg)

<p class="callout info">Nota: La conexión **Bluetooth** sólo es si tenemos el pincho asociado (se vende aparte) y permite una conexión en vivo inalámbrica.  
[![2024-05-17 13_04_08-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-13-04-08-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-13-04-08-window.jpg)</p>

Se abren los puertos disponibles, elegimos el que esté conectado nuestro Cyberpi

<p class="callout warning">Ojo: Tiene que estar **encendido**, si está con mClon, dar al interruptor on</p>

[![2024-05-17 13_02_27-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-13-02-27-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-13-02-27-window.jpg)

<p class="callout info">Al dar a **Conexión directa** desaparece el texto y aparece Conexión con **mLink ¿Qué es eso?** Es otra opción, que antes se hacía obligatoriamente si usabas mBlock online: Instalar el programa mLink (que se puede descargar en [https://www.mblock.cc/en/download/mlink/](https://www.mblock.cc/en/download/mlink/) ) y antes de entrar a mBlock online, tienes que ejecutar este programa y dejarlo minimizado. Aunque es una opción que puedes utilizar (y te evita la ventana anterior) la conexión directa es también cómoda.   
[![2024-05-17 13_10_07-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-13-10-07-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-13-10-07-window.jpg)</p>

Al conectar, nos aparecen instrucciones específicas de Cyberpi como instrucciones generales

[![2024-05-16 23_41_08-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-23-41-08-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-23-41-08-mblock-block-based-ide-coding-for-beginners.png)

Podemos empezar con nuestro primer programa

[![2024-05-16 23_45_30-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-23-45-30-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-23-45-30-mblock-block-based-ide-coding-for-beginners.png)

Le damos a **Cargar** , (luego aclaramos el modo En vivo qué es) y se ejecuta el programa

[![2024-05-16 23_46_23-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-23-46-23-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-23-46-23-mblock-block-based-ide-coding-for-beginners.png)

##### <span style="color: rgb(22, 145, 121);">**MODO VIVO ¿ESO QUÉ ES?**</span>

El modo vivo, permite interactuar con el PC, por ejemplo:

- **PC → Cyberpi** : Al pulsar la tecla espacio que diga Hola
- **PC← Cyberpi**  El oso panda diga también Hola Mundo!

[![2024-05-17 13_41_35-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-13-41-35-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-13-41-35-window.jpg)  
[https://www.youtube.com/shorts/tV1yhUV41lg?feature=share](https://www.youtube.com/shorts/tV1yhUV41lg?feature=share)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="849" src="https://www.youtube.com/embed/tV1yhUV41lg" title="May 17, 2024" width="478"></iframe>

<p class="callout danger">Si te fijas, Cyberpi está conectado con cable USB al PC pues estamos **En vivo** dependemos del ordenador. Si se quiere una conexión En vivo e Inalámbrica, es necesario comprar el pincho bluetooth</p>

##### <span style="color: rgb(22, 145, 121);">**UN POCO MÁS COMPLICADO**</span>

Podemos complicarlo un poco más para darle más colorido y sonido

[![2024-05-16 23_47_54-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-23-47-54-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-23-47-54-mblock-block-based-ide-coding-for-beginners.png)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="791" src="https://www.youtube.com/embed/h9m77WGDSYc" title="May 17, 2024" width="445"></iframe>

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

Para poder continuar con el curso, es necesario tener algunos conocimientos mínimos de programación en bloques, sobre todo el significado de los siguientes bloques

[![2024-07-16 12_18_07-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-12-18-07-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-12-18-07-mblock-v5-4-3.png)

- EVENTOS
- CONTROL
- OPERADORES
- VARIABLES
- MIS BLOQUES

Recomendamos visitar l**as páginas 30 al 42** {{@12107#bkmrk-pere-manel-verdugo-z}}

# Sonidos

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

La librería de Audio tenemos opciones interesantes

[![2024-05-17 13_58_00-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-13-58-00-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-13-58-00-window.jpg)

Podemos poner un programa sencillo

[![2024-05-17 14_00_55-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-14-00-55-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-14-00-55-window.jpg)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

Este programa empieza con el evento tecla espacio. Por lo tanto necesita el **Modo vivo**   
P: ¿Qué haríamos para no depender del ordenador, es decir, utilizar el modo cargar?  
R: Podemos usar otro tipo de eventos que no dependa del PC

[![2024-05-17 14_02_51-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-14-02-51-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-14-02-51-window.jpg)

##### <span style="color: rgb(22, 145, 121);">**Grabadora más sofisticado**</span>

Si entramos en los programas de ejemplo, podemos elegir Magical Recorder

[![2024-05-17 14_50_17-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-14-50-17-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-14-50-17-window.jpg)

Y funciona como una grabadora de bolsillo:

- Apretamos el joystick en la posición central, empieza la grabación
- Botón A termina la grabación
- Botón B reproduce la grabación

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

Si entramos en programas de ejemplo- Buzzer:

[![2024-05-17 14_43_55-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-14-43-55-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-14-43-55-window.jpg)

Toca una sirena:

[![2024-05-17 14_45_10-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-14-45-10-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-14-45-10-window.jpg)

Podemos jugar a reproducir notas

[![2024-05-17 14_41_11-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-14-41-11-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-14-41-11-window.jpg)

Teniendo en cuenta que sigue la notación inglesa. Equivalencia entre las notas anglosajonas, nota MIDI y frecuencias :

[![notes.gif](https://libros.catedu.es/uploads/images/gallery/2024-05/notes.gif)](https://libros.catedu.es/uploads/images/gallery/2024-05/notes.gif)

<span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">*Fuente: [Acústica musical](https://www.lpi.tel.uva.es/~nacho/docencia/ing_ond_1/trabajos_05_06/io2/public_html/escalas.html). ETS Univ Vallalodid*</span></span>

<p class="callout info">Más sobre audio con Cyberpi en [https://education.makeblock.com/help/mblock-block-based-device-cyberpi-audio/](https://education.makeblock.com/help/mblock-block-based-device-cyberpi-audio/)  
</p>

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

[![2024-07-16 12_00_00-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-12-00-00-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-12-00-00-mblock-v5-4-3.png)

{{@12107#bkmrk-manual-de-cyberpi-ht}}

<details id="bkmrk-%C2%BFqu%C3%A9-hace-este-progr"><summary>¿Qué hace este programa?</summary>

Va desplazando un led de izquierda a derecha hasta que recibe un sonido fuerte, (en ese momento enciende todas las luces, y emite un sonido) luego después de 3 segundos vuelve a empezar

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

[![2024-07-16 12_06_03-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-12-06-03-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-12-06-03-cyberpi-guia-pdf-xchange-viewer.png)

{{@12107#bkmrk-manual-de-cyberpi-ht}}

# LED

En el apartado de LED [![2024-07-03 18_31_52-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-18-31-52-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-18-31-52-cyberpi-guia-pdf-xchange-viewer.png)podemos realizar diferentes animaciones de la tira de Leds RGB que tiene Cyberpi, por ejemplo

[![2024-07-03 18_43_52-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-18-43-52-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-18-43-52-mblock-v5-4-3.png)

Otro ejemplo más animado sería

[![2024-07-03 18_48_39-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-18-48-39-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-18-48-39-mblock-v5-4-3.png)

Lo siento.... no lo podía evitar, si lo entiendes es que tienes la edad perfecta para la robótica 😁 para cambiar los colores, de los leds hacer doble clic en la muestra

[![2024-07-03 19_06_39-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-06-39-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-06-39-mblock-v5-4-3.png)

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

# Pantalla con textos

La pantalla OLED que incorpora Cyberpi nos permite muchas posibilidades. para ello entramos en [![2024-07-03 19_11_18-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-11-18-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-11-18-cyberpi-guia-pdf-xchange-viewer.png)

[![2024-07-03 19_22_45-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-22-45-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-22-45-mblock-v5-4-3.png)

[![2024-07-03 19_22_19-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-22-19-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-22-19-whatsapp.png)

Cómo puedes observar, si el texto no le cabe, automáticamente hace salto de línea. También puedes ver que no le gustan los acentos, ñ etc..

Puedes forzar el salto de línea con la instrucción :

[![2024-07-03 19_29_54-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-29-54-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-29-54-mblock-v5-4-3.png)

Y también podemos imprimir una etiqueta en la fila 1 a 8 pero ten en cuenta que si coincide, se sobrescribe. Por ejemplo este código:

[![2024-07-03 19_31_54-Introducción a Cyberpi.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-31-54-introduccion-a-cyberpi-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-31-54-introduccion-a-cyberpi-pdf.png)

{{@12107#bkmrk-pere-manel-verdugo-z}}

Los números no se borran, pero si hacemos este programa, se sobrescriben

[![2024-07-03 19_34_00-Introducción a Cyberpi.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-34-00-introduccion-a-cyberpi-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-34-00-introduccion-a-cyberpi-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

Si queremos que el texto se desplace como una marquesina, tenemos que usar un contador y fijar la etiqueta en coordenadas X e Y correspondientes:

[![2024-07-03 19_34_54-Introducción a Cyberpi.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-34-54-introduccion-a-cyberpi-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-34-54-introduccion-a-cyberpi-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

Las coordenadas X e Y :

[![2024-07-03 19_37_08-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-37-08-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-37-08-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

# Pantalla con gráficos

<span style="color: rgb(0, 0, 0);">La pantalla OLED integrada de Cyberpi esta muy bien conseguida, permite muchas posibilidades inalcanzables en otras placas como Microbit y Arduino R4 (me refiero a sus pantallas integradas). **Mira el primer minuto** de este vídeo y lo verás</span>

<span style="color: rgb(0, 0, 0);"><iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/iOqBUY6GFWM" width="560"></iframe>

</span>

##### <span style="color: rgb(22, 145, 121);">**Gráficos de líneas**</span>

Ahora realiza este ejercicio, como puedes ver va representando números aleatorios:

[![2024-07-03 19_49_54-Introducción a Cyberpi.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-49-54-introduccion-a-cyberpi-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-49-54-introduccion-a-cyberpi-pdf.png)

{{@12107#bkmrk-pere-manel-verdugo-z}}

Cambia el espaciado de 5 pixeles a 20 píxeles y notarás la diferencia. Aquí en este figura tienes un ejemplo

[![2024-07-09 22_39_39-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-09-22-39-39-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-09-22-39-39-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

Podemos pues hacer que visualice la lectura de los sensores, por ejemplo el de luz. Como podemos ver en el vídeo es bastante preciso.

<p class="callout warning">Nota: Cambia 30 por 300 para que te de tiempo a jugar con la luz</p>

[![2024-07-03 19_47_03-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-47-03-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-47-03-mblock-v5-4-3.png)

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

[https://www.youtube.com/shorts/JDbkvJcwSvw](https://www.youtube.com/shorts/JDbkvJcwSvw)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="634" src="https://www.youtube.com/embed/JDbkvJcwSvw" title="July 3, 2024" width="356"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Gráficos de barras**</span>

Este ejemplo (que se muestra en vivo, pero también lo puedes poner en forma cargar)

[![2024-07-09 22_41_21-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-09-22-41-21-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-09-22-41-21-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

Produce un gráfico de barras de dos columnas de datos :

[![2024-07-09 22_43_17-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-09-22-43-17-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-09-22-43-17-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

<details id="bkmrk-%C2%BFy-qu%C3%A9-har%C3%ADas-para-t"><summary>¿Y qué harías para tener 4 barras de diferentes colores?</summary>

[Si queremos esto   
![2024-07-09 23_44_52-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-09-23-44-52-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-09-23-44-52-cyberpi-guia-pdf-xchange-viewer.png)  
Tenemos que hacer  
[![2024-07-09 23_45_36-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-09-23-45-36-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-09-23-45-36-cyberpi-guia-pdf-xchange-viewer.png)

</details><p class="callout info">*Si quieres otro ejemplo más elaborado de gráficos de barras, en la página 15 del manual [Pere Manel Verdugo Zamora](http://peremanelv.com/mBlock/Introducci%C3%B3n%20a%20Cyberpi.pdf) podrás encontrar un ejemplo de simular un dado 100 veces.*</p>

##### <span style="color: rgb(22, 145, 121);">**Escribir tablas en la pantalla**</span>

La pantalla de Cyberpi permite tablas de 4x3 como máximo

[![2024-07-09 23_03_45-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-09-23-03-45-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-09-23-03-45-mblock-v5-4-3.png)

Este ejemplo

[![2024-07-09 23_04_46-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-09-23-04-46-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-09-23-04-46-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

Produce la salida siguiente

[![2024-07-09 23_05_42-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-09-23-05-42-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-09-23-05-42-cyberpi-guia-pdf-xchange-viewer.png)  
*Fuente: [ Guia Cyberpi Robotix ](https://www.robotix.es/ebook/cyberpi-guia.pdf)con permiso de la empresa.*

##### <span style="color: rgb(22, 145, 121);">**Y más...**</span>

Podemos fijar los colores con estas dos instrucciones:

[![2024-07-10 00_06_03-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-10-00-06-03-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-10-00-06-03-mblock-v5-4-3.png)

Podemos rotar la pantalla

[![2024-07-10 00_06_32-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-10-00-06-32-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-10-00-06-32-mblock-v5-4-3.png)

[![2024-07-10 00_08_24-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-10-00-08-24-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-10-00-08-24-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

Y también tenemos :

[![2024-07-10 00_07_12-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-10-00-07-12-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-10-00-07-12-mblock-v5-4-3.png)

##### <span style="color: rgb(22, 145, 121);">**Funciones trigonométricas**</span>

[![2024-07-16 12_03_05-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-12-03-05-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-12-03-05-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

[![2024-07-16 12_03_32-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-12-03-32-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-12-03-32-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

[![2024-07-16 12_03_59-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-12-03-59-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-12-03-59-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

# Movimientos

Ahora vamos a ver los programas en [![2024-07-12 14_01_28-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-12-14-01-28-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-12-14-01-28-mblock-v5-4-3.png)

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

Este sencillo programa podemos controlar el sprite según los movimientos definidos en Cyberpi

[![2024-07-12 13_51_58-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-12-13-51-58-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-12-13-51-58-mblock-v5-4-3.png)

<p class="callout warning">Ejecuta el anterior programa EN VIVO pues hay que mover el sprite</p>

En teoría estos son los movimientos :

[![2024-07-12 13_56_49-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-12-13-56-49-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-12-13-56-49-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

O montado con el mBot2 :

[![2024-07-18 09_34_32-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-09-34-32-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-09-34-32-mbot2-actividades-pdf.png)  
  
{{@12107#bkmrk-manual-mbot2-https%3A%2F}}

Pero no es fácil :

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

El siguiente script muestra por la pantalla de Cybperpi si esta en movimiento (*[Adaptado de Guia Cyberpi Robotix ](https://www.robotix.es/ebook/cyberpi-guia.pdf)con permiso de la empresa. José Manuel Ruiz Gutiérrez)*

[![2024-07-12 14_08_04-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-12-14-08-04-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-12-14-08-04-mblock-v5-4-3.png)

Resultado

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

Adaptado de {{@12107#bkmrk-manual-de-cyberpi-ht}}

[![2024-07-12 14_11_20-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-12-14-11-20-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-12-14-11-20-mblock-v5-4-3.png)

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

O este otro

[![2024-07-12 14_17_02-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-12-14-17-02-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-12-14-17-02-mblock-v5-4-3.png)

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

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

[![2024-07-12 14_25_57-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-12-14-25-57-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-12-14-25-57-mblock-v5-4-3.png)

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

El criterio de ángulos es ;

[![2024-07-12 14_27_25-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-12-14-27-25-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-12-14-27-25-cyberpi-guia-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

Un programa muy visual para ver la precisión que lo realiza es el siguiente:

[![2024-07-13 10_58_02-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-13-10-58-02-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-13-10-58-02-mblock-v5-4-3.png)

Como podemos ver, los ángulos superiores a 360 están permitidos y al revés, en sentido negativo también:

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="634" src="https://www.youtube.com/embed/4wNTi4bXuqc" title="July 13, 2024" width="356"></iframe>

Esto nos permite contar el número de vueltas que gira y su sentido.

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

También puede medir la aceleración en cualquiera de los tres ejes, por ejemplo este programa

[![2024-07-13 10_28_54-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-13-10-28-54-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-13-10-28-54-mblock-v5-4-3.png)

Este es el resultado

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

##### <span style="color: rgb(22, 145, 121);">**Un ejercicio interesante: Contador de pasos**</span>

[![2024-07-16 11_52_26-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-52-26-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-52-26-cyberpi-guia-pdf-xchange-viewer.png)

{{@12107#bkmrk-manual-de-cyberpi-ht}}

##### <span style="color: rgb(22, 145, 121);">**Visualización en forma de tabla de las inclinaciones**</span>

[![2024-07-16 11_54_22-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-54-22-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-54-22-cyberpi-guia-pdf-xchange-viewer.png)

{{@12107#bkmrk-manual-de-cyberpi-ht}}

Resultado :

[![2024-07-16 11_54_59-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-54-59-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-54-59-cyberpi-guia-pdf-xchange-viewer.png)

# Detección

##### <span style="color: rgb(22, 145, 121);">**Detección del Joystick y teclas A y B**</span>

Podemos hacer este mensaje en el Cybperpi

[![2024-07-13 23_02_49-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-13-23-02-49-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-13-23-02-49-mblock-v5-4-3.png)

aunque parece largo, es corto si se hace duplicar el if principal

En el objeto panda hacemos el programa:

[![2024-07-13 23_04_02-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-13-23-04-02-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-13-23-04-02-mblock-v5-4-3.png)

También es corto y fácil de hacer utilizando duplicar. Como te puedes imaginar, el resultado es el siguiente :

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

.

También puede contar el número de veces que se produce el evento.

El siguiente programa nos puede servir como "contador de personas manual"

[![2024-07-13 23_19_20-contador de personas manual - Buscar con Google.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-13-23-19-20-contador-de-personas-manual-buscar-con-google.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-13-23-19-20-contador-de-personas-manual-buscar-con-google.png)

[![2024-07-13 23_14_57-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-13-23-14-57-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-13-23-14-57-mblock-v5-4-3.png)  
Y el resultado es :  
<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="634" src="https://www.youtube.com/embed/pk5Y1KasHWE" title="July 13, 2024" width="356"></iframe>

<details id="bkmrk-%C2%BFpor-qu%C3%A9-existe-ese-"><summary>¿Por qué existe ese "espera" 0.1 segundos?</summary>

Para quitar los rebotes.  
Prueba quitarlo y verás

</details>También puede detectar las teclas A y B, como ya vimos en [SONIDOS](https://libros.catedu.es/books/cyberpi-y-mbot2/page/sonidos)

[![2024-05-17 14_00_55-Window.jpg](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-17-14-00-55-window.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-17-14-00-55-window.jpg)  
{{@12107#bkmrk-manual-de-cyberpi-ht}}

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

Podemos hacer este programa para ver la detección del sonido

[![2024-07-14 00_04_38-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-14-00-04-38-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-14-00-04-38-mblock-v5-4-3.png)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="849" src="https://www.youtube.com/embed/XyIchLJBwg8" title="July 14, 2024" width="478"></iframe>

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

La detección de la luz, que ya lo vimos en [gráficos](https://libros.catedu.es/books/cyberpi-y-mbot2/page/pantalla-con-graficos)

.

[![2024-07-03 19_47_03-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-03-19-47-03-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-03-19-47-03-mblock-v5-4-3.png)

[https://www.youtube.com/shorts/JDbkvJcwSvw](https://www.youtube.com/shorts/JDbkvJcwSvw)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="634" src="https://www.youtube.com/embed/JDbkvJcwSvw" title="July 3, 2024" width="356"></iframe>

Otro sensor que tiene incorporado es el nivel de batería

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

Con este programa tenemos un cronómetro sencillo

[![2024-07-14 00_10_27-cyberpi-guia - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-14-00-10-27-cyberpi-guia-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-14-00-10-27-cyberpi-guia-pdf-xchange-viewer.png)

{{@12107#bkmrk-manual-de-cyberpi-ht}}

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

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

<span style="color: rgb(0, 0, 0);">Que sólo tienen sentido si Cyyberpi esta montado en una extensión, por ejemplo el chasis mbot2</span>

[![2024-07-14 07_40_54-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-14-07-40-54-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-14-07-40-54-mblock-v5-4-3.png)

[![2024-07-14 07_39_30-Clipboard.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-14-07-39-30-clipboard.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-14-07-39-30-clipboard.png)

Un ejemplo de detección

Puedes experimentar las diferentes fuerzas, velocidades con este script en vivo.

Lo tienes en [https://planet.mblock.cc/project/3576507](https://planet.mblock.cc/project/3576507)

[![2024-07-16 11_24_40-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-24-40-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-24-40-mblock-v5-4-3.png)


<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="849" src="https://www.youtube.com/embed/CHmDIuNYW28" title="July 16, 2024" width="478"></iframe>

# LAN

##### <span style="color: rgb(22, 145, 121);">**Conectarse a la Wifi método por programación**</span>

<span style="color: rgb(0, 0, 0);">Podemos poner en la programación las órdenes necesarias para que el Cyberpi se conecte a la red Wifi, la instrucción básica la tienes en la pestaña IoT   
[![2024-07-16 10_35_07-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-10-35-07-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-10-35-07-mblock-v5-4-3.png) </span>

<span style="color: rgb(0, 0, 0);">[![2024-07-15 23_36_45-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-15-23-36-45-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-15-23-36-45-mblock-v5-4-3.png)</span>

<span style="color: rgb(0, 0, 0);">Pero tiene la desventaja de que no nos informa el estado. Este script es más elaborado</span>

[![2024-07-15 23_42_27-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-15-23-42-27-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-15-23-42-27-mblock-v5-4-3.png)

##### <span style="color: rgb(22, 145, 121);">**Conectarse a la Wifi método rápido**</span>

<span style="color: rgb(0, 0, 0);">Otra manera es utilizar el programa mismo mBlock</span>

<span style="color: rgb(0, 0, 0);">[![2024-07-15 23_21_14-Documento1 - Microsoft Word.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-15-23-21-14-documento1-microsoft-word.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-15-23-21-14-documento1-microsoft-word.png)</span>

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

Para identificar nuestro equipo, necesitamos saber su nombre para diferenciarlos de otros, tenemos en en bloque de detección

[![2024-07-14 08_17_40-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-14-08-17-40-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-14-08-17-40-mblock-v5-4-3.png)

[![2024-07-14 08_18_21-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-14-08-18-21-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-14-08-18-21-whatsapp.png)

El nombre del equipo se puede ajustar aquí :

[![2024-07-14 08_20_24-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-14-08-20-24-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-14-08-20-24-mblock-v5-4-3.png)

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

Una vez que estamos conectados, los diferentes CYBERPI que están dentro de una LAN pueden enviarse mensajes con estas instrucciones

[![2024-07-15 23_23_41-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-15-23-23-41-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-15-23-23-41-mblock-v5-4-3.png)

<p class="callout warning">Ojo, sólo si están dentro de la misma LAN es decir, fuera de la red local los Cyberpi no se ven con estas instrucciones.</p>

<p class="callout warning">También el router puede separar diferentes LANs [para saber más](https://libros.catedu.es/books/resolucion-de-problemas-tecnologicos-y-digitales/chapter/redes)</p>

<p class="callout warning">Por defecto esta en el canal 6 pero puedes hacer subgrupos en distintos canales el 1 y el 11 con la instrucción "pon el canal de la LAN a .... y los miembros de un canal no pueden ver a los de otro canal distinto.</p>

##### <span style="color: rgb(22, 145, 121);">**PROGRAMA EJEMPLO enviar la bienvenida**</span>

Vamos a poner este programa (en los dos el mismo) en dos cyberpis <span style="text-decoration: underline;">conectados a la misma wifi </span>(si no aparece en el código es por que se ha utilizado el método rápido) :

[![2024-07-15 23_32_12-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-15-23-32-12-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-15-23-32-12-mblock-v5-4-3.png)

El resultado es

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="849" src="https://www.youtube.com/embed/MC2YySyHPsA" title="July 15, 2024" width="478"></iframe>

##### **<span style="background-color: rgb(251, 238, 184);">... Y EN EL CASO DE QUE SÓLO TENGO UN CYBERPI ???? </span>**

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

Instalamos la extensión BROADCAST

[![2024-07-18 11_50_37-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-11-50-37-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-11-50-37-mblock-v5-4-3.png)

El código es parecido

[![2024-07-18 11_52_29-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-11-52-29-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-11-52-29-mblock-v5-4-3.png)

Y lo subimos **y dejamos conectado el cyberpi con el PC**

**[![2024-07-18 11_53_54-.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-11-53-54.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-11-53-54.png)**

##### <span style="color: rgb(22, 145, 121);">**En el Sprite (o sea el panda)**</span>

<span style="color: rgb(0, 0, 0);">Instalamos la extensión broadcast (que se llama difusión) para las imágenes anidadas</span>

[![2024-07-18 11_55_24-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-11-55-24-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-11-55-24-mblock-v5-4-3.png)

Y creamos el siguiente programa para el sprite

[![2024-07-18 11_56_19-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-11-56-19-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-11-56-19-mblock-v5-4-3.png)

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

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

# ¿Qué es IoT?

{{@5133}}

# IoT

En esta pestaña tenemos elementos que nos permiten usar Internet para enviar mensajes o recoger información :

[![2024-07-16 11_08_49-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-08-49-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-08-49-mblock-v5-4-3.png)

Para utilizar muchos elementos de IoT es necesario utilizar los servidores de Makeblock por lo tanto **hace falta estar logueados**

**[![2024-07-16 11_14_07-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-14-07-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-14-07-mblock-v5-4-3.png)**

##### <span style="background-color: rgb(255, 255, 255); color: rgb(22, 145, 121);">**PROGRAMA EJEMPLO enviar la bienvenida**</span>

Vamos a poner este programa, [QUE ES SUPER PARECIDO AL QUE HEMOS VISTO EN LAN](https://libros.catedu.es/books/cyberpi-y-mbot2/page/lan) los dos cyberpis conectados a la wifi (**NO HACE FALTA QUE SEA LA MISMA**) :

[![2024-07-16 11_12_34-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-12-34-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-12-34-mblock-v5-4-3.png)

En este vídeo ESTAN CONECTADOS A DISTINTAS WIFIS (uno en una wifi del router, SSID catedu y otro en un móvil con datos SSID catedu2) por lo tanto **NO PERTENECEN A LA MISMA LAN**, podrían estar en cualquier parte del mundo con tal que estén conectados a Internet, y al loguearte, comparten los datos que hay en tu carpeta del servidor, "*tu nube de usuario*".

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="849" src="https://www.youtube.com/embed/r6oZwfoR4_o" title="July 16, 2024" width="478"></iframe>

<p class="callout success">**RETO**: si te fijas, se repite el mensaje, es decir, en el cyberpi LUCIA vuelve a salir Tú te llamas LUCIA (también aparece en el Cyberpi de ISABEL) ¿Cómo evitarías esto?</p>

##### <span style="color: rgb(22, 145, 121);">**PROGRAMA RECOGIDA DE DATOS CLIMÁTICOS**</span>

También permite recoger datos climáticos, que nos proporciona los servidores de Makeblock, por ejemplo:

[![2024-07-16 11_29_24-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-29-24-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-29-24-mblock-v5-4-3.png)

[![2024-07-16 11_30_03-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-11-30-03-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-11-30-03-whatsapp.png)

<p class="callout success">P: ¿Por qué se ha elegido ACTUR ZARAGOZA como localidad de Calidad de Aire? ¿No puedo poner Fuentes Claras?  
R : En todos sitios no hay estaciones de calidad de aire con datos públicos, uno está en Actur y es el que se ha elegido.</p>

# mBot2

# ¿Qué es mBot2?

Hay que entender mBot2 **como un chasis a CyberPi** es decir, el rotot es CyberPi y le añadimos sensores y actuadores que es mBot2

[![2024-07-16 14_12_24-mbot2-actividades - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-14-12-24-mbot2-actividades-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-14-12-24-mbot2-actividades-pdf-xchange-viewer.png)

{{@12107#bkmrk-manual-mbot2-https%3A%2F}}

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

Permite el control de la velocidad y de la posición pues están codificados (motores paso a paso o motores con un detector de posición) por lo tanto permite movimientos precisos y colocar mBot2 en lugares exactos.

Comparandolo con mBot1 su control se realizaba por más o menos potencia a los motores, lo que provocaba desviaciones indeseadas.

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

Más preciso que su anterior. y además tiene unos leds que permite más interacción

[![2024-07-16 14_26_54-mbot2-actividades - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-14-26-54-mbot2-actividades-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-14-26-54-mbot2-actividades-pdf-xchange-viewer.png)

{{@12107#bkmrk-manual-mbot2-https%3A%2F}}

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

Es un sigue líeas más avanzado pues permite detectar cruces de 90ª pues tiene 4 sensores frente a los 2 que tenía mBot1

Además tiene un sensor de color lo que permite conocer en qué posición de la línea estamos.

[![2024-07-16 14_29_03-mbot2-actividades - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-16-14-29-03-mbot2-actividades-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-16-14-29-03-mbot2-actividades-pdf-xchange-viewer.png)  
{{@12107#bkmrk-manual-mbot2-https%3A%2F}}

Para que el sensor interprete los colores que pertenecen a la línea mirar el vídeo :

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

# Cómo usar mBot2 en mBlock

Podemos instalar diréctamente mBot2, lo interpreta como un chasis de Cyberpi

1. Vamos a extensión luego vamos a buscarlo en **extensión**
2. Buscamos mBot2 descargar
3. Añadir

[![2025-04-07 14_02_01-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-07-14-02-01-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-07-14-02-01-mblock-v5-4-3.png)

Se instarán estos conjuntos de instrucciones :

[![2024-07-16 14_20_35-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/SoL2024-07-16-14-20-35-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/SoL2024-07-16-14-20-35-mblock-v5-4-3.png)

# Mis primeros pasos

##### <span style="color: rgb(22, 145, 121);">**Control remoto con el teclado**</span>

Vamos a realizar **EN VIVO** este programa

[![2025-04-07 13_53_09-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-07-13-53-09-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-07-13-53-09-mblock-v5-4-3.png)

Como puedes ver es puedes controlar el robot pero esta "atado" al ordenador, esa es la desventaja de programar EN VIVO

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

<p class="callout success">El contenido a partir de aquí es de esta página es de {{@12107#bkmrk-pere-manel-verdugo-z}}</p>

Vamos a realizar este programa, primero una pantalla de bienvenida:

[![2024-07-17 10_13_25-Capitulo 1 (mBot Demostración de movimiento).pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-13-25-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-13-25-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

Luego interactuamos con el joystick y el movimiento:

[![2024-07-17 10_14_34-Capitulo 1 (mBot Demostración de movimiento).pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-14-34-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-14-34-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

[![2024-07-17 10_15_18-Capitulo 1 (mBot Demostración de movimiento).pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-15-18-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-15-18-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}  
[![2024-07-17 10_15_45-Capitulo 1 (mBot Demostración de movimiento).pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-15-45-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-15-45-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}  
[![2024-07-17 10_16_04-Capitulo 1 (mBot Demostración de movimiento).pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-16-04-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-16-04-capitulo-1-mbot-demostracion-de-movimiento-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

Cargamos estos programas **EN MODO CARGA**

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

<span style="color: rgb(22, 145, 121);">**<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/LwjqWchbUl0" width="560"></iframe>** </span>

<p class="callout success"><span style="color: rgb(0, 0, 0);">El contenido de esta página es de {{@12107#bkmrk-pere-manel-verdugo-z}}</span></p>

# Jugando con la luz

##### <span style="color: rgb(22, 145, 121);">**mBot2 se quiere ir de marcha nocturna**</span>

Podemos hacer que el mBot2 se vaya de marcha nocturna

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

Un programa muy muy sencillo es este **hay que jugar con los valores de 20 y 50 según las condiciones de tu aula**

[![2025-04-07 12_01_56-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-07-12-01-56-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-07-12-01-56-mblock-v5-4-3.png)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/M3gOvOOQ-NA" title="mBot2 se quiere ir de marcha nocturna" width="458"></iframe>

Es muy espectacular hacerlo con los alumnos, se deja el aula a oscuras, se encienden todas las luces y todo baila !

[![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-jxuku5zj.jpeg)](https://www.pscp.tv/w/1YqJDLrpOPOJV)

<p class="callout success">No te quedes con sólo girar, hazle piruetas, juegos de luces etc... </p>

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

Podemos hacer este sencillo programa que avanza si hay luz, o va dando vueltas (lo busca) si no hay

[![2025-04-07 12_14_26-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-07-12-14-26-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-07-12-14-26-mblock-v5-4-3.png)

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

<p class="callout success">Puedes alterar el programa de tal manera que si no hay luz, que haga giros más largos, retroceda...</p>

# Evitar obstáculos I

##### <span style="color: rgb(22, 145, 121);">**Mi primer "Evita obstáculos"**</span>

Sugerimos un programa sencillo

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

[![2025-04-07 11_53_00-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-07-11-53-00-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-07-11-53-00-mblock-v5-4-3.png)

Como puedes ver, cuando hay un obstáculo a menos de 15cm (puedes modificar este número) retrocede un poco, gira y así evita el obstáculo. Si no hay objeto, pues avanza

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/r7fsP2kA9xY" title="evita obstáculo mBot2" width="458"></iframe>

##### <span style="color: rgb(22, 145, 121);">**El Evita obstáculos de programas de ejemplo**</span>

<p class="callout warning">Acuérdate que para manejar el sensor de distancia, hay que instalar la extensión correspondiente. Ver [https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock](https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock)</p>

El script que proponemos es el que se encuentra en "Programas de ejemplo ":

[![2025-04-01 20_45_43-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-01-20-45-43-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-01-20-45-43-mblock-v5-4-3.png)

<p class="callout success">El contenido a partir de aquí es de {{@12107#bkmrk-pere-manel-verdugo-z}}</p>

[![2024-07-17 10_24_10-Capitulo 2 Evitar obstaculos con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-24-10-capitulo-2-evitar-obstaculos-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-24-10-capitulo-2-evitar-obstaculos-con-mbot2-pdf.png)  
[{{@12107#bkmrk-pere-manel-verdugo-z}}](https://www.youtube.com/watch?v=Nx1mIV6vddk)

La distancia de 8cm es arbitraria y también la elección de hacerlo al azar o no.

Podemos añadir

[![2024-07-17 10_26_31-Capitulo 2 Evitar obstaculos con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-26-31-capitulo-2-evitar-obstaculos-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-26-31-capitulo-2-evitar-obstaculos-con-mbot2-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

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

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

<p class="callout success">El contenido de esta página es de {{@12107#bkmrk-pere-manel-verdugo-z}}</p>

# Evitar obstáculos II

<p class="callout success">El contenido de esta página es de {{@12107#bkmrk-pere-manel-verdugo-z}}</p>

<p class="callout warning">Acuérdate que para manejar el sensor de distancia, hay que instalar la extensión correspondiente. Ver [https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock](https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock)</p>

<p class="callout info">Ahora, en vez de elegir al azar como Evitar obstáculos I qué dirección a girar, en este caso vamos a realizar un proyecto en el cual nuestro mBot2 tiene que detectar un objeto cuando esté a menos de 10 cm. En este momento se tiene que para y comprobar la distancia que hay a su derecha y la distancia que hay a su izquierda, siempre tendrá que ir por la dirección donde el obstáculo está más lejos.   
[![2024-07-17 10_47_52-Detectar obstáculos y girar donde la distancia a un objeto sea mayor.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-47-52-detectar-obstaculos-y-girar-donde-la-distancia-a-un-objeto-sea-mayor-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-47-52-detectar-obstaculos-y-girar-donde-la-distancia-a-un-objeto-sea-mayor-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}  
</p>

[![2024-07-17 10_48_48-Detectar obstáculos y girar donde la distancia a un objeto sea mayor.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-48-48-detectar-obstaculos-y-girar-donde-la-distancia-a-un-objeto-sea-mayor-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-48-48-detectar-obstaculos-y-girar-donde-la-distancia-a-un-objeto-sea-mayor-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

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

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

# Sigue líneas I

##### <span style="color: rgb(22, 145, 121);">**Mi primer siguelíneas**</span>

El sigue líneas más sencillo es este, recomendamos empezar por aquí

[![2025-04-07 11_36_55-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-07-11-36-55-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-07-11-36-55-mblock-v5-4-3.png)

- Si detecto 00 es decir "he perdido la línea" entonces ves hacia atrás para recuperarla
- Si detecto 11 es que estoy "en la línea" pues "pa'lante"
- Si detecto 01 es que la línea la tengo a mi derecha (0 en la izquierda 1 en la derecha) por lo tanto gira a la derecha para volver al redil
- lo mismo pero a la izquierda

Como se puede ver, hace movimientos hacia atrás sobre todo en las curvas cerradas pero **¡¡no se escapa!!**

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="695" src="https://www.youtube.com/embed/6itHWcvZnUs" title="Sigue líneas con mBot2" width="1236"></iframe>

##### <span style="color: rgb(22, 145, 121);">**El sígue líneas de "Programas de ejemplo"**</span>

<p class="callout warning">Acuérdate que para manejar el sensor de distancia, hay que instalar la extensión correspondiente. Ver [https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock](https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock)</p>

El programa lo puedes encontrar en los "Programas de ejemplo":

[![2025-04-01 20_48_42-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-01-20-48-42-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-01-20-48-42-mblock-v5-4-3.png)

<p class="callout success">El contenido a partir de aquí es esta página es de {{@12107#bkmrk-pere-manel-verdugo-z}}</p>

El primer script es para parar el robot con el botón A

[![2024-07-17 10_31_08-Seguir línea con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-31-08-seguir-linea-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-31-08-seguir-linea-con-mbot2-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

[![2024-07-17 10_33_00-Seguir línea con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-33-00-seguir-linea-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-33-00-seguir-linea-con-mbot2-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

(optativo) Esta función para que nos muestre el color de la línea

[![2024-07-17 10_34_55-Seguir línea con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-34-55-seguir-linea-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-34-55-seguir-linea-con-mbot2-pdf.png)

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

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

# Sigue líneas II

<p class="callout success">El contenido de esta página es de {{@12107#bkmrk-pere-manel-verdugo-z}}</p>

<p class="callout warning">Acuérdate que para manejar el sensor de distancia, hay que instalar la extensión correspondiente. Ver [https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock](https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock)</p>

<p class="callout info">En este programa sigue líneas avanzado vamos a incorporar que nos vaya diciendo los colores que va detectando</p>

El script que proponemos es el siguiente :

[![2024-07-17 10_38_44-Seguir la línea de color con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-38-44-seguir-la-linea-de-color-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-38-44-seguir-la-linea-de-color-con-mbot2-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

[![2024-07-17 10_39_05-Seguir la línea de color con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-39-05-seguir-la-linea-de-color-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-39-05-seguir-la-linea-de-color-con-mbot2-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

Y el algoritmo principal

- Cuando se presiona el botón B 
    - Detener otros programas del objeto.
    - A la variable base\_power le asignamos el valor 55
    - A la variable kp le asignamos el valor 0.8
    - Para siempre (Bucle infinito) 
        - A la variable left\_power le asignamos el valor -1 \* ( base\_power + (kp \* desviación del sensor cuádruple RGB)
        - A la variable right\_power le asignamos el valor(base\_power – (kp \* desviación del sensor cuádruple RGB)
        - moto EM1 gira a potencia right\_power %, motor EM2 gira potencia left\_power %
        - sí detector R1 del sensor cuádruple RGB detecta blanco entonces 
            - muestra 5 leds color blanco
        - sí detector R1 del sensor cuádruple RGB detecta rojo entonces 
            - muestra 5 leds color rojo
        - sí detector R1 del sensor cuádruple RGB detecta amarillo entonces 
            - muestra 5 leds color amarillo
        - sí detector R1 del sensor cuádruple RGB detecta verde entonces 
            - muestra 5 leds color verde
        - sí detector R1 del sensor cuádruple RGB detecta cian entonces 
            - muestra 5 leds color cian
        - sí detector R1 del sensor cuádruple RGB detecta azul entonces 
            - muestra 5 leds color azul
        - sí detector R1 del sensor cuádruple RGB detecta morado entonces 
            - muestra 5 leds color morado
        - sí detector R1 del sensor cuádruple RGB detecta negro entonces 
            - muestra 5 leds color negro

[![2024-07-17 10_39_48-Seguir la línea de color con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-39-48-seguir-la-linea-de-color-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-39-48-seguir-la-linea-de-color-con-mbot2-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

Y además (optativo) igual que el sigue líneas I :

[![2024-07-17 10_43_45-Seguir la línea de color con mBot2.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-43-45-seguir-la-linea-de-color-con-mbot2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-43-45-seguir-la-linea-de-color-con-mbot2-pdf.png)  
{{@12107#bkmrk-pere-manel-verdugo-z}}

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

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

# Control remoto

<p class="callout success">El contenido de esta página es de {{@12107#bkmrk-ejemplos-mbot2-pere-}}</p>

<p class="callout warning">PARA REALIZAR ESTE PROGRAMA SE NECESITAN DOS CYBERPIS QUE VAN A ESTAR CONECTADOS EN LA MISMA LAN</p>

<p class="callout info">Ahora un Cyberpi con su joystick controlará los movimientos del otro Cyberpi montado en su mBot2  
[![2024-07-17 10_52_26-Control remoto.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-52-26-control-remoto-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-52-26-control-remoto-pdf.png)  
{{@12107#bkmrk-ejemplos-mbot2-pere-}}  
</p>

Para este proyecto hemos de cargar dos CyberPy.

[![2024-07-17 10_53_02-Control remoto.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-53-02-control-remoto-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-53-02-control-remoto-pdf.png)

##### <span style="color: rgb(22, 145, 121);">**CODIGO EN EL CYBERPI RECEPTOR MONTADO CON MBOT2**</span>

<span style="color: rgb(186, 55, 42);">[**https://planet.mblock.cc/project/projectshare/7552114**](https://planet.mblock.cc/project/7552114)</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">Hay que poner los dos Cyberpis en la misma Wifi (SSID y contraseña)</span></p>

[![2024-07-17 10_53_25-Control remoto.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-53-25-control-remoto-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-53-25-control-remoto-pdf.png)  
{{@12107#bkmrk-ejemplos-mbot2-pere-}}

[![2024-07-17 10_55_55-Control remoto.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-55-55-control-remoto-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-55-55-control-remoto-pdf.png)  
{{@12107#bkmrk-ejemplos-mbot2-pere-}}

##### <span style="color: rgb(22, 145, 121);">**CODIGO EN EL CYBERPI QUE HARÁ DE CONTROL REMOTO**</span>

<span style="color: rgb(186, 55, 42);">[**https://planet.mblock.cc/project/7552213**](https://planet.mblock.cc/project/7552213)</span>

<span style="color: rgb(22, 145, 121);">**[![2024-07-17 10_56_57-Control remoto.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-56-57-control-remoto-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-56-57-control-remoto-pdf.png)** {{@12107#bkmrk-ejemplos-mbot2-pere-}}</span>

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

<span style="color: rgb(22, 145, 121);">**<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/khrZ9OvGnY4" width="560"></iframe>** </span>

<p class="callout success"><span style="color: rgb(0, 0, 0);">El contenido de esta página es de {{@12107#bkmrk-pere-manel-verdugo-z}}</span></p>

# Más actividades

##### <span style="color: rgb(22, 145, 121); background-color: rgb(251, 238, 184);">**RETOS : HACER UN PROGRAMA QUE REALICE....** </span>

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

[![2024-07-17 10_47_29-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-47-29-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-47-29-mbot2-actividades-pdf.png)  
SOLUCIÓN pag 18 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

<span style="color: rgb(22, 145, 121);">**RETO 2 HACER UN CUADRADO**</span>

<span style="color: rgb(0, 0, 0);">Los cuadrados naranjas son obstáculos.</span>[![2024-07-17 13_04_10-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-04-10-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-04-10-mbot2-actividades-pdf.png)  
Solución en pag 53 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

<span style="color: rgb(22, 145, 121);">**RETO 3 BUSCANDO EL COLOR AZUL ...**</span>

Un grupo de mBot2 buscan el color azul pintado en el suelo. Si uno lo encuentra, informará a los demás y ganará el juego.  
Solución en pag 90 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

<span style="color: rgb(22, 145, 121);">**RETO 4 BUSCANDO EL COLOR AZUL... PERO EN SOLITARIO**</span>

Hacer el juego anterior pero **sólo teniendo un mbot2**   
Solución en pag 9 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

Es parecido a la solución con Broadcast que vimos en [LAN con cyberpi](https://libros.catedu.es/books/cyberpi-y-mbot2/page/lan)

<span style="color: rgb(22, 145, 121);">**RETO 5 EL NO VA MÁS ... UN CAMARERO**</span>

<details id="bkmrk-el-robot-camarero-qu"><summary>El robot camarero que vas a fabricar debe ser capaz de hacer una serie de cosas: • Desplazarse en línea recta • Detenerse en una zona roja (tu mesa), anotar un pedido y enviarlo a la cocina • Opción adicional: si se dispone de un segundo mBot2 o CyberPi, entonces mostrar los pedidos a la cocina (para que puedan empezar a preparar la comida) • Continuar desplazándose hasta que el mBot2 encuentre una superficie verde (la cocina) y se detenga para recoger la comida de la cocina • Opcional: si se dispone de un segundo mBot2 o CyberPi, entonces notificar se está entregando la comida</summary>

  
  
[![2024-07-18 10_06_34-mbot2-actividades (2).pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-10-06-34-mbot2-actividades-2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-10-06-34-mbot2-actividades-2-pdf.png)  
  
[![2024-07-18 10_03_24-mbot2-actividades (2).pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-10-03-24-mbot2-actividades-2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-10-03-24-mbot2-actividades-2-pdf.png)

</details>Pag 107 {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

##### <span style="color: rgb(22, 145, 121); background-color: rgb(251, 238, 184);">**¿QUE HACEN ESTOS PROGRAMAS? ....** </span>

  
[![2024-07-17 10_50_36-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-50-36-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-50-36-mbot2-actividades-pdf.png)  
Pag 25 {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 10_51_31-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-51-31-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-51-31-mbot2-actividades-pdf.png)  
Pag 26 {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 10_52_12-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-10-52-12-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-10-52-12-mbot2-actividades-pdf.png)  
Pag 27 {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 12_57_59-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-12-57-59-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-12-57-59-mbot2-actividades-pdf.png)Pag 28 {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 12_59_03-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-12-59-03-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-12-59-03-mbot2-actividades-pdf.png)  
Pag 29 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_00_09-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-00-09-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-00-09-mbot2-actividades-pdf.png)  
Pag 33 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_01_05-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-01-05-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-01-05-mbot2-actividades-pdf.png)  
Pag 41 de{{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_01_55-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-01-55-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-01-55-mbot2-actividades-pdf.png)Pag 43 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_05_31-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-05-31-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-05-31-mbot2-actividades-pdf.png)Pag 60 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_06_22-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-06-22-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-06-22-mbot2-actividades-pdf.png)  
Pag 60 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_07_02-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-07-02-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-07-02-mbot2-actividades-pdf.png)  
Pag 62 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_07_58-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-07-58-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-07-58-mbot2-actividades-pdf.png)  
Pag 63 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_09_29-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-09-29-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-09-29-mbot2-actividades-pdf.png)  
  
[![2024-07-17 13_09_17-.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-09-17.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-09-17.png)  
Pag 67-68 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-17 13_11_17-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-11-17-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-11-17-mbot2-actividades-pdf.png)Y utilizar esta instrucción en la función principal

[![2024-07-17 13_11_27-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-17-13-11-27-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-17-13-11-27-mbot2-actividades-pdf.png)

Pag 69 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-18 09_37_16-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-09-37-16-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-09-37-16-mbot2-actividades-pdf.png)  
Pag 82 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-18 09_39_11-mbot2-actividades.pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-09-39-11-mbot2-actividades-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-09-39-11-mbot2-actividades-pdf.png)  
Pag 89 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

[![2024-07-18 09_51_21-mbot2-actividades (2).pdf.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-09-51-21-mbot2-actividades-2-pdf.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-09-51-21-mbot2-actividades-2-pdf.png)  
Pag 106 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

En el siguiente programa se usa la extensión TEACHABLE MACHINE, en ella se enseña al objeto que reconozca (INTELIGENCIA ARTIFICIAL) un mBot2, un block de notas, mira [https://libros.catedu.es/books/cyberpi-y-mbot2/page/software-educable-maquina-educable-teachable-machine](https://libros.catedu.es/books/cyberpi-y-mbot2/page/software-educable-maquina-educable-teachable-machine) para saber cómo se utiliza esta extensión.  
Una vez "aprendido" se pueden usar las instrucciones de "recognition result is... "

Tiene la pega que tienen que estar conectado por cable el mBot2 o usar un adaptador Bluetooth

[![2024-07-18 10_08_46-mbot2-actividades (1) - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2024-07/scaled-1680-/2024-07-18-10-08-46-mbot2-actividades-1-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2024-07/2024-07-18-10-08-46-mbot2-actividades-1-pdf-xchange-viewer.png)  
Pag 124 de {{@12107#bkmrk-manual-mbot2-https%3A%2F}}

# Inteligencia artificial

# Introducción: ¿Qué es?

{{@12181}}

# Introducción: Tipos

{{@12182}}

# Introducción: Y en plan que se entienda....

{{@12061}}

# Introducción: Video Sensing, esto no es IA

{{@11874}}

# Máquinas educadas Cognitive Services Servicios cognitivos

{{@11876}}

# Máquinas educadas: Traductor

{{@11881}}

# Máquinas educadas: Traductor con Cyberpi

{{@11878}}

# Máquinas educadas: Reconocimiento de voz- órdenes a mBot2

{{@11880}}

# Software educable Machine Learning for kids y Scratch

{{@12058}}

# Software educable: Máquina Educable Teachable Machine

{{@11875}}

# Software educable: CODE.ORG

{{@12051}}

# Software educable Playground, Teachable Machine Google y Microbit

{{@12146}}

# Maquinas educables: SmartCamera

Estamos ensañando este accesorio, pero en mBot2 no va muy fino, no obstante aquí tienes el enlace a mbot1 **perfectamente se puede aplicar a mbot2**

[**https://libros.catedu.es/books/robotica-educativa-con-mbot/chapter/7-ia-hardware-educable**](https://libros.catedu.es/books/robotica-educativa-con-mbot/chapter/7-ia-hardware-educable)

#### SmartCamera - Qué es

Esta cámara se vende como accesorio de los robots de Makeblock por unos 140€ , ATENCIÓN, ESTE ...

#### SmartCamera - conexión con mBot

Hardware Para conectarlo con mBot1 hace falta la batería que se suministra en el pack, con su ca...

#### Smart camera - seguimiento color - sencillo

Configuración reconocimiento de color Método por software (recomendado) Una forma de configurar...

#### Smart camera seguimiento color avanzado

Kp, velocidad diferencial del motor.... ¿Eso qué es? En la extensión CAMARA INTELIGENTE ESPECÍFI...

#### Smart camera Piximon

INSTALACIÓN DE PYXMON V2 No es un software obligatorio, pero viene muy bien qué está pasando y q...

#### Smart Camera Código de barras

En el modo de detección de código de barras, puede detectar 15 códigos de barras ya definidas. ...

#### SmartCamera - sigue líneas

mBot ya tiene un sigue-lineas https://libros.catedu.es/books/robotica-educativa-con-mbot/page/sig...

# Python

# Python

##### <span style="color: rgb(22, 145, 121);">**Librería cyberpi**</span>

Los programas en python de cyberpi que vamos a realizar utilizan esta librería por lo tanto hay que cargarla previamente en nuestros programas.

```python
import cyberpi
```

Tiene multitud de funciones, te aconsejamos ver un vistazo en esta documentación:

[https://www.lbotics.at/images/mbot2/files/mBot2\_API\_cyberpi.pdf](https://www.lbotics.at/images/mbot2/files/mBot2_API_cyberpi.pdf)

{{@12327}}

# Hola Mundo

Nuestro primer programa es muy sencillo: Que por el display del Cyberpi salga la típica frase del primer programa principiante

A la hora de utilizar las funciones de la librería cyberpi, tienes dos opciones:

- Programar sin omitir de donde viene (o sea, indicar el objeto de donde sale esa función, **cyberpi.** )
- Programar omitiéndolo pero antes tienes que decirle que importas todo **import \***

##### <span style="color: rgb(22, 145, 121);">**Mi primer programa Hola Mundo (método sin omitir)**</span>

Entramos en mBlock, y en la pestaña de Python tecleamos este programa:

```python
import cyberpi
cyberpi.console.print("Hola Mundo")
```

<p class="callout warning">Previamente tienes que tener el programa **mBlock** instalado y cargado el dispositivo **mBot2** (aunque para estos ejemplos con Cyberpi también vale) , recuerda lo visto en [https://libros.catedu.es/books/cyberpi-y-mbot2/page/mblock5](https://libros.catedu.es/books/cyberpi-y-mbot2/page/mblock5) y en [https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock](https://libros.catedu.es/books/cyberpi-y-mbot2/page/como-usar-mbot2-en-mblock)</p>

1. Entramos en mblock con el dispositivo cargado mBot2 y vamos a la pesaña Python
2. Pegamos el programa
3. Vamos a conectar mBot2 (debemos de tenerlo conectado con un cable USB tal y como vimos en [https://libros.catedu.es/books/cyberpi-y-mbot2/page/mi-primer-programa-hola-mundo](https://libros.catedu.es/books/cyberpi-y-mbot2/page/mi-primer-programa-hola-mundo)
4. Damos a la opción Cargar
5. Subir código

[![2025-04-29 12_46_26-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-12-46-26-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-12-46-26-mblock-v5-4-3.png)

Y el resultado es

[![2025-04-29 12_50_34-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-12-50-34-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-12-50-34-whatsapp.png)

##### <span style="color: rgb(22, 145, 121);">**Mi primer programa Hola Mundo (método omitiendo)**</span>

Repite los pasos anteriores pero con este código

```python
from cyberpi import *
console.print("Hola Mundo")
```

<p class="callout success">¿Ves la diferencia de código?</p>

# Audio

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

Un programa sencillo de dar un tono puede ser el siguiente

```
import cyberpi

cyberpi.audio.set_vol(100)
cyberpi.audio.play_tone(700,1)
```

*<span style="color: rgb(0, 0, 0);">Extraído de [https://github.com/PerfecXX/Python-mBot2/blob/main/README.md](https://github.com/PerfecXX/Python-mBot2/blob/main/README.md) licencia [MIT](https://github.com/PerfecXX/Python-mBot2/blob/main/LICENSE)</span>*

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

<span style="color: rgb(0, 0, 0);">También podemos reproducir instrumentos</span>

```
import cyberpi

cyberpi.audio.set_vol(100)
# str type eg. snare,bass-drum,side-stick,crash-cymbal,open-hi-hat,close-hi-hat,tambourine,hand-clap,claves 
# float beat > 0 (second)

cyberpi.audio.play_drum("snare",1)
cyberpi.audio.play_drum("snare",1)
cyberpi.audio.play_drum("side-stick",1)
cyberpi.audio.play_drum("tambourine",1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

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

También este código nos selecciona varios efectos sonoros y los reproduce

```python
import cyberpi

sound_effect = ["hello","hi","bye","yeah","wow","laugh","hum","sad","sigh","annoyed","angry","surprised","yummy","curious","embarrassed","ready","sprint","sleepy","meow","start","switch","beeps","buzzing","explosion","jump","laser","level-up","low-energy","prompt-tone","right","wrong","ring","score","wake","warning","metal-clash","shot","glass-clink","inflator","running water","clockwork","click","current","switch","wood-hit","iron","drop","bubble","wave","magic","spitfire","heartbeat","load"]

cyberpi.display.show_label('UP  :GO   UP\nDOWN:GO   DOWN\nMID :PLAY EFFECT', 16, 0, 0, 0)
cyberpi.display.show_label('SELECT:\nName:', 16, 0, 60, 1)

selected = 0
min_effect = 0
max_effect = len(sound_effect) - 1

while True:
    if cyberpi.controller.is_press('up'):
        if selected < max_effect:
            selected += 1
        else:
            selected = min_effect
    elif cyberpi.controller.is_press('down'):
        if selected > min_effect:
            selected -= 1
        else:
            selected = max_effect
    elif cyberpi.controller.is_press('middle'):
        cyberpi.led.on(255,0,0,id="all")
        cyberpi.audio.play_until(sound_effect[selected])
        cyberpi.led.on(0,0,0,id="all")

    cyberpi.display.show_label('{}'.format(selected), 16, 60, 60, 2)
    cyberpi.display.show_label('{}'.format(sound_effect[selected]), 12, 52, 80, 3)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/2EPpDJqUhew" title="mbot2 python efectos sonoros" width="337"></iframe>

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

O hacernos una grabadora de bolsillo

```python
import cyberpi
from time import sleep

cyberpi.audio.set_vol(100)

cyberpi.display.show_label("A:Start Recording\nB:Play Recording",12,0,0,0)

while True:
    cyberpi.display.show_label("Waiting.",16,0,40,1)
    if cyberpi.controller.is_press('a'):
        cyberpi.led.on(0,255,0,id="all")
        cyberpi.display.show_label("Listening..",16,0,40,1)
        cyberpi.audio.record()
        sleep(5)
        cyberpi.display.show_label("Finished..",16,0,40,1)
        cyberpi.audio.stop_record()

    elif cyberpi.controller.is_press('b'):
        cyberpi.led.on(0,0,255,id="all")
        cyberpi.display.show_label("Playing..",16,0,40,1)
        cyberpi.audio.play_record_until()
        cyberpi.display.show_label("Finished..",16,0,40,1)

    cyberpi.display.show_label("Waiting...",16,0,40,1)
    cyberpi.led.on(0,0,0,id="all")
    
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/ayyBMRfwBpQ" title="grabadora python mbot2" width="337"></iframe>

# LED

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

Podemos fijar los colores de los leds de Cyberpi con este código

```python
import cyberpi

#               R  G B Position
cyberpi.led.on(255,0,0,id=1)
cyberpi.led.on(255,255,0,id=2)
cyberpi.led.on(255,255,255,id=3)
cyberpi.led.on(0,255,0,id=4)
cyberpi.led.on(0,255,255,id=5)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

[![2025-04-29 15_08_28-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-15-08-28-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-15-08-28-whatsapp.png)

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

Podemos encender y apagar a voluntad

```python
import cyberpi
from time import sleep

while True:
    #               R  G B Position
    cyberpi.led.on(255,0,0,id=1)
    cyberpi.led.on(255,255,0,id=2)
    cyberpi.led.on(255,255,255,id=3)
    cyberpi.led.on(0,255,0,id=4)
    cyberpi.led.on(0,255,255,id=5)
    sleep(1)
    #               Position 
    cyberpi.led.off(id='all')
    sleep(1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

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

```python
import cyberpi

"""
Name List (str)

rainbow , spoondrift , meteor_blue , meteor_green ,
flash_red , flash_orange , firefly

"""

cyberpi.led.play(name = "rainbow")
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

  
<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/KrjRfHxDUwk" title="arcoiris mbot2 python" width="337"></iframe>

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

```python
import cyberpi
from time import sleep

cyberpi.led.on(255,0,0,id=1)
while True:
    # shift all the colors 1 step to the right.
    # (If it is negative, it will be left shifting.)
    cyberpi.led.move(1)
    sleep(1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/oorI8BS_xZU" title="movimiento leds mbot2 python" width="337"></iframe>

# Entradas

##### <span style="color: rgb(22, 145, 121);">**Botones A y B**</span>

Si aprieto el botón A pues enciendo leds, si aprieto B los apago

```python
import cyberpi

"""
Button Name List (str)

a , b 
up, down, left , right , middle
any_direction , any_button , any

"""
while True:
                             # button name
    if cyberpi.controller.is_press('a'):
        cyberpi.led.on(255,0,0,id='all')
        cyberpi.console.println("LED ON!")
    if cyberpi.controller.is_press('b'):
        cyberpi.led.on(0,0,0,id='all')
        cyberpi.console.println("LED OFF!")
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/1w7q_3t6nEM" title="botones mbot2 python" width="337"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Intensidad de la luz**</span>

*<span style="color: rgb(0, 0, 0);">La función show\_label la veremos después, tiene el formato <span class="ͼe">cyberpi</span><span class="ͼ8">.</span>display<span class="ͼ8">.</span>show\_label(<span class="ͼe">texto</span>, <span class="ͼe">tamaño</span>, <span class="ͼe">color, x, y</span>)</span>*

```python
import cyberpi

cyberpi.display.show_label("LUZ=",16,0,0,0)

while True:
    CantidadLuz = cyberpi.get_brightness()
    cyberpi.display.show_label(CantidadLuz,16,0,60,1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/DyamGMRte7w" title="luz python mbot2" width="357"></iframe>

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

```
import cyberpi

cyberpi.display.show_label("Loudness:",16,10,10,index=1)

while True:
    loudness_value = cyberpi.get_loudness()
    cyberpi.display.show_label(loudness_value,16,80,10,index=2)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/_xFezHI2N9o" title="cantidad de sonido Python mbot2" width="357"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Nivel de batería**</span>

```python
import cyberpi

cyberpi.display.show_label("Battery Level",16,10,0,index=0)
cyberpi.display.show_label("Builtin:",16,10,20,index=1)
cyberpi.display.show_label("Extra:",16,10,40,index=2)

while True:
    builtin_batt = cyberpi.get_battery()
    extra_batt = cyberpi.get_extra_battery()
    
    cyberpi.display.show_label(builtin_batt,16,80,20,index=3)
    cyberpi.display.show_label(extra_batt,16,80,40,index=4)
```

# Display

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

```python
import cyberpi

cyberpi.display.show_label("Counter Program",16,0,0,0)
counter = 0

while True:
    
    if counter < 100:
        counter = counter + 1
    else:
        counter = 0
    cyberpi.display.set_brush(counter+100, 0, 0)
    cyberpi.display.show_label(counter,32,48,64,1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/yOK__g1O6OQ" title="contador con python y mbot2" width="357"></iframe>

##### **<span style="color: rgb(22, 145, 121);">Limpiar y apagar la pantalla</span>**

```python
import cyberpi

cyberpi.display.on()

cyberpi.display.show_label("A:Clear the Sceen",12,0,0,0)
cyberpi.display.show_label("B:Close the screen",12,0,24,1)

while True:
    if cyberpi.controller.is_press('a'):
        cyberpi.display.clear()
    elif cyberpi.controller.is_press('b'):
        cyberpi.display.off()
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/qWmmkTRykyo" title="limpiar y apagar pantalla python mbot2" width="357"></iframe>

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

El display permite visualizar gráficas como por ejemplo este código

```python
import cyberpi

value = 0

while True:
    if value < 100:
        value = value + 1
    else:
        value = 0
    cyberpi.linechart.add(value)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/oSzWt8k3YLA" title="grafica linechart python mbot2" width="357"></iframe>

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

```python
import cyberpi

value = 0

while True:
    if value < 100:
        value = value + 0.1
    else:
        value = 0
    cyberpi.barchart.add(value)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/Y950W81RpEA" title="barchart mbot2 python" width="357"></iframe>

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

```python
import cyberpi

cyberpi.display.set_brush(255,0,0)
cyberpi.table.add(1,1,"1,1")
cyberpi.table.add(2,1,"2,1")
cyberpi.table.add(3,1,"3,1")
cyberpi.table.add(4,1,"4,1")

cyberpi.display.set_brush(0,255,0)
cyberpi.table.add(1,2,"1,2")
cyberpi.table.add(2,2,"2,2")
cyberpi.table.add(3,2,"3,2")
cyberpi.table.add(4,2,"4,2")

cyberpi.display.set_brush(0,0,255)
cyberpi.table.add(1,3,"1,3")
cyberpi.table.add(2,3,"2,3")
cyberpi.table.add(3,3,"3,3")
cyberpi.table.add(4,3,"4,4")
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

[![2025-04-29 20_15_40-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-20-15-40-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-20-15-40-whatsapp.png)

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

```
import cyberpi
import time


pixel_list = ["music","picture","video","clock","play","pause","next","prev","sound","temperature","light","motion","home","gear","list","right","wrong","shut_down","refresh","trash_can","download","sunny","cloudy","rain","snow","train","rocket","car","truck","droplet","distance","fire","magnetic","gas","vision","color","overcast","foggy","sandstorm"]

my_sprite = cyberpi.sprite()
for p in pixel_list:
   
    my_sprite.draw_pixel(p)
    my_sprite.set_size(200)
    time.sleep(1)
    cyberpi.screen.render()
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/0UBumFzEuvI" title="drawpixel mbot2 python" width="357"></iframe>

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

```python
import cyberpi

my_sprite = cyberpi.sprite()
my_sprite.draw_QR("https://catedu.es/")
my_sprite.set_size(400)
cyberpi.screen.render()
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

[![2025-04-29 20_26_54-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-20-26-54-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-20-26-54-whatsapp.png)

¡¡ y funciona !!!

# Sensores de movimiento

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

```
import cyberpi

cyberpi.display.show_label("Shake Value\nA:Start",16,0,0,0)

while not cyberpi.controller.is_press('a'):
    pass

while True:
    shake_value = cyberpi.get_shakeval()
    cyberpi.display.show_label("Shake Value",16,20,0,0)
    cyberpi.display.show_label("{}%".format(shake_value),24,40,50,1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/bTmeeCBABAA" title="Sensor agitación mbot2 python" width="357"></iframe>

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

El siguiente programa enseña los dos ángulos de inclinación en eje X e Y y rotación en eje Z

```python
import cyberpi

cyberpi.display.show_label("YAW PITCH ROLL\nA:Start",16,0,0,0)

while not cyberpi.controller.is_press('a'):
    pass
while True:
    pitch = cyberpi.get_pitch()
    roll = cyberpi.get_roll()
    yaw = cyberpi.get_yaw()

    cyberpi.display.show_label("Yaw\n\nPitch\n\nRoll\n\n",16,0,0,0)
    cyberpi.display.show_label("{}\n\n{}\n\n{}".format(pitch,roll,yaw),16,50,0,1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

El resultado es muy parecido con la función de gyro

```python
import cyberpi

cyberpi.reset_rotation(axis='all')
cyberpi.display.show_label("Gyroscope\nA:Start",16,0,0,0)

while not cyberpi.controller.is_press('a'):
    pass
    
while True:
    x_gyro = cyberpi.get_gyro('x')
    y_gyro = cyberpi.get_gyro('y')
    z_gyro = cyberpi.get_gyro('z')

    cyberpi.display.show_label("X\n\nY\n\nZ\n\n",16,0,0,0)
    cyberpi.display.show_label("{}\n\n{}\n\n{}".format(x_gyro,y_gyro,z_gyro),16,50,0,1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

Y rotation

```python
import cyberpi

cyberpi.reset_rotation(axis='all')
cyberpi.display.show_label("Rotation\nA:Start",16,0,0,0)

while not cyberpi.controller.is_press('a'):
    pass
    
while True:
    x_rotate = cyberpi.get_rotation('x')
    y_rotate = cyberpi.get_rotation('y')
    z_rotate = cyberpi.get_rotation('z')

    cyberpi.display.show_label("X\n\nY\n\nZ\n\n",16,0,0,0)
    cyberpi.display.show_label("{}\n\n{}\n\n{}".format(x_rotate,y_rotate,z_rotate),16,50,0,1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/i3HnE8lIdLo" title="Inclinación y rotación mbot2 python" width="357"></iframe>

# El tiempo (servicios en la nube)

Podemos ver el tiempo que hace en una localidad utilizando el siguiente código:

- **PON-EL-NOMBRE-DE-TU-WIFI** y **CLAVE-DE-TU-WIFI** son el nombre y la contraseña de la red wifi pues necesita conectarse a un servidor
- **TU-ID-CLOUD** lo puedes encontrar en mBlock aquí **HAY QUE ESTAR LOGUEADO**  
    [![2025-04-29 21_10_21-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-21-10-21-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-21-10-21-mblock-v5-4-3.png)
- **location\_id** es un número de identificador meteorológico, por ejemplo si ponemos *alcorisa* en [https://meteoblue.com/](https://meteoblue.com/) nos sale en la URL el código 3130563  
    [![2025-04-29 21_06_57-Tiempo Alcorisa - meteoblue.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-21-06-57-tiempo-alcorisa-meteoblue.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-21-06-57-tiempo-alcorisa-meteoblue.png)

```
import cyberpi

ssid = "PON-EL-NOMBRE-DE-TU-WIFI"
pwd = "CLAVE-DE-TU-WIFI"
auth_key = "TU-ID-CLOUD"
location_id = "3127059" # CALAMOCHA SEGÚN https://www.meteoblue.com/es/tiempo/semana/calamocha_espa%c3%b1a_3127059

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("Status: Connected!",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

cyberpi.cloud.setkey(auth_key)

max_temp = cyberpi.cloud.weather("max_temp",location_id)
min_temp = cyberpi.cloud.weather("min_temp",location_id)
weather = cyberpi.cloud.weather("weather",location_id)
humidity = cyberpi.cloud.weather("humidity",location_id)

cyberpi.display.show_label("Max Temperature: {} C".format(max_temp),12,0,20,1)
cyberpi.display.show_label("Min Temperature: {} C".format(min_temp),12,0,32,2)
cyberpi.display.show_label("Weather: {}".format(weather),12,0,42,3)
cyberpi.display.show_label("Humidity: {} %".format(humidity),12,0,52,4)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

El resultado es (hemos puesto Calamocha)

[![2025-04-29 21_13_33-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-21-13-33-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-21-13-33-whatsapp.png)

No entendemos por qué no nos enseña la temperatura mínima, y además hemos elegido una localidad con estación meteorológica VOR que tiene el récord de temperatura más fría en zona habitada

<p class="callout info">*Bueno ... mentirijilla, el VOR esta en Fuentes Claras, no en Calamocha*<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/DgT1THxQ89w" width="560"></iframe>

</p>

<p class="callout success">Hay más ejemplos en [https://github.com/PerfecXX/Python-mBot2/tree/main/example/cyberpi/08-Cloud](https://github.com/PerfecXX/Python-mBot2/tree/main/example/cyberpi/08-Cloud) como la calidad del aire, pero no todas las localidades tienen datos.</p>

# Envío de mensajes con dos mBots2

En dos mBot2 le ponemos el siguiente código:

```python
import cyberpi

ssid = "catedu"
pwd = "alcorisa"
topic = "/test_room"

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("WiFi: Connected!\nEnvío de mensaje botón A o B:\n Preparado también para recepción ..",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

while True:
    ## envio de mensaje
    message = cyberpi.wifi_broadcast.get(topic)
    cyberpi.display.show_label("{}".format(message),12,0,60,1)
    # envío de mensaje
    if cyberpi.controller.is_press('a'):
        cyberpi.wifi_broadcast.set(topic,"\nHola soy CATEDU")
    elif cyberpi.controller.is_press('b'):
        cyberpi.wifi_broadcast.set(topic,"\nBienvenido a los cursos de Aularagón")
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

Realmente en [https://github.com/PerfecXX/Python-mBot2/tree/main/example/cyberpi/07-LAN/01-Send\_Receive](https://github.com/PerfecXX/Python-mBot2/tree/main/example/cyberpi/07-LAN/01-Send_Receive) se utilizan DOS códigos, uno para el emisor y otro para el receptor, lo que se ha hecho en el código de arriba es unirlos.

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/IpjvpNEz6-I" title="Envio y recepción de mensajes con dos mbot2 con python" width="458"></iframe>

# Inteligencia Artificial IA

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

El siguiente código se conecta a un servidor para leer un texto en un idioma concreto

```python
import cyberpi

ssid = "MIWIFI"
pwd = "CONTRASENAWIFI"

cyberpi.driver.cloud_translate.TTS_URL = "{TTSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")
cyberpi.driver.cloud_translate.TRANS_URL = "{TRANSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")
cyberpi.speech.set_recognition_address(url = "{NAVIGATEURL}")
cyberpi.speech.set_access_token(token = "{ACCESSTOKEN}")

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("Status: Connected!",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

cyberpi.display.show_label("Wait...",12,0,20,1)
cyberpi.led.on(0,0,255,id='all')
cyberpi.cloud.tts("es","Bienvenido CATEDU")
cyberpi.cloud.tts("en","I speak English better: Wellcome to CATEDU")
cyberpi.led.on(0,0,0,id='all')
cyberpi.display.show_label("Finished!",12,0,20,1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

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

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

<span style="color: rgb(0, 0, 0);">En este caso hemos seleccionado el idioma 4 (el primero chinese es el 0) luego reconoce voz en idioma inglés</span>

```python
import cyberpi
from time import sleep

ssid = "MIWIFI"
pwd = "CONTRASENAWIFI"

langauge_list = ["chinese","chinese_taiwan","cantonese","japanese","english","french","german","spanish","portuguese","russian","korean","italian","Dutch"]

cyberpi.driver.cloud_translate.TTS_URL = "{TTSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")
cyberpi.speech.set_recognition_address(url = "{NAVIGATEURL}")
cyberpi.speech.set_access_token(token = "{ACCESSTOKEN}")
cyberpi.driver.cloud_translate.TRANS_URL = "{TRANSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("WiFi: Connected!",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

while True:
    cyberpi.display.show_label("A:Start Recognize",12,0,20,1)
    cyberpi.led.on(0,0,0,id='all')

    if cyberpi.controller.is_press('a'):
        sleep(0.5)
        cyberpi.led.on(0,0,255,id='all')
        cyberpi.display.show_label("Recognizing...",12,0,40,2)
        cyberpi.cloud.listen(langauge_list[4], 5)
        cyberpi.display.show_label("Processing...",12,0,40,2)
        cyberpi.led.on(0,0,0,id='all')
        recog_result = cyberpi.cloud.listen_result()
        cyberpi.display.show_label("Recognition Result\n\n{}".format(recog_result),12,0,40,2)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}  
El resultado es

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

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

<span style="color: rgb(0, 0, 0);">En este caso le damos un texto que le decimos en qué idioma está (el 7=español) y le pedimos que nos lo traduzca al 4=inglés</span>

```python
import cyberpi

ssid = "MIWIFI"
pwd = "MICLAVEWIFI"

langauge_list = ["chinese","chinese_taiwan","cantonese","japanese","english","french","german","spanish","portuguese","russian","korean","italian","Dutch"]
cyberpi.driver.cloud_translate.TTS_URL = "{TTSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")
cyberpi.speech.set_recognition_address(url = "{NAVIGATEURL}")
cyberpi.speech.set_access_token(token = "{ACCESSTOKEN}")
cyberpi.driver.cloud_translate.TRANS_URL = "{TRANSURL}"
cyberpi.driver.cloud_translate.set_token("{ACCESSTOKEN}")

cyberpi.led.on(255,0,0,id='all')
cyberpi.display.show_label("WiFi:",12,0,0,0)

if not cyberpi.wifi.is_connect():
    cyberpi.display.show_label("WiFi: No Connect",12,0,0,0)
    cyberpi.wifi.connect(ssid,pwd)
    while not cyberpi.wifi.is_connect():
        cyberpi.display.show_label("Connecting..",12,0,20,1)

cyberpi.display.clear()
cyberpi.display.show_label("WiFi: Connected!",12,0,0,0)
cyberpi.led.on(0,255,0,id='all')

text = "Bienvenido a los cursos a distancia de CATEDU"
cyberpi.display.show_label("translate: \n{} in {}".format(text,langauge_list[7]),12,0,10,1)
translated_text = cyberpi.cloud.translate(langauge_list[4], text)
cyberpi.display.show_label("Result: \n{}".format(translated_text),12,0,70,2)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

[![2025-04-29 23_09_43-.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-29-23-09-43.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-29-23-09-43.png)

# Movimientos

<p class="callout info"><span style="color: rgb(0, 0, 0);">Los movimientos de mBot2 se pueden definir por tiempo, distancia, ángulo y potencia, gracias a sus precisos motores de paso</span></p>

##### **<span style="color: rgb(22, 145, 121);">Pequeño baile con tiempo definido</span>**

```python
import cyberpi, mbot2

cyberpi.display.show_label("mBot2 Movement",16,0,0,0)
cyberpi.display.show_label("A:Start Moving!",16,0,20,1)

while True:
    
    while not cyberpi.controller.is_press('a'):
        pass

    cyberpi.display.show_label("Forward 60 RMP 1 Sec",12,0,40,2)
    mbot2.forward(60,1)
    cyberpi.display.show_label("Backward 60 RMP 1 Sec",12,0,40,2)
    mbot2.backward(60,1)
    cyberpi.display.show_label("Turn Left 60 RMP 1 Sec",12,0,40,2)
    mbot2.turn_left(60,1)
    cyberpi.display.show_label("Turn Right 60 RMP 1 Sec",12,0,40,2)
    mbot2.turn_right(60,1)
    cyberpi.display.show_label("Finished!",12,0,40,2)
```

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/pf_htY6PWUw" title="pequeño baile mbot2 python" width="357"></iframe>

##### **<span style="color: rgb(22, 145, 121);">Pequeño baile con distancia definida</span>**

En este código le decimos que vaya exactamente 100 cm

```python
import cyberpi, mbot2

cyberpi.display.show_label("mBot2 Straight",16,0,0,0)
cyberpi.display.show_label("A:Start Moving!",16,0,20,1)

while True:
    
    while not cyberpi.controller.is_press('a'):
        pass

    cyberpi.display.show_label("Forward 100 cm",12,0,40,2)
    mbot2.straight(100)
    cyberpi.display.show_label("Backward 100 cm",12,0,40,2)
    mbot2.straight(-100)
    cyberpi.display.show_label("Finished!",12,0,40,2)

```

##### **<span style="color: rgb(22, 145, 121);">Pequeño baile con ángulos definidos</span>**

En este que gire +90º y luego -90º

```python
import cyberpi, mbot2

cyberpi.display.show_label("mBot2 Rotation",16,0,0,0)
cyberpi.display.show_label("A:Rotate Left\nB:Rotate Right",16,0,20,1)

while True:
    
    if cyberpi.controller.is_press('a'):
        cyberpi.display.show_label("Turn Left 90",12,0,60,2)
        mbot2.turn(-90)
    elif cyberpi.controller.is_press('b'):
        cyberpi.display.show_label("Turn Right 90",12,0,60,2)
        mbot2.turn(90)
```

##### **<span style="color: rgb(22, 145, 121);">Pequeño baile con potencia definida</span>**

```
import cyberpi, mbot2
from time import sleep

cyberpi.display.show_label("mBot2 EM Power",16,0,0,0)

while not cyberpi.controller.is_press('a'):
        pass
        
mbot2.drive_power(100, -100)
sleep(1)
mbot2.drive_power(0, 0)
```

# Sensor ultrasonidos

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

```python
import cyberpi,mbuild

cyberpi.display.show_label("Range:", 16, 0, 0, index = 0)

while True:
    range = mbuild.ultrasonic2.get(index = 1)
    cyberpi.display.show_label(range, 16, 50, 0, index = 1)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

Podemos experimentar que es bastante preciso, más que en mBot1

[![2025-04-30 08_18_12-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-30-08-18-12-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-30-08-18-12-whatsapp.png)

Este código haría lo mismo pero alarmando que hay obstáculo o no

```
import cyberpi,mbuild

cyberpi.display.show_label("Range:", 16, 20, 0, index = 0)

while True:
    range = mbuild.ultrasonic2.get(index = 1)
    cyberpi.display.show_label(range, 16, 70, 0, index = 1)
    
    if range < 10:
        cyberpi.led.on(255,0,0,id="all")
        cyberpi.display.show_label("Obstacle!", 16, 0, 20, index = 2)
    else:
        cyberpi.led.on(0,255,0,id="all")
        cyberpi.display.show_label("No Obstacle", 16, 0, 20, index = 2)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}

# Evita obstáculos

Basándonos en el código que hemos visto de [https://github.com/PerfecXX/Python-mBot2/blob/main/example/mbuild/01-Ultrasonic%20Sensor2/02-Obstacle%20Detection.py](https://github.com/PerfecXX/Python-mBot2/blob/main/example/mbuild/01-Ultrasonic%20Sensor2/02-Obstacle%20Detection.py) le añadimos las instrucciones de

- Si hay obstáculo que gire
- Si no hay obstáculo que tire p'alante

Previamente una rutina de no empezar si no se aprieta el botón A

```
import cyberpi,mbuild, mbot2

cyberpi.display.show_label("PULSA A PARA COMENZAR",16,0,20,1)
while not cyberpi.controller.is_press('a'):
        pass

while True:
    range = mbuild.ultrasonic2.get(index = 1)
    cyberpi.display.show_label(range, 16, 70, 0, index = 1)
    
    if range < 40:
        cyberpi.led.on(255,0,0,id="all")
        cyberpi.display.show_label("Obstacle!", 16, 0, 20, index = 2)
        cyberpi.display.show_label("Girando un segundo",12,0,60,2)
        mbot2.turn_left(60,1)
    else:
        cyberpi.led.on(0,255,0,id="all")
        cyberpi.display.show_label("No Obstacle", 16, 0, 20, index = 2)
        mbot2.drive_power(70, -70)
    
```

a lo mejor habría que quitarle un poco la potencia en mbot2.drive\_power(70, -70) pero mola :

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/H6CovqWfWvc" title="evita obstáculos con Python" width="458"></iframe>

# Sensor de líneas

##### <span style="color: rgb(22, 145, 121);">**Probando la detección de líneas.**</span>

```python
import cyberpi,mbuild

cyberpi.display.show_label("RGB PROBE STATE\nL2:\nL1:\nR1:\nR2:\n", 16, 0, 0, index = 0)

while True:
    l2_line_state = mbuild.quad_rgb_sensor.is_line("L2",1)
    l1_line_state = mbuild.quad_rgb_sensor.is_line("L1",1)
    r1_line_state = mbuild.quad_rgb_sensor.is_line("R1",1)
    r2_line_state = mbuild.quad_rgb_sensor.is_line("R2",1)

    cyberpi.display.show_label(l2_line_state, 16, 30, 18, index = 1)
    cyberpi.display.show_label(l1_line_state, 16, 30, 36, index = 2)
    cyberpi.display.show_label(r1_line_state, 16, 30, 54, index = 3)
    cyberpi.display.show_label(r2_line_state, 16, 30, 72, index = 4)
```

{{@13396#bkmrk-extraido-de-https%3A%2F%2F}}  
Como puedes ver va detectando las líneas en los 4 sensores que tiene :

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="635" src="https://www.youtube.com/embed/6gyT5P1kMw8" title="prueba sensor de líneas en mBot2 con Python" width="357"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Más probatinas...**</span>

En [https://github.com/PerfecXX/Python-mBot2/tree/main/example/mbuild/02-Quad%20RGB%20Sensor](https://github.com/PerfecXX/Python-mBot2/tree/main/example/mbuild/02-Quad%20RGB%20Sensor) puedes descargarte más scripts que visualizan como el sensor puede detectar el color y el brillo. Nosotros aquí sólo te hemos enseñado el último el de detectar la línea.

[![2025-04-30 08_32_43-Python-mBot2_example_mbuild_02-Quad RGB Sensor at main · PerfecXX_Python-mBot2 ·.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-30-08-32-43-python-mbot2-example-mbuild-02-quad-rgb-sensor-at-main-perfecxx-python-mbot2.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-30-08-32-43-python-mbot2-example-mbuild-02-quad-rgb-sensor-at-main-perfecxx-python-mbot2.png)

# Sigue líneas

En este caso sólo vamos a utilizar de los 4 sensores quad que tiene los 2 de en medio con la instrucción

```
mbuild.quad_rgb_sensor.get_line_sta("middle", 1)
```

El valor que devuelve esta instrucción puede ser :

- **0 o en binario 00** que quiere decir que los dos sensores detectan blanco, por lo tanto habría que volver hacia **atrás** para recuperar la línea
- **1 o en binario 01** que significa que el sensor de la derecha detecta línea pero el de la izquierda no, por lo tanto hay que girar a la **derecha**
- **2 o en binario 10** que significa que el sensor de la izquierda detecta línea pero el de la derecha no, por lo tanto hay que girar a la **izquierda**
- **3 o en binario 11** que quiere decir que los dos sensores detectan línea, por lo tanto todo bien, **recto**

El código es

```python
import event, time, cyberpi, mbuild, mbot2

cyberpi.display.show_label("PULSA A PARA COMENZAR",16,0,20,1)
while not cyberpi.controller.is_press('a'):
        pass

while True:
    if mbuild.quad_rgb_sensor.get_line_sta("middle", 1) == 0b00:
        mbot2.backward(50)

    if mbuild.quad_rgb_sensor.get_line_sta("middle", 1) == 0b11:
        mbot2.forward(50)

    if mbuild.quad_rgb_sensor.get_line_sta("middle", 1) == 0b01:
        mbot2.turn_right(50)

    if mbuild.quad_rgb_sensor.get_line_sta("middle", 1) == 0b10:
        mbot2.turn_left(50)
```

Fuente Javier Quintana

El resultado es

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="695" src="https://www.youtube.com/embed/6itHWcvZnUs" title="Sigue líneas con mBot2" width="1236"></iframe>

# Créditos

<p class="callout info">A lo largo del tutorial se referencian las siguientes obras con las siguientes licencias y autores :</p>

**Manual de Cyberpi** *[https://www.robotix.es/ebook/cyberpi-guia.pdf](https://www.robotix.es/ebook/cyberpi-guia.pdf) contenidos e imágenes publicados con permiso de la empresa Robotix. Autor José Manuel Ruiz Gutiérrez.*

**Manual mBot2** [https://www.robotix.es/documentos/mbot2-actividades.pdf](https://www.robotix.es/documentos/mbot2-actividades.pdf) contenidos e imágenes publicados con permiso de la empresa Robotix.

**Ejemplos mBot2** *Pere Manel Verdugo Zamora [http://peremanelv.com/mblok.html](http://peremanelv.com/mblok.html) contenidos e imágenes publicados con permiso del autor*

**Scripts Python** *Repositorio [https://github.com/PerfecXX/Python-mBot2/tree/main](https://github.com/PerfecXX/Python-mBot2/tree/main)*

- - *Autor PerfecXX Teeraphat Kullanankanjana Engineer and Instructor, iMake Innovation, Thailand.*
    - *Licencia MIT https://github.com/PerfecXX/Python-mBot2/blob/main/LICENSE*

<p class="callout info">En el caso de que no se referencia ninguna de las anteriores, el autor y licencia es :</p>

Autor **Javier Quintana Peiró 2024 CATEDU**

LICENCIA : BY-NC-SA