Controlar los movimientos del coche con otra placa microbit. Tendremos en cuenta la inclinación de la placa para enviar las órdenes de movimiento al coche.
Programación:
Antes de realizar esta actividad, recomendamos realizar el ejercicio «mensajes radio» para comprender el funcionamiento del control por radiofrecuencia.
Debemos programar dos placas: Una que funcionará como mando a distancia, y otra que estará incorporada en el coche y se encarga de realizar los movimientos del coche.
Programación del mando:
Logotipo hacia abajo: Al posicionar la placa microbit con el logotipo hacia abajo, dibujamos una flecha hacia adelante y enviamos un mensaje al coche para indicarle que tiene que avanzar.
Logotipo hacia arriba: Al posicionar la placa microbit con el logotipo hacia arriba, dibujamos una flecha hacia atrás y enviamos un mensaje al coche para indicarle que tiene que retroceder.
Inclinación a la derecha:Al posicionar la placa microbit inclinada hacia la derecha, dibujamos una flecha hacia la derecha y enviamos un mensaje al coche para indicarle que tiene que girar en ese sentido.
Inclinación a la izquierda:Al posicionar la placa microbit inclinada hacia la izquierda, dibujamos una flecha hacia la izquierda y enviamos un mensaje al coche para indicarle que tiene que girar en ese sentido.
Al agitar el mando:Dibujamos un cuadrado y enviamos la orden de parar.
Programación del coche:
El coche se comunica con el mando por radiofrecuencia.
Al recibir avanza: Cuando el coche recibe la orden de avanzar, dibuja una flecha en el sentido de avance y mueve los motores. Al estar colocados un motor enfrente del otro los parámetros son contrarios, es decir, para un motor avanza con una velocidad 50 y el otro motor avanza con velocidad -50.
Al recibir retrocede: Cuando el coche recibe la orden de retroceder, dibuja una flecha en el sentido de retroceso y mueve los motores. Su velocidad será al revés que en avance. Cuando un motor se movía a 50, ahora se mueve a -50, y viceversa. Así cambiamos el sentido de giro.
Utilizamos una variable para registrar si el coche está avanzando (0) o retrocediendo. (1). Necesitamos este dato para hacer correctamente los giros, ya que la orden no es igual si estamos avanzando o retrocediendo.
Al recibir derecha: Dibujo la flecha hacia la derecha. Si estaba avanzando, paro el motor de la derecha. Si estaba retrocediendo paro el motor de la izquierda.
Al recibir izquierda: Dibujo la flecha hacia la izquierda. Si estaba avanzando, paro el motor de la izquierdo. Si estaba retrocediendo paro el motor de la derecho.
Al recibir para: Dibuja un cuadrado y detén los dos motores.
Programar el coche para que atienda a las siguientes órdenes:
Al tocar el logo, el coche avanza / retrocede.
Al presionar el botón A, el coche gira a la izquierda.
Al presionar el botón B, el coche gira a la derecha.
Al tapar el sensor de luz, el coche se para.
Programación:
Avanzar y retroceder: Para cambiar el sentido de la marcha, utilizamos el sensor de contacto del logo. Al tocarlo, el coche retrocede si estaba avanzando, o avanza si estaba retrocediendo.
Utilizamos una variable para indicar el sentido de la marcha actual. Cuando el coche avanza, la variable vale 0 y cuando el coche retrocede, la variable vale 1.
Al tocar el sensor de contacto
– Si la variable vale 0, cambia el sentido de los motores (-50 y 50), pon 1 en la variable y el coche retrocederá.
– Si la variable vale 1, cambia el sentido de los motores (50 y -50), pon 0 en la variable y el coche avanzará
Girar a la derecha: Para girar a la derecha, ponemos a 0 la velocidad del motor P2. Tenemos en cuenta si el coche avanzaba o retrocedía para que respete el sentido de giro. Para ello utilizamos la variable sentido
Girar a la izquierda: Para girar a la izquierda, ponemos a 0 la velocidad del motor P1. Tenemos en cuenta si el coche avanzaba o retrocedía para que respete el sentido de giro. Para ello utilizamos la variable sentido
Parar: Si detectamos un nivel de luz igual a cero, significa que estamos tapando la esquina superior derecha de la placa, que es donde se ubica el sensor de luz. En ese caso, detenemos ambos motores.
La plataforma contiene dos motores con ruedas que podemos programar para que el robot se desplace. Vamos a ver cómo programar a microbit para realizar desplazamientos en línea recta y giros.
BLOQUES
Sección Mbit_Robot
Pulsando en esta sección accedemos a los bloques para programar los movimientos del coche.
Bloque CarCtrlSpeed
El coche se mueve a la velocidad indicada.
Pulsando en la flecha podemos seleccionar distintos sentidos de giro de los motores:
Forward:
Back:
Turn left:
Turn right:
Stop:
Rotate left:
Rotate right:
Avanza hacia adelante
Retrocede marcha atrás
Gira a la izquierda
Gira a la derecha
Para
Vuelta a la izquierda
Vuelta a la derecha
PROGRAMACIÓN
Probamos cada una de las instrucciones relacionadas con el movimiento del vehículo. Para que el coche se mueva no debemos olvidar poner detrás de cada instrucción de movimiento un tiempo de espera que será el tiempo que el vehículo estará realizando cada movimiento antes de cambiar de dirección
Ampliar el coche microbit añadiéndole servomotores tanto de 180º como de rotación continua.
Un servomotor de 180º es un motor cuyo eje se posiciona en un ángulo concreto que le indiquemos por programación.
Identificados con la serigrafía J2, J3 y J4, localizamos en la placa un conjunto de pines que podemos utilizar para la conexión de servomotores tanto de rotación continua como de 180º. Cada salida J tiene asociados 3 pines: GND, V y datos. Conectaremos los servomotores respetando la regla de colores:
Conector Coche Microbit
Negro
Rojo
Amarillo
Cable Servomotor
Marrón
Rojo
Naranja
GND
5V
DATOS
BLOQUES
Bloque Servo_Car
En la sección Mbit_Robot localizamos el bloque Servo_Car. Este bloque lo utillizaremos para indicar al coche el ángulo en el que queremos posicionar al servomotor.
Servomotor contínuo:
Si value = 0, el motor girará contínuamente en un sentido
Si value = 180, el motor girará contínuamente en sentido contrario
Si value = 90, el motor se para
Servomotor 180º:
El servomotor se posiciona en el ángulo que se indique, entre 0 y 180º
La salida S1 del bloque Servo_Car se corresponde con el pin J2 del coche
La salida S2 del bloque Servo_Car se corresponde con el pin J3 del coche
La salida S3 del bloque Servo_Car se corresponde con el pin J4 del coche
Bloque al presionar el botón A / B
Microbit incluye en a propia placa dos pulsadores serigrafiados como A y B. Utilizamos este bloque para indicar a la placa que cuando alguien presione un pulsador concreto qué acciones debe realizar.
PROGRAMACIÓN
1. El pulsador A hace girar el motor en un sentido y el B en sentido contrario
El coche microbit contiene un sensor ultrasonido cuya finalidad es la detección de obstáculos frente al coche.
Para utilizar el sensor ultrasonido, se recomienda alimentar el coche con una batería externa.
A continuación programaremos microbit para realizar lecturas del sensor ultrasonido.
BLOQUES
Sección Mbit Sensor
En esta sección encontraremos módulos específicos para la lectura de los sensores del coche
Para leer la distancia calculada por el sensor ultrasonido hasta el obstáculo más cercano, utilizaremos el módulo Ultrasonic, indicando en Trig el pin 14 y en Echo el pin 15
PROGRAMACIÓN
1. Micro:bit muestra una cara contenta si detecta un obstáculo cerca
Para crear la estructura lógica del programa utilizamos un bloque condicional que localizaremos en la sección Logic.
El operador de comparación < lo localizarás en la misma sección.
Programaremos el coche microbit para que circule sobre una línea negra de cinta aislante sin salirse sea cual sea el trazo del recorrido.
En su base, el coche microbit dispone de dos sensores capaces de detectar líneas negras sobre un fondo blanco. Para realizar la lectura del sensor de línea y programar el robot en base a los datos del sensor, utilizaremos los siguientes bloques
BLOQUES
Sección Mbit_Robot
Pulsando en esta sección accedemos a los bloques para programar el coche.
Line_Sensor direct
Este bloque lo utilizamos para comprobar si un sensor está encima de una línea negra o blanca.
Tendremos que indicar cual de los dos sensores estamos leyendo (left o right) y si evaluamos la línea blanca o negra (white o black)
Sección Lógica
Los robots tienen la capacidad de tomar decisiones en función del entorno que les rodea. Para poder crear esa capacidad de decisión disponemos de bloques en la sección de lógica que nos ayudarán a programar la inteligencia del robot
Si ... entonces ...
En el hexágono "verdadero" introducimos una condición. Si la condición se cumple, se realizarán los bloques que introduzcamos a continuación. Si posteriormente queremos añadir un grupo de instrucciones "si no", pulsamos en +
Si ... entonces ... si no...
En el hexágono "verdadero" introducimos una condición. Si la condición se cumple, se realizarán los bloques que introduzcamos a continuación. Si no se cumple se realizarán los bloques que introduzcamos a continuación del si no
Unión de condiciones
Podemos utilizar operadores lógicos para unir varias condiciones
Y
La evaluación de la unión de las condiciones es verdadera si ambas condiciones lo son
O
Para que la evaluación de la unión de las dos condiciones se verdadera, basta con que una de las dos condiciones que se unen se cumpla
PROGRAMACIÓN
1. Encender los LEDS en color blanco si algún sensor está sobre una línea blanca
Evalúa el estado de los dos sensores de línea
Si el sensor izquierdo está sobre la línea blanca, o el sensor derecho está sobre la línea blanca, entonces mostrará una luz blanca en los leds.
Si no (es decir, si ningún sensor está sobre una línea blanca) entonces mostrará una luz roja en los leds
Mientras que el coche se encuentre sobre una línea negra, avanzará en línea recta. Cuando el coche detecta que uno de los sensores está sobre una zona blanca, rectifica su dirección girando ligeramente hacia el lado contrario al sensor.
El coche microbit incluye en su parte delantera 3 LEDs RGB de tipo SMD que pueden iluminarse con luces de diferentes colores. A continuación veremos los bloques necesarios para su programación
BLOQUES
Sección Neopixel
En esta sección encontraremos los bloques necesarios para la programación de los 3 LEDs RGB incorporados en el frontal del coche
Estructura de LEDs
Dentro de la sección Mbit_robot encontraremos el bloque RGB Car Program que utilizaremos para gestionar los 3 LEDs RGB
Bloque set pixel color
Pertenece a la sección Neopixel y su función es configurar el color de la luz de cada uno de los 3 RGBs de la placa.
Para poder utilizarla con los LEDs RGB del coche, en lugar de strip, utilizaremos el bloque RGB Car Program que se encuentra en la sección Mbit_Robot.
Bloque Show
Una vez configurado el color del LED RGB SMD, utilizaremos este bloque para encender el LED. No olvides incluir la estructura RGB Car Program en lugar de strip
Bloque clear
Apaga los LEDS RGB SMD de la estructura de LEDs RGB Car Program
PROGRAMACIÓN
1. Enciende cada LED de un color diferente
Utilizaremos el bloque set pixel color
Para encender un led, indicaremos el número del LED (0, 1, 2) y el color de la luz (seleccionar desde el desplegable).
Una vez configurado el color, con el bloque Show encenderemos el LED del color seleccionado.