# 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>