# Lucípeto y Giróvago

##### Lucípeto...

Muñoz (2023) presenta un código muy simple para que Cutebot pueda detectar las fuentes de luz intensa y se mueva hacia ellas, al igual que un insecto.

El código combina la lectura del sensor de luz de la placa micro:bit con los bloques de control de velocidad de los motores de CuteBot. Cuando el nivel de luz medido es muy bajo, el robot enciende las luces frontales con color rojo y **gira sobre sí mismo buscando una fuente de luz** lo suficientemente intensa. El giro se consigue moviendo las dos ruedas a la misma velocidad, pero en sentidos contrarios.

Cuando el sensor detecta suficiente luz, las dos ruedas pasan a girar a la misma velocidad, por lo que Cutebot avanza en línea recta hacia la fuente de luz. Adicionalmente, se encienden las luces frontales con luz blanca.

[![Lucípeto.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/lucipeto.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/lucipeto.png)

##### ...y Giróvago

Vamos a convertir Cutebot en un **spinner activado por un sonido fuerte,** como una palmada. El spinner girará sobre sí mismo, encenderá una luces e irá reduciendo paulatinamente su velocidad hasta pararse.

El código utilizado es el siguiente:

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

Esta vez introduciremos el código que hace girar al robot dentro del evento <span style="color: rgb(185, 106, 217);">**al detectar el sonido alto**</span>, disponible en el menú <span style="color: rgb(185, 106, 217);">**Entrada**</span>.

Necesitamos una variable, a la que llamaremos **<span style="color: rgb(224, 62, 45);">velocidad</span>**, para guardar el valor de la velocidad de las ruedas. Dicha velocidad irá disminuyendo progresivamente, al igual que ocurre en un spinner; la variable debe ser creada previamente pulsando sobre el menú **<span style="color: rgb(224, 62, 45);">Variables</span>**.

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

Volviendo al código, cuando micro:bit detecte un sonido fuerte, se activará el evento <span style="color: rgb(185, 106, 217);">**al detectar el sonido alto**</span> y la variable **<span style="color: rgb(224, 62, 45);">velocidad</span>** tomará al azar un valor inicial entre el 30% el 50%.

Seguidamente se iniciará un bucle <span style="color: rgb(45, 194, 107);">**mientras**</span> que mantendrá girando el robot durante 500 mS en cada iteración. La rueda derecha se moverá hacia adelante a **<span style="color: rgb(224, 62, 45);">velocidad</span>** y la rueda izquierda se moverá hacia atrás a **<span style="color: rgb(224, 62, 45);">-velocidad</span>**.

Transcurridos 500 mS, se restará 1 a la variable **<span style="color: rgb(224, 62, 45);">velocidad</span>**<span style="color: rgb(224, 62, 45);">. <span style="color: rgb(0, 0, 0);">Mientras la velocidad sea mayor que 10, el bucle **<span style="color: rgb(45, 194, 107);">mientras</span>** se volverá a ejecutar y Cutebot se mantendrá girando, aunque cada vez a menor velocidad.</span></span>

<span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Cuando la velocidad sea igual o menor que 10, la ejecución saldrá del bucle **<span style="color: rgb(45, 194, 107);">mientras</span>** y parará los motores.</span></span>

<span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Añadamos ahora al nuestro spinner **efectos de luces** con los LED colocados bajo la placa y con los bloques de la biblioteca <span style="color: rgb(53, 152, 219);">**Neopixel**</span>. Esta biblioteca está pensada para producir efectos de luz con tiras de LED. En primer lugar lugar hay que inicializar los dos LED que forman nuestra tira:</span></span>

<span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">[![Giro02.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/giro02.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/giro02.png)</span></span>

<span style="color: rgb(224, 62, 45);">**Fijar strip**</span> es un bloque que se encuentra en <span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);"><span style="color: rgb(53, 152, 219);">**Neopixel**</span>. **<span style="color: rgb(224, 62, 45);">Strip</span>** es la variable con la que nos refirimos a las luces colocadas bajo la placa de Cutebot, <span style="color: rgb(53, 152, 219);">**P15**</span> es el puerto correspondiente a las luces y **<span style="color: rgb(53, 152, 219);">2</span>** es el número total de luces a controlar.</span></span>

<span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Los LED **<span style="color: rgb(224, 62, 45);">R</span><span style="color: rgb(22, 145, 121);">G</span><span style="color: rgb(35, 111, 161);">B</span>** generan cada color gracias a la mezcla de tres luces, cada una de ellas correspondiente a uno de los tres colores primarios: <span style="color: rgb(224, 62, 45);">rojo</span>, <span style="color: rgb(22, 145, 121);">verde</span> y <span style="color: rgb(35, 111, 161);">azul</span>.</span></span>

<span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">En cada <span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">ejecución</span></span> del bucle </span></span><span style="color: rgb(45, 194, 107);">**mientras**</span><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);"> se encenderán los dos LED de la variable <span style="color: rgb(224, 62, 45);">**strip**</span> con un color que será la mezcla de los tres colores <span style="color: rgb(224, 62, 45);">rojo</span>, <span style="color: rgb(22, 145, 121);">verde</span> y <span style="color: rgb(35, 111, 161);">azul</span>, generados cada uno de ellos con intensidades aleatorias, desde 0 (valor mínimo) hasta 255 (valor máximo).</span></span>

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

<span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Al salir del bucle <span style="color: rgb(45, 194, 107);">**mientras**</span> es preciso apagar los LED mediante el bloque **<span style="color: rgb(224, 62, 45);">strip show color</span> <span style="color: rgb(53, 152, 219);">black</span>**.</span></span>

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

</span></span>