¿Cómo hacer un sigue-líneas con mbot?
¡¡Hola a tod@s!! Llega una nueva entrega de ‘Aprende con Droide Comunidad‘. Como ya sabéis queremos que conozcáis la robótica y la programación de forma fácil y sencilla mediante creativas prácticas. Hoy aprenderemos a hacer un sigue-líneas con mbot 😉 ¡¡Suena bien, verdad?!!
Sigue-líneas
En esta lección vamos a realizar una actividad esencial en prácticas de robótica móvil, el robot sigue-líneas. Como su nombre indica, es un robot que va a circular siguiendo una línea de un color diferente al suelo, en nuestro caso de color negro. Para ello utilizaremos el módulo de sensores infrarrojos, del cual a continuación vamos a explicar su funcionamiento.
Los sensores de línea son dos optoacopladores de reflexión que montaremos en la parte inferior delantera del robot. Utilizan la reflexión de luz infrarroja para detectar el tono del suelo en el punto en que se encuentra el robot.
El módulo, está compuesto por una estructura compacta donde la fuente emisora de luz y el detector están dispuestos en la misma dirección para poder detectar mediante el uso de los rayos infrarrojos la luz reflejada en una superficie. Una vez aprendido como funciona el sensor, vamos a resolver la programación siguiendo la siguiente lógica:
Si ambos sensores se encuentran sobre la línea negra nuestro robot debe avanzar hacia delante, por lo tanto ambos motores deberán funcionar en el mismo sentido y misma velocidad.
Si nuestro robot se desvía hacia la izquierda, es decir, el sensor de la parte izquierda queda fuera de la línea, el motor izquierdo irá a más velocidad que el derecho para rectificar la posición. Si por el contrario nuestro robot se desvía hacia la derecha quedando el sensor de la parte derecha fuera de la línea, el motor derecho irá a más velocidad que el izquierdo para volver al centro de la línea.
Ya disponemos de la lógica a seguir para programar nuestro robot. Ahora podemos reflejar está discusión en una tabla de la verdad, para que nos resulte más fácil llevar a cabo el programa.
Estado |
Sensor Izq. | Sensor Der. | Motor Izq. | Motor Der. |
1 |
Negro | Negro |
Misma velocidad |
|
2 |
Blanco | Negro | Mantiene vel. | Reduce vel. |
3 | Negro |
Blanco |
Reduce vel. |
Mantiene vel. |
Lo siguiente que necesitamos saber es qué valores nos devuelve el módulo infrarrojo según el estado en el que se encuentre. En mBlock obtenemos los valores que indicamos a continuación con el bloque sigue-líneas:
Programación
Vamos a declarar dos variables para indicar los valores de desvío hacia la izquierda y hacia la derecha. Una variable es un valor que guardamos y que podremos recuperar cuando necesitemos utilizarlo. Podemos decir que es como una caja donde guardamos un objeto y lo cogemos cuando nos hace falta.
Para ello vamos a Datos y bloques > Crear una variable.
Estas variables las inicializamos con el valor 1 para el desvío a la izquierda, y 2 para el desvío a la derecha:
A continuación declaramos otra variable para almacenar la lectura del sensor. Además, debemos incluir toda la ejecución de nuestro programa dentro de un bucle infinito por siempre:
Recuerda que debes indicar el puerto donde has conectado el sensor, en nuestro caso lo hemos conectado en el puerto 1.
Fíjate que hemos declarado dos variables antes del bucle de ejecución (denominado loop en Arduino) y una dentro de él. Existe una gran diferencia, ya que las dos primeras son variables globales, mientras que la que se encuentra dentro del bucle es una variable local. Tendremos en cuenta lo siguiente:
Variables globales: se crean al inicio del programa y pueden utilizarse en cualquier momento que se requiera en nuestra programación.
Variables locales: se pueden crear en funciones o procedimientos o bien en el bucle de ejecución principal (Loop). A diferencia de las variables globales, solo se pueden utilizar dentro de la función, bucle o condición donde han sido declaradas. Esto produce que cuando dejan de hacer falta, son borradas dejando espacio en la memoria del robot.
Vamos ahora a plasmar la lógica de nuestro programa en la ejecución principal.
Siempre que el sensor de la izquierda esté fuera de la línea, el motor izquierdo M1 irá a más velocidad que el derecho.
Siempre que el sensor de la derecha esté fuera de la línea, el motor derecho M2 irá a más velocidad que el izquierdo.
Finalmente vamos a cargarlo en nuestra placa. Recordamos que debemos conectar el cable USB a nuestra placa y ordenador y seleccionar en el menú Placas > mBot, y después el puerto de comunicaciones correspondiente a nuestra placa controladora en Conectar > Serial Port.
Una vez hecho esto hacemos click en Upload to Arduino y esperamos a que el programa se haya cargado en nuestra placa.
Te proponemos
- Experimentar con diferentes circuitos con curvas más o menos complejas para optimizar el movimiento del robot con velocidades que impidan salirse del circuito.
- Cambiar la lógica del programa, es decir, que el robot para avanzar no deba tener ambos sensores dentro de la línea, por ejemplo que el izquierdo lea blanco y el derecho negro.
Si te ha gustado este pequeño avance y eres un/una niñ@, seguro que te gustan nuestras extraescolares tecnológicas y los talleres de sábados que puedes ver aquí ¡¡Descubre el taller de robótica para profesionales!! Cursos y talleres mensuales de robótica y programación en Droide Comunidad ¡¡Únete a la comunidad robótica de Droide!!
¡¡Aprender a programar es cosa de niñ@s!!¡¡Queremos ver vuestros avances!! No dejéis de escribirnos y compartir en nuestras redes sociales 😉
Tag:actividades de robótica, actividades de robótica en valencia, aprender a programar con scratch, aprender electrónica, aprender robótica, arduino, curso de robótica, Droide Comunidad, ejercicio de robótica, eléctronica, hacer siguelíneas, makeblock, mbot, práctica de programación, programación, robótica en Valencia, robots, Scratch, siguelíneas, Valencia