Programando Cutebot
Cutebot se mueve
Evitando obstáculos
El sensor de distancia
El kit básico de Cutebot incluye un sensor de distancia. Se trata de un accesorio conectable al frontal de Cutebot mediante cuatro pines marcados en la placa como "SONAR". El funcionamiento de la placa se basa en la emisión de ultrasonidos y en la recepción de los ecos generados cuando las ondas rebotan contra objetos cercanos.
El sensor de distancias debe conectarse en el puerto marcado como "SONAR" y no en el marcado como "IIC". Es muy posible confundirse, ya que ambos conectores se encuentran juntos.
El bloque que proporciona la medida de la distancia detectada por el sensor es Sensor de distancia cm HC-SR04, y se encuentra en el menú de bloques de Cutebot. La medida proporcionada por el sensor puede ajustarse en cm y en pulgadas.
El programa mostrado sobre estas líneas es el código básico que detiene el movimiento de Cutebot al encontrar un obstáculo. Cuando el sensor de distancia detecta un obstáculo a menos de 10 cm, el coche se detiene por completo y enciende las luces rojas. En caso de no encontrar ningún obstáculo, el robot simplemente se mueve hacia adelante con las luces apagadas.
Recordatorio: si Cutebot no anvanza en línea recta, habrá que aumentar ligeramente la velocidad de una de las ruedas. Si el desvío se produce hacia la izquierda, habrá que aumentar la velocidad de la rueda izquierda. Si el desvío se produce hacia la derecha, habrá que aumentar la velocidad de la rueda derecha.
Detección y evitación de obstáculos
Es posible refinar el código para que Cutebot no se detenga ante un obstáculo, sino que lo esquive. Para ello haremos que cuando el robot se encuentre con un obstáculo, haga un giro al azar a la izquierda o a la derecha durante 250 ms y continúe con la ejecución del programa.
Un ligero retroceso antes de empezar a girar puede mejorar el comportamiento del robot.
Jugando con la distancia de detección y con los tiempos de giro y retroceso también puede mejorarse el comportamiento del robot ante los obstáculos.
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.
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:
El bucle para siempre 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 (El estado del seguimiento es ●●), 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.
Si el sensor derecho detecta color blanco (El estado del seguimiento es ●○), 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:
Si, por el contrario, el sensor izquierdo detecta color blanco (El estado del seguimiento es ○●), el robot se habrá desviado hacia la izquierda y habrá que girarlo hacia la derecha para recolocarlo sobre la línea:
¿Qué ocurre si el robot ha perdido completamente la línea y los dos sensores detectan color blanco? En este caso, (El estado del seguimiento es ○○), conviene parar el robot. El código completo se muestra a continuación:
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%.
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:
De acuerdo con el último bloque condicional, cuando se pierda la línea (El estado del seguimiento es ○○) 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:
Más prácticas con Cutebot
En la wiki de la empresa de Cutebot: Elecfreaks https://elecfreaks.com/learn-en/microbitKit/smart_cutebot/index.html encontrarás 14 prácticas muy interesantes, que no podemos reproducir en este libro por tener los derechos reservados :
- Case 01: Move Forward or Reverse at the Full Speed
- Una práctica sencilla que según el botón que aprietas en en microbit ejecuta una velocidad u otra
- Case 02: Speed Up Gradually
- El cutebot va ganando velocidad
- Case 03: Dance in Figure-of-eight
- El cutebot hace el recorrido de un 8
- Case 04: Run at Random
- El cutebot danza de forma aleatoria
- Case 05: Automatic Headlights.
- Si es de noche, se encienden las luces
- Case 06: Steering&Clearance Lamps.
- Según los botones, las lámparas flashean 5 veces
- Case 07: Fall-arrest Cutebot.
- En la wiki pone que el propósito es que cuando detecta el borde de la mesa, vuelve atrás y gira. ATENCIÓN no aconsejable hacerlo en una mesa, por el peligro de caída, se recomienda hacer una figura cerrada con cinta negra y el cutebot no saldrá del recinto.
- Case 08: Run Along the Black Line.
- El típico siguelíneas
- El típico siguelíneas
- Case 09: Autonomous Obstacle Avoidance.
- El típico salva-obstáculos
- Case 10: Car Following with A Fixed Distance.
- Cutebot se mueve siguiendo tu mano, manteniendo una distancia fija.
- Case 11: micro:bit Remote Control.
- coche teledirigido con otro microbit y los botones
- coche teledirigido con otro microbit y los botones
- Case 12: Remote Control the Cutebot with micro:bit Accelerometer.
- el mismo ejemplo pero usando el acelerómetro (inclinación) en vez de los botones
- (omitimos este ejemplo pues requiere un joystick no proporcionado en el kit)
- Case 14: IR Remote Control Car.
-
- coche teledirigido pero con el mando IR
-
- Case15: Seeking the Light.
- Cutebot sigue la luz
Hay más retos pero con accesorios que no se proporciona en el kit básico