
Chisme del Lince 188: Siguelíneas Cutebot, el mismo algoritmo con otro robot
La escena
Taller de Lynx Enterprises, viernes a primera hora. La Gata Montesa llega con un Cutebot azul bajo el brazo y lo deja junto al circuito de cinta negra que el Lince pegó ayer. Siguelineas Cutebot.
—Ya tengo el programa —dice el Lince de la Noche, muy ufano—. Copio el del Maqueen, lo pego, y el Cutebot sigue la cinta.
Pega el programa en MakeCode. El editor se llena de líneas rojas y un mensaje: Cannot find name ‘maqueen’.
—¡Está roto! —protesta.
—No está roto —responde la Gata—. Cada robot habla su idioma. El Maqueen te pregunta por cada sensor, uno a uno. Mi Cutebot te cuenta lo que ven los dos de golpe, con dos circulitos.
—Pues el algoritmo será el mismo —refunfuña el Lince.
—Exacto. Lo único que cambia es cómo se lo preguntas al robot.
Introducción
En este chisme programamos un siguelíneas Cutebot con micro:bit y MakeCode. Es el mismo algoritmo del siguelíneas Maqueen, con otra forma de leer los sensores y de mover las ruedas.
Primero lo ensayamos en un simulador del siguelíneas Cutebot, con sensores, ruedas y tres circuitos. Después pasamos al robot real.
Por qué este chisme
Un buen programador sabe que una misma idea se puede escribir de muchas maneras. Cambia el robot, la extensión o el lenguaje, pero las cuatro reglas del siguelíneas siguen siendo las mismas.
Este es el segundo chisme de la pareja. Haz primero el 187 si no lo has hecho: allí se explica con calma la Misión 0 y los sensores.
Cómo funciona
El Cutebot tiene dos sensores infrarrojos bajo el morro, uno a cada lado. Miden cuánta luz rebota del suelo: el blanco devuelve mucha y la cinta negra casi nada.
Un solo bloque de MakeCode te dice el estado de los dos con dos círculos. El primero es el sensor izquierdo y el segundo, el derecho.
| Bloque | Qué ven los sensores | Qué hace el robot |
|---|---|---|
| ○ ○ | los dos ven suelo: la línea pasa en medio | sigue recto |
| ● ○ | el izquierdo ve la línea | gira a la izquierda |
| ○ ● | el derecho ve la línea | gira a la derecha |
| ● ● | los dos ven la línea: un cruce | sigue recto |
Aquí ● quiere decir que el sensor ve la línea negra. Compruébalo con tu robot en la Misión 0.
Para girar a la izquierda, la rueda izquierda se queda a 0 y la derecha va a la velocidad elegida. Es la tracción diferencial que ya viste en el Maqueen del chisme 72.
Qué necesitamos
- Un robot Cutebot (de Elecfreaks) con una micro:bit V2 y sus pilas.
- Un ordenador con MakeCode para micro:bit y la extensión cutebot.
- Cinta aislante negra de unos 2 cm sobre un suelo claro, para hacer el circuito.
Usamos la extensión cutebot, no la «Cutebot-Pro». Si tu robot es el modelo Pro, la extensión es otra: pregunta a tu profesor.
Misión 0: ¿qué ve cada sensor?
Antes de programar, comprueba que el bloque dice la verdad. Carga este programa en la pestaña JavaScript de MakeCode.
// MISIÓN 0 · ¿qué ve cada sensor?
// Flecha a la izquierda = el bloque dice "izquierdo sobre la línea, derecho no"
// Flecha a la derecha = "derecho sobre la línea, izquierdo no"
// X = cualquier otro caso
basic.forever(function () {
if (cuteBot.tracking(cuteBot.TrackingState.L_line_R_unline)) {
basic.showArrow(ArrowNames.West)
} else if (cuteBot.tracking(cuteBot.TrackingState.L_unline_R_line)) {
basic.showArrow(ArrowNames.East)
} else {
basic.showIcon(IconNames.No)
}
})
Pasa el robot sobre la cinta con la mano. Con el sensor izquierdo sobre la línea debe salir la flecha a la izquierda. Si sale al revés, anótalo: tendrás que cambiar el programa.
El programa
El programa pregunta por el estado de los sensores y mueve cada rueda con un porcentaje de velocidad. Los botones A y B bajan y suben la velocidad, de 20 a 100.

