El reto consiste en hacer un siguelíneas negras, las líneas del circuito deben ser más anchas que la distancia entre los sensores infrarrojos de suelo del robot.
Control de motores
Se trata que el robot haga la siguiente secuencia de movimiento de forma indefinida:
- Adelante durante 1 segundo.
- Derecha durante 1 segundo.
- Izquierda durante 1 segundo.
- Atrás durante 1 segundo.
Dado gráfico
Un proyecto con dados que usa el patrón de puntitos de un dado en lugar de números.
Agita tu micro:bit para generar números aleatorios.
Este programa usa el acelerómetro del micro:bit para hacer que ocurra algo al agitarlo. Iniciar la creación de un número aleatorio entre 1 y 6 y mostrarlo en la pantalla LED.
En lugar de mostrar el número, este programa usa selección para mostrar puntos en la pantalla que, igual que los dados de verdad, representan el número que ha sido generado.
Cuando agitas el micro:bit, el programa genera un número aleatorio entre 1 y 6 y lo muestra en la pantalla LED.
Funciones para controlar el moviento de un robot
Cuando se construyen robot móviles, se debe conseguir que se muevan lentamente, para que cuando el sensor correspondiente detecta la variable de entorno, el robot tenga tiempo de reaccionar y realice la acción de control. Si el robot se mueve muy rápido, puede ocurrir que, aunque detecte la variable, no le dé tiempo a reaccionar.
La forma más sencilla de controlar los cambios de dirección en un robot es disponer de dos motores independientes y una rueda loca. De esta manera se pueden hacer cambios de dirección actuando sobre el sentido de giro de los motores.
Cómo se mueve un robot
Cuando las dos ruedas giran en el mismo sentido y misma velocidad, el robot avanza en línea recta.
Cuando las dos ruedas giran en el mismo sentido y distinta velocidad, el robot gira suavemente.
Si solo se hace girar una rueda el robot gira bruscamente deslizándose sobre la otra rueda.
Si las dos ruedas giran en distinta dirección y la misma velocidad, el robot gira bruscamente sobre el centro del eje.
Para controlar el movimiento de los motores vamos a utilizar el driver L293D .
Usaremos una serie de variables para definir los pines desde los que se controlan los motores. El control de sus velocidades requiere de pines digitales PWM.
En total vamos a necesitar seis pines, dos de ellos PWM, para controlar el funcionamiento del robot.
En la función setup() definimos si los pines van a ser entradas o salida.
pinMode(pinI1, OUTPUT);
pinMode(pinI2, OUTPUT);
pinMode(pinI3, OUTPUT);
pinMode(pinI4,OUTPUT);
Programamos el control de velocidad de los motores
Para controlar la velocidad y el sentido de giro de los motores de nuestro robot, vamos a definir siguientes funciones: GirarDerecha(), GirarIzquierda(), Avanzar() yRetroceder(). Cada una de ellas tiene un par de argumentos: la velocidad del motor (entre 0 y 255) y el sentido de giro.
1-. Giro violento hacia la IZQUIERDA
void GirarDerecha()
{
digitalWrite(pinI1, LOW);
digitalWrite(pinI2,HIGH);
digitalWrite(pinI3, LOW);
digitalWrite(pinI4,LOW);
}
2.- Gira a la DERECHA
void GirarIzquierda()
{
digitalWrite(pinI1, LOW);
digitalWrite(pinI2,LOW);
digitalWrite(pinI3, HIGH);
digitalWrite(pinI4,LOW);
}
3.- Avanza hacia adelante
void Avanzar()
{
digitalWrite(pinI1, HIGH);
digitalWrite(pinI2,LOW);
digitalWrite(pinI3, HIGH);
digitalWrite(pinI4,LOW);Movimiento con micro: Maqueen
En este tutorial vamos a aprender a utilizar los motores ya incluidos en tu kit micro: Maqueen.
Configurando el entorno para programar
La manera en la que le diremos a nuestro robot cómo tiene que moverse será a través de bloques de programación en la plataforma de Microsoft MakeCode, lo primero que tenemos que hacer es abrir el siguiente enlace:
https://makecode.microbit.org/y presionar en «New Project» (nuevo proyecto).
Importar archivos importantes para tu Maqueen
Ahora configuraremos el entorno para que el micro:bit pueda hablar con la placa principal del Maqueen, el primer paso es hacer click en el menú del engrane en la parte superior derecha y luego hacer click en el botón «Extensions»:
Tenemos que buscar las extensiones para Maqueen.
La página te regresará al editor de bloques y añadirá nuevos bloques interesantes especialmente diseñados para tu Maqueen:
El robot posee un sistema motor diferencial; esto significa que sus dos ruedas pueden girar independientemente, a una velocidad y en un sentido diferentes, lo que permite al robot desplazarse en cualquier dirección.
Maqueen puede rotar, girar hacia delante o hacia atrás, a la izquierda o a la derecha. Para ello, hay que indicarle el tipo de movimiento, la velocidad y la amplitud del giro en grados o segundos.
¿Unos pasos de baile?
Vamos a crear nuestro primer programa, moveremos los motores del Maqueen para que avance dos segundos hacia adelante, posteriormente gire dos segundos a la derecha, dos segundos a la izquierda y dos segundos hacia atrás, sencillo, ¿no?
Dentro de los bloques especiales para Maqueen busca el bloque que diga «Motor»:
El bloque «Motor» tiene 3 características que podemos configurar:
1.- Motor que queremos mover
Las opciones son: motor izquierdo y motor derecho
Avanzar.
Retroceder.
3.- Velocidad del motor
Nuestro motor tiene 255 niveles diferentes de velocidad, siendo 0 el mas lento o motor detenido y 255 el más rápido.
Vamos a hacer que nuestro micro: Maqueen gire hacia adelante:
Usaremos el bloque «para siempre» para hacer que nuestro código se ejecute en nuestro micro:bit de manera continua, primero arrastraremos desde el menú «Maqueen» dos bloques «Motor», necesitamos que ambos motores giren en la misma dirección para que nuestro Maqueen avance hacia adelante, definimos el motor izquierdo y el derecho, con la misma dirección «avanzar» y a máxima velocidad «255».
El bloque «pause»
Nuestro Maqueen tiene un poderoso procesador y puede ejecutar tareas a una velocidad muy rápida, muchas veces necesitamos apreciar las acciones que realizan nuestros programas o simplemente hacer que duren un tiempo específico, este bloque nos permite decirle al micro:bit que haga una pausa antes de que ejecute el siguiente bloque.
Para ser más específicos, podemos decirle a nuestro micro:bit el tiempo exacto en milisegundos (ms), vamos a aprender que 1000 milisegundos equivalen a 1 segundo, 2000 milisegundos a 2 segundos, 3000 milisegundos a 3 segundos y así sucesivamente. ?
Habíamos acordado que haríamos que nuestro Maqueen avanzara hacia adelante cada 2 segundos, entonces definiremos un bloque «pause» con el valor de 2000 ms para que mueva ambos motores en la misma dirección durante ese tiempo antes de girar a la derecha.
¡Ahora para la derecha!
Dentro del bloque «para siempre» nuevamente vamos a arrastrar dos bloques «Motor», esta vez no importa la dirección del motor derecho, ya que para girar necesitamos mover un solo motor, el motor izquierdo a máxima velocidad (255),y el motor derecho parado, finalizamos con un bloque «pause» para 2 segundos.
¿Giramos a la izquierda?
Repetiremos los mismos bloques pero esta vez haremos que el motor izquierdo quede detenido y el derecho lo configuraremos a girar a máxima velocidad (255), ¡no te olvides del bloque «pause»! ?
¡Vamos para atrás!
Esta vez necesitamos que ambos motores giren a la misma velocidad pero en dirección contraria, porque esta vez iremos de reversa, nota que cambiamos el parámetro «dir» a «retroceder».
¡Vamos a girar!
Esta vez necesitamos que ambos motores giren a la misma velocidad pero en dirección contraria, motor derecho avanzar y motor izquierdo retroceder.
¡Ya terminamos!
Vamos a hacer que nuestro Maqueen se detenga por completo, empezará desde el principio una vez pasados 1 segundos porque todos nuestros bloques se encuentran dentro del bloque «para siempre».
Programa ¡Cinco frutas al día!
Los pasos que hay que seguir para esta otra propuesta son los siguientes:
1. Definición del problema. Se trata de programar un juego consistente en evitar que una serie de frutas y pasteles que aparecen en el escenario de forma aleatoria caiga al suelo. Si esto llegase a ocurrir, el juego terminaría. Se incluye, además, un marcador cuya puntuación aumenta cada vez que una fruta es recogida. El objeto Perro dispondrá de dos disfraces: uno verde para comer fruta y otro rojo para recoger los pasteles.
2. Análisis y solución del problema. Para solucionar el problema planteado, hay que trabajar sobre los siguientes elementos:
2.1. Escenario. Es preciso que contenga una línea en la parte inferior que detecte los objetos que se depositan en el suelo.
2.2. Objetos. El programa incluye tres objetos: Perro, Fruta (Banana) y Pastel.
2.3. Rutinas de programación:
a) Rutina de control del gato. El perro se desplazará en horizontal mediante dos teclas y cambiará de disfraz al pulsar la barra espaciadora.
b) Rutina para detectar si el perro verde se ha comido una fruta o el perro rojo ha recogido un pastel. El marcador aumentará en un punto cuando el perro entre en contacto con una fruta.
c) Rutina para que los objetos Fruta y Pastel caigan verticalmente desde una posición aleatoria. Si alguno de ellos llega a tocar el suelo, finalizará el juego.
d) Rutina para almacenar la lista de frutas recogidas.
3. Programación:
3.1. Diseño. El diseño del juego será similar al mostrado a continuación:
A cada uno de los objetos se le asignarán varios disfraces. Los perros azul y rojo pueden conseguirse fácilmente en la pestaña Disfraces duplicando el gato que aparece por defecto y pintándolo luego con la herramienta Pincel. Los disfraces de los objetos Fruta y Pastel se obtienen de la biblioteca del programa.
Asigna a los disfraces del perro el nombre de Perro azul y Perro rojo, respectivamente, tal como aparece en la imagen.
- Creación de variables
Para crear la variable marcador, que mostrará por pantalla las frutas que se han recogido, se selecciona la opción Variables de la pestaña Código.
Después, se hace clic en Crear una variable y se le asigna el nombre marcador.
- Programación del objeto Perro
Para programar el movimiento y el cambio de disfraz, se selecciona el objeto Perro y en la pestaña Código se añaden los bloques que pueden verse abajo.
- Rutina para programar los objetos Banana y pastel.
Debe repetirse está rutina con el objeto pastel.
La siguiente rutina se ejecuta al recibir el mensaje "Otra fruta"
Se elige un disfraz aleatorio entre los cuatro disponibles y se sitúa la fruta al azar en la parte superior del escenario. Se realiza un bloque similar en el caso del objeto Pastel para cuando reciba el mensaje «Otro pastel».
• Rutina «Mi lista de frutas». Para saber qué frutas se han recogido en el transcurso del juego, se utilizará la lista cestaFruta creada más arriba.
A tal fin, en el objeto Perro se han de añadir los siguientes bloques:
Los programas casi nunca funcionan a la primera. Llegados a este punto, es preciso realizar pruebas, corregir errores y verificar que se cumple con el objetivo planteado. Si es así, podremos compartir el fruto de nuestro trabajo con el resto del mundo.
Actividades
2.- Cuando el perro se haya comido cinco el juego termina con éxito. Indica dónde debe ir este bloque.
Ordenar condiciones
También es posible formar condiciones más complejas enlazando varias de ellas mediante las conjunciones y, o o no. La siguiente figura muestra cómo se podría comprobar si un número no es negativo de dos formas: utilizando conjunciones o prescindiendo de ellas. La siguiente figura muestra cómo se podría comprobar si un número no es negativo de dos formas: utilizando conjunciones o prescindiendo de ellas.