Robot Maqueen para Micro:bit


 Maqueen es un kit de robótica ideal programable con la placa micro:bit (no incluida) para iniciarse en la programación gráfica y la robótica móvil trabajando las STEM y se combina con la versatilidad y la sencillez de micro:bit. El reducido tamaño del chásis, el acabado de buena calidad, las multiples prestaciones integradas y el que sea plug-and-play ayudan a captar inmediatamente la atención fomentando su curiosidad e interés por la ciencia y el pensamiento lógico.

Viene totalmente montado a falta de conectar las ruedas y las pilas, por lo tanto no es necesario soldar y se puede poner a funcionar en pocos minutos con los códigos de ejemplo. Es necesario pinchar una placa micro:bit para poder utilizar el robot. La misma placa también ofrecerá la posibilidad de usar sus diversos sensores e inventar diferentes juegos. Se programa directamente con el entorno visual Makecode de Microsoft. Es adecuado para niños con edad a partir de 8 Años.

Conoce tu nuevo micro: Maqueen

Aquí vienen todas las cosas que hacen al Maqueen algo genial.


  1. Sensor de línea: 2 sensores digitales blanco y negro (Niveles alto y bajo)
  2. Buzzer: Tonos y música para tu proyecto
  3. Infrarrojo: Receptor infrarrojo para controlar tu Maqueen (Decodificador NEC)
  4. LEDs indicadores frontales: 2 LEDs color rojo difuso
  5. LEDs RGB multicolor de ambiente: 4 LEDs capaces de hacer hasta 16 millones de colores
  6. Sensor de distancia ultrasónico: 1SR04, SR04P (5V)
  7. Conector para comunicación I2C: sólo funciona con 3.3V
  8. Puertos para servomotor: 2 líneas
  9. Conector para pines digitales multipropósito
  10. Conector para micro:bit

Características:

  •  Alimentación: 3.5V a 5V DC ( Necesita 3 pilas AAA - No incluidas )
  •  2 Sensores de infrarrojo
  •  1 Zumbador
  •  Receptor infrarrojo (NEC decoder)
  •  2 Luces LED programables
  •  4 LEDs RGB programables
  •  Sensor de distancia SR04
  •  Conector I2C para expansiones
  •  2 motores N20 metálicos con reductora de 1:150
  •  Máxima revoluciones: 133 RPM
  •  Control de motores variable por PWM
  •  Funda protectora para lo smotores con tonrillos M3
  •  Programación: Entorno gráfico Makecode
  •  Dimensiones: 81 x 85 x 44mm
  •  Peso: 75.55 gramos
  •  Voltaje de alimentación: 3.5V a 5V DC (Tres pilas AAA o una batería de lítio 3V a 3.7V).
  • Interfaces Gravity (P1, P2)
  • 2 Micro-motores de engranajes de metal con relación 1:150, 133rpm, controlados por PWM
  • Brackets para los motores con insertos M3
  • Dimensiones: 81mm x 85mm x 44mm/3.19in x 3.35in x 1.73in
  • Masa: 75.55gr

 Fuente:330ohms

 

 

Robot seguidor de luz

El reto consiste en que le robot persiga una fuente luminosa a partir de cierto umbral de luz. Recordamos que el sensor de luz de la micro:bit se encuentra en la matriz de leds.


 

Robot evita obstáculos

El reto consiste en que el robot evite obstáculos que estén a menos de 20 cm del mismo. Además cuando los evita lo hará aleatoriamente a derechas o izquierdas.



Robot seguidor de líneas

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.

 Descargar HEX

 

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.

Pero dado que los motores que vamos a usar en el taller  hemos llegado a la conclusión que es más efectivo para el funcionamiento de nuestro robot el conectar los pines EA y EB, a +5 v y controlar solo el sentido de giro del motor, lo cual nos simplifica 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);
}


4.- Retroceder

void Retroceder()

{

digitalWrite(pinI1, LOW);

digitalWrite(pinI2,HIGH);

digitalWrite(pinI3, LOW);

digitalWrite(pinI4,HIGH);
}


5.- Parar

void Parar()