Aquí tienes el mismo programa en JavaScript, listo para pegar. La parte importante es el bucle basic.forever.
// PARTE 1 · lo importante: leer los dos sensores y decidir
let velocidad = 50
input.onButtonPressed(Button.A, function () {
velocidad = Math.max(20, velocidad - 10)
basic.showNumber(velocidad / 10)
})
input.onButtonPressed(Button.B, function () {
velocidad = Math.min(100, velocidad + 10)
basic.showNumber(velocidad / 10)
})
basic.forever(function () {
if (cuteBot.tracking(cuteBot.TrackingState.L_line_R_unline)) {
// la linea se va por la izquierda: gira a la izquierda
cuteBot.motors(0, velocidad)
} else if (cuteBot.tracking(cuteBot.TrackingState.L_unline_R_line)) {
// la linea se va por la derecha: gira a la derecha
cuteBot.motors(velocidad, 0)
} else {
// los dos en blanco o los dos en negro (cruce): recto
cuteBot.motors(velocidad, velocidad)
}
})
Lo que debes cambiar tú: nada si la Misión 0 salió bien. Si el robot gira al revés, intercambia los dos números en cada cuteBot.motors.
Cómo probarlo
- Con el robot en alto, comprueba que
cuteBot.motors(izquierda, derecha)respeta ese orden: la primera cifra mueve la rueda izquierda. - Pon la velocidad en 50 y coloca el robot sobre la cinta, con los sensores a los lados de la línea.
- Pulsa reset. Si en una curva cerrada se sale, baja la velocidad con el botón A. Prueba con 30 o 40.
Antes de gastar pilas, ensaya en el simulador. Tiene un modo para ver todo hecho, cámara lenta y una tabla donde se apuntan tus pruebas.

Qué estamos midiendo realmente
Los sensores no saben lo que es una línea: solo miden cuánta luz infrarroja vuelve. Un suelo oscuro, una cinta brillante o el sol fuerte pueden engañarlos.
El robot tampoco mira todo el tiempo. Lee, decide, manda órdenes a las ruedas y vuelve a empezar. Entre dos lecturas pasa un tiempo.
A velocidad alta, en ese tiempo recorre mucha distancia. Si llega a una curva cerrada, se pasa de largo.

En el simulador puedes cambiar la pausa y el ruido. Medir no significa medir bien: un robot que funciona una vez no es un robot fiable.
Para el aula
- Maqueen contra Cutebot: ¿qué robot llega más rápido al final del mismo circuito? Cuidado: hay que ir a la misma velocidad.
- Mismo algoritmo, otra pregunta: escribe las cuatro situaciones con las palabras del Maqueen y con los círculos del Cutebot.
- Hipótesis: «con la pausa en 50 ms, la velocidad máxima baja». Se prueba en el simulador y después en el robot.
- Errores: pega el programa del Maqueen en un proyecto del Cutebot. ¿Qué mensaje sale y por qué?
- DUA · representación: tabla, dibujos, círculos, bloques y JavaScript para la misma idea.
- DUA · acción y expresión: se puede cargar el programa completo sin escribir nada, o completarlo paso a paso.
- DUA · implicación: cámara lenta, letra grande y tres circuitos de dificultad creciente.
Retos
- Haz que funcione: dos vueltas al circuito más fácil.
- Modifica algo: cambia la velocidad inicial.
- Rueda interior: en lugar de 0, pon
-velocidaden la rueda del lado del giro. ¿Mejora en las esquinas? - Añade una luz: enciende los faros del Cutebot cuando haya un cruce.
- Guarda los datos: apunta velocidad, circuito y resultado de diez pruebas.
- Reto con mensaje: diseña una ruta para un robot que lleve medicinas a un pueblo de la sierra.
Qué hemos aprendido
- El siguelíneas Cutebot y el Maqueen usan el mismo algoritmo con distinta forma de preguntar.
- Un bloque puede resumir dos sensores en una sola respuesta.
- Un programa de un robot no sirve tal cual para otro: cambia la extensión.
- La velocidad, el tiempo de reacción y el ruido limitan lo que puede hacer un robot.
Escena final
El Cutebot rodea el circuito sin pestañear. El Lince lo mira con los brazos cruzados.
—Mismo algoritmo, distinto idioma —admite.
—Y esta vez has leído el mensaje de error —dice la Gata—. Eso también es programar.
Para seguir investigando
- Siguelíneas Maqueen: el chisme hermano, con la Misión 0 explicada despacio (chisme 187).
- Robot seguidor de línea con micro:bit: el chisme 83.
- MakeCode para micro:bit: el editor de bloques y JavaScript.
- Radiación infrarroja en Wikipedia: la luz que usan los sensores.
Etiqueta:AIDARAC, cutebot, ies monterroso, makecode, micro:bit, montesteam, ROBÓTICA, sensor de línea, siguelíneas



