# Un sencillo seguidor de líneas

##### Código básico

Los dos **sensores ópticos** colocados bajo la placa de Cutebot, similares a los de un ratón de ordenador, pueden detectar líneas negras. El kit de Cutebot incluye una plantilla de papel con una línea negra cerrada a modo de **circuito**. Programaremos micro:bit para que Cutebot sea capaz de **reconocer el circuito y recorrerlo de forma autónoma**.

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

Tras cargar la extensión de Cutebot, comenzaremos por introducir un código que muestre en la matriz de LED de micro:bit el logotipo del **seguidor de líneas**:

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

El bucle <span style="color: rgb(53, 152, 219);">**para siempre**</span> se dedicará a leer continuamente los dos sensores de líneas y a actuar sobre la velocidad de las ruedas. Cuando los dos sensores de líneas detecten el color negro (**<span style="color: rgb(45, 194, 107);">El estado del seguimiento es ●●</span>**), significará que Cutebot está justo sobre la línea del circuito y que debe continuar avanzando hacia adelante. Para ello hay que hacer girar las dos ruedas a la misma velocidad.

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

Si el **sensor derecho detecta color blanco** (**<span style="color: rgb(45, 194, 107);">El estado del seguimiento es ●</span><span style="color: rgb(45, 194, 107);">○</span>**), el robot se ha salido de la línea por la derecha y debe girar hacia la izquierda. Para ello habrá que parar la rueda izquierda y hacer girar la rueda derecha hacia adelante. El código tendrá el siguiente aspecto:

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

Si, por el contrario, el **sensor izquierdo detecta color blanco** (**<span style="color: rgb(45, 194, 107);">El estado del seguimiento es ○●</span>**), el robot se habrá desviado hacia la izquierda y habrá que girarlo hacia la derecha para recolocarlo sobre la línea:

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

¿Qué ocurre si el robot ha perdido completamente la línea y los dos sensores detectan color blanco? En este caso, (**<span style="color: rgb(45, 194, 107);">El estado del seguimiento es ○○</span>**), conviene parar el robot. El código completo se muestra a continuación:

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

<p class="callout info">Cuando las pilas estén muy frescas, Cutebot se desplazará más rápido y puede que pierda la línea continuamente. Este problema se soluciona reduciendo la velocidad de las ruedas, por ejemplo al 20%.</p>

##### Mutatis mutandis

El código desarrollado es efectivo, pero admite muchas mejoras. Por ejemplo, cuando el robot intente dar una curva muy cerrada, es posible que pierda la línea y se detenga completamente. Realicemos una pequeña modificación en el código para que Cutebot pueda volver a encontrar la línea perdida:[![Sigue05.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/sigue05.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/sigue05.png)

De acuerdo con el último bloque condicional, cuando se pierda la línea (**<span style="color: rgb(45, 194, 107);">El estado del seguimiento es ○○</span>**) el robot comenzará a rotar sobre sí mismo y no se detendrá hasta que la vuelva a encontrar.

Si no frenamos completamente las ruedas al realizar las correcciones de la trayectoria podremos conseguir que el movimiento de Cutebot sea más suave. El código requiere unos cambios mínimos:

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

##### <iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/oX2qu-l3F6Q" width="560"></iframe>



##### Añadimos funciones automáticas

El seguidor de líneas puede incorporar luces automáticas que se enciendan, por ejemplo, al entrar en un túnel. Incorporar esta función es tan simple como añadir al código un **evento de tiempo** que lea el sensor de luz de micro:bit y, dependiendo del valor medido, encienda o apague los LED de Cutebot.[![Sigue06.png](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/sigue06.png)](https://libros.catedu.es/uploads/images/gallery/2023-09/sigue06.png)