Skip to main content

Rover marciano

Control remoto

Programemos un robot de exploración a control remoto. Esta vez serán necesarias dos placas micro:bit, una receptora montada sobre Cutebot y una emisora a modo de mando de control remoto.

Además, Cutebot enviará a la placa usada como control la información que capten sus sensores durante las exploraciones.

En primer lugar, es preciso que ambas placas ajusten la radio Bluetooth en el mismo grupo y banda de frecuencia. Los bloques necesarios se encuentran en el menú Radio. El siguiente código es por lo tanto común a la placa emisora y a la receptora.

Rover00.png

Vamos ahora con el emisor. Cuando pulsemos los botones A+B, el rover debe avanzar. Para ello le enviaremos por radio una cadena de texto con el código "Av".

Rover01.png

Al pulsar el botón A el mando enviará un código "Iz", que indicará un giro a la izquierda. De la misma forma, Al pulsar el botón B el mando mandará un código "De", indicativo de un giro a la derecha.

Rover02.png

El código básico del emisor está ya resuelto. En cuanto al receptor, éste sólo debe ocuparse de mover el rover cuando reciba los códigos. Un rover marciano debe moverse muy despacio, así que cada vez que se reciba un código, las ruedas se mantendrán en movimiento durante unos pocos milisegundos.

Rover09.png

La estructura si...si no, si... se obtiene del menú Lógica; habrá que pulsar sobre los símbolos + y - para añadir o quitar condiciones a la estructura.

El evento al recibir radio se encuentra en el menú Radio. receivedString hace referencia al código recibido, y puede arrastarse para encajarse en los comparadores incluye, que se encuentran en el menú ^Avanzado Texto.

El código es muy claro: cuando se recibe una cadena de texto se comprueba si contiene el código "Av" y, en caso afirmativo, se hace avanzar a Cutebot durante 500 ms.  Si por el contrario el código es "Iz", el robot girará a la izquierda durante 250 ms. Por último, cuando el código sea "De", el robot girará a la derecha durante otros 250 ms. FInalmente, se pararán los motores.

Transmisión de datos ambientales

Hagamos ahora que el rover transmita información sobre los obstáculos que vaya encontrando. En primer lugar haremos que su placa micro:bit  muestre el logotipo de la misión de exploración planetaria (La Tierra y Marte):

Rover04.png

Cada vez que el robot reciba un código para moverse, se comprobará la distancia medida por el sensor y, si ésta resulta ser menor o igual a 10 cm, se enviará el dato numérico al mando a distancia. Como puede verse a continuación, esta función se consigue añadiendo sólo dos bloques más.

Rover08.png

Por su parte, la placa que se usa como control remoto debe mostrar en su pantalla el valor de la distancia que haya medido y retransmitido el rover. En primer lugar borraremos  la pantalla LED cada vez que enviemos un código al rover.

Rover06.png

Mediante el bloque plot bar graph del menú LED, mostraremos en la pantalla del mando una barra luminosa cada vez que se reciba un número desde el rover.

Rover07.png

Mediante la función de resta entre 10 y el distancia recibida desde el rover conseguimos que la barra muestre su altura máxima cuando la distancia a un obstáculo sea mínima. De igual forma, la barra tendrá un altura nula cuando no haya obstáculos cercanos.

Podemos conseguir un movimiento más preciso del rover reduciendo los tiempos de avance y giro, por ejemplo, a 250 ms y 125 ms. También podemos añadir la función de marcha atrás al pulsar el logo táctil.