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.