Control del robot con infrarojos
Control con mando a distancia.
La placa Imagina Arduino lleva incorporado un receptor infrarrojo, se encuentra al lado de los sensores de temperatura y luz.
Pasamos a controlar el robot en tiempo real. Vamos a utilizar inicialmente el mando de Keyestudio, que dispone de un bloque específico en ArduinoBlocks, lo que hace que la programación sea muy rápida y sencilla.
Posteriormente aprenderemos a utilizar cualquier mando, incluido el de la tele, que siempre está muy a mano.
Y finalmente, haremos un programa un poco más avanzado en el que, no solo cambiaremos la dirección del robot, sino también su velocidad.
#01 Control de la dirección
Para este ejemplo vamos a utilizar el mando de infrarrojos (IR) de Keyestudio. Concretamente usaremos las teclas de dirección para mover al robot en las cuatro direcciones. Además, con el botón central de “OK”, haremos que pare.
Para ello, necesitamos dos nuevos bloques:
- En el apartado “3dBot” tenemos el bloque “Receptor IR” que lee los datos procedentes de un mando con infrarrojos:
- En el apartado “3dBot” encontramos el bloque del mando de Keyestudio, en el que, pulsando en el desplegable, podemos seleccionar cualquier de sus teclas:
Usaremos el bloque de comparación en el apartado de “Texto” que dice “igual a” para comparar datos leído por el sensor IR con el dato seleccionado por nosotros para una función determinada.Con un condicional “Si”, decidiremos qué acción tomar.
En la variable “Mando” guardamos los valores leídos por el receptor infrarrojos, para así compararlos con los valores correspondientes al mando. El programa resultante lo podemos ver a continuación:
#02 Control de dirección y velocidad con el mando de keyestudio
En el apartado “3dBot” encontraremos el bloque con el que controlar la dirección de cada motor y su velocidad.
La velocidad del motor se controla con el dato numérico que hay en la parte derecha del bloque. Su velocidad aumenta proporcionalmente al número incluido, siendo 0 motor parado, y 255 motor a su máxima velocidad. Ahí podemos incluir una variable para que ese velocidad provenga de una lectura del mando IR, por ejemplo.
En el desplegable al lado de la palabra “Motor”, seleccionamos qué motor queremos controlar.
Y en el desplegable siguiente, elegimos el sentido de giro:
Una vez conocidos los nuevos elementos, vamos a realizar el programa. Para ello, se van a definir las variables que representan los movimientos que podrá efectuar el robot. Como decíamos, la velocidad la tomaremos de una variable “Velocidad” que crearemos en el bucle del programa.
Funciones:
- “Adelante”: con los dos motores girando en el sentido de avance, hacemos que se mueva en línea recta:
- “Giro izquierda”: Lo conseguimos avanzando con la rueda derecha y manteniendo la izquierda apagada:
- “Giro derecha”: Lo conseguimos avanzado con la rueda izquierda y manteniendo la derecha apagada:
- “Parar”: Lo hacemos seleccionando en ambos motores la opción “Parar”.
Bucle:
Primero leemos los datos recibidos por el receptor IR y los guardamos en la variable “Mando”. A continuación, diferenciamos los datos recibidos en dos tipos:
- Datos para el cambio de velocidad.
- Datos para el cambio de dirección.
Los datos para el cambio de velocidad los guardamos en la variable numérica “Velocidad” y los datos para el cambio de sentido de giro los guardamos en la variable de texto “Giro”.
Como hemos visto en la definición de las funciones, la variable “Velocidad” la insertamos en los bloques de movimiento de los motores, dentro de la definición de las funciones.
Finalmente, establecemos las condiciones para que, dependiendo del valor de la variable “Giro”, vaya en la dirección deseada.
#03 Lectura de los códigos de las teclas desde un mando IR
Primero tenemos que ver qué número nos manda cada botón del mando que vayamos a usar. Lo que vamos a hacer es presionar el botón del mando, leer el dato enviado e imprimirlo en la pantalla del ordenador. De ahí ya podemos copiarlo para nuestro futuro programa.
Simplemente hay que recordar que, para visualizar datos en la pantalla, hay que realizar el envío de datos al ordenador cada cierto tiempo (no constantemente) para no saturar la comunicación. Veamos cómo queda el programa:
Dependiendo de qué botón se pulse, aparecerá un valor u otro. Es importante tener en cuenta que, si no accionamos ningú polsador, lo habitual será recibir un 0. Obtendréis algo así, tras conectaros a la “consola”:
Número leído | Tecla | Función que voy a assignar en 3dBot |
---|---|---|
00FF629D | Flecha arriba | Adelante |
00FFC23D | Flecha derecha | Giro derecha |
00FF22DD | Flecha izquierda | Giro izquierda |
00FF02FD | Tecla OK | Parar |
#04 Control del robot con un mando IR cualquiera
Usando los códigos leídos en el programa anterior, vamos a hacer un sistema de control de nuestro robot por mando IR. El programa es exactamente igual que el del ejercicio anterior, solo que ahora comparamos con estos nuevos códigos.
En este caso vamos a guardar las lecturas del sensor IR en una variable que hemos llamado “Lectura Mando”. Da igual el nombre, podéis poner el que queráis.
Se le pueden añadir más funciones, como la de movimiento hacia atrás, que en este caso no se ha programado, rotaciones, luces, etc.