{

digitalWrite(pinI1,LOW);

digitalWrite(pinI2,LOW);

digitalWrite(pinI3, LOW);

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

2.- Dirección en la que girará el motor (dir)

   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».


Fuente: Tutorial #2 | Movimiento con micro: Maqueen

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:

 
Para ello, es preciso elegir el fondo en la biblioteca del programa y crear los tres objetos que aparecen 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.
 
 3.2 Rutinas de programación

  • 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.

 

Hay que generar, también, una lista para registrar en ella las frutas recogidas. Se pulsa con este fin sobre Crear una lista y se le da la denominación de cestaFruta.



  •  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 detectar si el perro azul se ha comido una fruta o el perro rojo ha recogido un pastel.

 

 

Con objeto de enviar mensajes («Otra fruta» y «Otro pastel»), se utiliza el bloque Enviar mensaje de la categoría Eventos.

  • 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:


Rutina «Añadir frutas a la lista». En relación con el objeto Fruta, esta rutina permitirá añadir a la lista la fruta que se acaba de recoger antes de que aparezca la siguiente.


 

4. Verificación y depuración

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


1.- Comer muchos dulces no es sano. Añade una instrucción para restar 1 punto en el marcador cada vez que el gato entre en contacto con un pastel.

2.- Cuando el  perro se haya comido cinco el juego termina con éxito.  Indica dónde debe ir este bloque.
 

 Enviar enlace del programa terminaDO

Ordenar condiciones

Si…
La orden si (...) entonces, que pertenece a la categoría Control (color naranja claro), resulta útil para analizar la respuesta del usuario. Esta se puede utilizar también junto con un operador de comparación, como igual a, menor que o mayor que, disponibles en la categoría Operadores (color verde claro). Por ejemplo, se puede pedir al usuario del programa que calcule el resultado de la operación aritmética 8 x 5 y ordenar que, si este acierta, el programa confirme el resultado de dicha operación, como se muestra en la siguiente figura.




Ejemplo






 
 
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. 





Interaccionar con el usuario

 Los datos que no están prefijados se pueden obtener a través del usuario del programa. Para ello, existe la orden preguntar (...) y esperar, dentro del apartado Sensores (color azul claro). En ese mismo bloque de órdenes, aparecerá la respuesta, que almacenará lo que haya tecleado el usuario. Para mostrar el texto en pantalla, se puede emplear la orden decir, del apartado Apariencia (color violeta), como muestra la figura del margen, en la que el programa pregunta el nombre al usuario y luego lo saludaban.


Programa que interacciona con el usuario
 

Pantalla principal del programa



Mostrar si un número es par o impar

El operador mod calcula el resto de la división entre dos números. Por ejemplo, el resultado de 13 mod 4 sería 1 porque, al dividir 13 entre 4, se obtiene 3 y el resto es 1. Usa este operador para crear un programa que pida un número al usuario y diga si es par (es decir, si el resto al dividir entre 2 es 0) o no.

El diagrama de flujo sería el siguiente:



 

Una posible solución al problema podría ser la siguiente:

Código

 

 


Explicación del programa: Se pregunta por un número, a continuación se comprueba si el resto de la operación es cero y si es así se muestra el mensaje "El número es par", en caso contrario se muestra el mensaje "El número es impar"




Programa «Limpieza del océano

El plástico no es un juego

Realizar un juego que simule la recogida de envases del fondo del mar por un submarinista.

 Los pasos que han de seguirse para realizar un programa son los siguientes:

1. Definición del problema. Ante la proliferación de plásticos depositados en el mar, un submarinista tiene la misión de recogerlos y eliminarlos, al tiempo que tiene que escapar de un terrible tiburón que sigue de cerca su rastro.

 2. Análisis y solución del problema. Para solucionar el problema planteado, hay que trabajar sobre los siguientes elementos:

2.1. Escenario. Se elige uno entre los proporcionados por Scratch.

2.2. Objetos. Se utilizarán tres objetos: el submarinista, un tiburón y un objeto llamado Plástico, que almacenará una lista de plásticos


2.3. Rutinas de programación:

a) Rutina para que aparezcan distintos tipos de plástico conforme se

van recogiendo.

b) Rutina para hacer que el tiburón persiga al submarinista.

c) Rutina para mover al submarinista y finalizar el juego si es atrapado por el tiburón.

d) Rutinas para controlar al submarinista con el teclado.

3. Programación:

3.1. Diseño. El escenario y los objetos son elegidos en la biblioteca proporcionada por la aplicación. Previamente, se elimina el objeto con el disfraz del gato mediante el icono de la papelera que aparece sobre el mismo. El resultado final debe ser similar al que puedes ver en esta captura:


 El objeto plástico contendrá disfraces. En esta pantalla se muestra cómo añadirlos desde la pestaña Disfraces:


Los diferentes disfraces del objeto plástico se descargarán de internet y a continuación se les eliminará el fondo con la siguiente aplicación: remove.bg

3.2. Rutinas de programación. Cada objeto tendrá asignadas unas rutinas que definirán su comportamiento:

Rutina Plástico

Repite continuamente el mismo funcionamiento: si el plástico entra en contacto con el submarinista, aparece de nuevo con un disfraz diferente en una posición aleatoria.


Rutina Tiburón

Al comenzar el programa, el tiburón se coloca en una posición aleatoria por siempre posición aleatoria. Después apunta siempre al submarinista y se dirige hacia él.


Rutina Submarinista 

Su movimiento se dirige con el teclado. Se utilizan para ello las teclas de flecha, que apuntan cada una en una dirección. Mediante un bucle infinito (por siempre) se hace que se mueva continuamente y rebote en los bordes de la pantalla. Si entra en contacto con el tiburón, finaliza el juego.




Una vez comprobado que el programa funciona, es necesario modificar el programa para incluir una variable llamada vidas y otra puntos.


  • La variable vidas se utilizará para controlar las vidas del submarinista, en este programa serán 3.
  • La variable puntos se utilizará para contar el número de envases que recoge el submarinista.