
En esta guía aprenderás a controlar el Innobot desde el control remoto IR.
Info
- Principiantes
- Edades: 11+
Temas STEAM
- Tecnología.
- Ingeniería.
- Matemáticas.
Desarrollo de las actividades
Paso 1
Conexión del sensor a la tarjeta Innobot
Conecte el Módulo Receptor Infrarrojo Pygmalion + Cable a la entrada de sensor J4 (o el que tengamos disponible).
Paso 2
Identificación del código de cada botón del control
Con este programa inicial, se puede saber que código hexadecimal está asociado a cada botón de nuestro control.
En el control remoto, cada botón está asociado a un número hexadecimal de 6 a 8 caracteres. Aunque los controles parezcan iguales, no necesariamente tienen los mismos códigos asociados a cada botón, por esto es necesario identificar que código tiene cada botón del control con el que vamos a trabajar.
Paso 3
En CODE, realice el siguiente programa:
#include <IRremote.h> //incluir esta librería para utilizar sensor IR int receptor = J4; //conectamos el sensor IR en el puerto J4 IRrecv irrecv(receptor); //especifica a través de que pin se va a recibir la informacion (receptor = J4) decode_results codigo; //objeto código de clase decode_result, oriundo de IRremote.h void setup() { Serial.begin(9600); //inicializar el puerto de comunicación serial a 9600 baudios irrecv.enableIRIn(); //iniciar la recepción del sensor IR } void loop() { if (irrecv.decode(&codigo)) //si hay algún evento en la lectura del sensor IR, hacer... { Serial.println(codigo.value, HEX); //imprimir el valor leído por el sensor IR en hexadecimal por el puerto serial delay(100); //esperar 100 milisegundos irrecv.resume(); //reiniciar la lectura del sensor IR } }
Esta aplicación solo podemos programarla en CODE
Paso 4
Suba el programa al Innobot y abra la “Consola Serial” para ver los códigos que envía el control remoto a presionar sus botones.
Nota: El código FFFFFFFF no corresponde a una tecla en particular, este código aparece cuando se deja un botón presionado.
Paso 5
Oprima el botón ↑ del control, apuntando hacia el sensor IR y anote el valor en hexadecimal que aparece.
Paso 6
Haga el procedimiento del paso 5 para cada botón que vaya a usar del control y apunte los valores que aparecen en la consola serial.
Programación del Innobot (sin dejar presionado el botón)
Con este programa vamos a lograr que el Innobot se mueva en diferentes direcciones o se detenga según el botón que oprimamos en el control remoto.
En la siguiente tabla aparecen las acciones que debe hacer el Innobot según el botón que presionemos:
Paso 1
En CODE, digitamos el programa
#include <IRremote.h> //incluir esta librería para utilizar sensor IR int receptor = J4; //conectamos el sensor IR en el puerto J4 IRrecv irrecv(receptor); //especifica a través de que puerto se va a recibir la información (receptor = J4) decode_results codigo; //objeto código de clase decode_result, oriundo de IRremote.h void setup() { irrecv.enableIRIn(); //iniciar la recepción del sensor IR motorSpeed(M1, 100); //definir la velocidad del motor M1 al 100% motorSpeed(M2, 100); //definir la velocidad del motor M2 al 100% } void loop() { if (irrecv.decode(&codigo)) //si hay algún evento en la lectura del sensor IR, hacer... { irrecv.resume(); //reiniciar la lectura del sensor IR if (codigo.value == 0xFF02FD) //si oprime el botón para ir hacia adelante { motorOn(M1, FORWARD); motorOn(M2, FORWARD); } if (codigo.value == 0xFF9867) // si oprime el botón para reversar, hacer... { motorOn(M1, REVERSE); motorOn(M2, REVERSE); } if (codigo.value == 0xFF906F) //si oprime el botón para girar a la derecha, hacer... { motorOn(M1, REVERSE); motorOn(M2, FORWARD); } if (codigo.value == 0xFFE01F) //si oprime el botón para girar a la izquierda, hacer... { motorOn(M1, FORWARD); motorOn(M2, REVERSE); } if (codigo.value == 0xFFA857) //si oprime el botón para apagar los motores, hacer... { motorOff(M1); motorOff(M2); } } }
Esta aplicación solo podemos programarla en CODE
Programación del Innobot (dejando presionado el botón)
A diferencia del programa anterior, ahora programaremos el Innobot para que los motores se muevan solo mientras se mantenga presionado el botón.
Paso 1
Completamos la tabla que se hizo en el programa. Ya no necesitamos el botón ENTER (Detenerse) pero si agregamos los botones A y B para abrir y cerrar las pinzas respectivamente.
Paso 2
Digitamos el siguiente programa en CODE. Acá utilizaremos switch case en vez de if.
#include <IRremote.h> //incluir esta librería para utilizar sensor IR const long int adelante = 0xFF02FD; //asociamos los códigos de los botones a una constante const long int atras = 0xFF9867; const long int derecha = 0xFF906F; const long int izquierda = 0xFFE01F; const long int abrir = 0xFF22DD; const long int cerrar = 0xFFC23D; const long int pulsada = 0xFFFFFFFF; int RECV_PIN = J4; //conectamos el sensor IR en el puerto J4 IRrecv irrecv(RECV_PIN); //especifica a través de que pin se va a recibir la informacion (receptor = J4) decode_results results; //objeto código de clase decode_result, oriundo de IRremote.h void setup() { motorSpeed(M1, 100); //definimos la velocidad de los motores motorSpeed(M2, 100); motorSpeed(M3, 50); irrecv.enableIRIn(); //habilitar la recepción del sensor IR } void loop() { if (irrecv.decode(&results)) //SI hay algún evento en la lectura del sensor IR, hacer... { irrecv.resume(); //reiniciar la lectura del sensor IR delay(150); //tiempo de espera necesario para que el sensor lea la señal switch (results.value) //en results.value está el código recibido en el evento del sensor IR { case adelante: //en caso de presionar el botón... hacer... goForward(M1, M2); break; case atras: goReverse(M1, M2); break; case derecha: turnRight(M2, M1); break; case izquierda: turnLeft(M2, M1); break; case abrir: motorOn(M3 , REVERSE); break; case cerrar: motorOn(M3 , FORWARD); break; } } else //en caso de no tener presionado ningún botón... apagar los motores { motorsOff(M1, M2); motorOff(M3); } }
Paso 3
Verifique el programa y cárguelo a la tarjeta innobot.
Conceptos claves
Sistemas de numeración: Existen varios sistemas de numeración, entre ellos el más conocido es el decimal (base 10 o que tiene 10 caracteres 0 – 9). En electrónica digital se utiliza principalmente el sistema binario (base 2 o que tiene 2 caracteres 0 y 1), ya que este solo tiene dos estados como sucede en muchos casos de la electrónica y programación:
- Esta presionado el pulsador o no.
- Esta encendido o no el led.
- Fluye o no corriente eléctrica.
- Verdadero o falso.
Sistema de numeración hexadecimal: Es un sistema de base 16 (tiene 16 caracteres 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F) y en cierta forma encapsula los números en base 2 (binarios) en grupos de a 4 para que ocupen menos espacio.
Control remoto: Es un dispositivo electrónico que emite una luz infrarroja con determinada frecuencia según el código en hexadecimal que quiere transmitir. Cada botón del control remoto corresponde a un número hexadecimal diferente.
Sensor IR: Es un sensor de luz infrarroja por medio del cual, la tarjeta del Innobot detecta los códigos que envían desde el control remoto o cualquier emisor de luz infrarroja.
Esta aplicación solo podemos programarla en CODE
- Innobot, Kits de robótica, Kits Educativos, Robótica, STEM Toys
Kit de Robótica Innobot + Baterías recargables + Bluetooth
Innobot, Kits de robótica, Kits Educativos, Robótica, STEM ToysKit de Robótica Innobot + Baterías recargables + Bluetooth
Kit de robótica educativo Innobot, contiene más de 350 piezas y se pueden realizar más de 5 funcionalidades con el mismo kit. Es un kit ideal para jóvenes mayores de 11 años y adultos, y permite desarrollar habilidades en educación STEM (Ciencia, Tecnología, Ingeniería y Matemáticas) a través de la programación, la electrónica y la mecánica.
SKU: PYG0001
Más Tutoriales