Robot recolector de objetos

Info

  • Principiantes
  • Edades: 11+

 

Temas STEAM

  • Tecnología
  • Ingeniería

Recomendaciones

Introducción

En este tutorial se programará el Innobot como un robot recolector de objetos. Además se construirán funciones propias.

Materiales

1. Prueba de la pinza
En esta sección aprenderás cómo ejecutar la programación para probar el funcionamiento de la pinza.

Paso 1

  • Para comenzar, debes verificar la conexión del motor de la pinza M3
  • Desatornilla y atornilla los conectores para ingresar los cables de los motores en el orden que sugiere la ilustración.

 

Pag24_img

Paso 2

  • Para detectar objetos nos apoyamos en el sensor ultrasonido, este sensor se instala en el Innobot de tal forma que al estar un objeto en frente del robot da una lectura en centímetros (cm), que corresponde a la distancia del objeto. Dicho en otras palabras este sensor indicará que tan lejos está el robot del objeto.
  • Una forma para detectar los objetos se muestra en la siguiente imagen, la figura de la izquierda nos dice que si el sensor ultrasonido nos da un valor entre 3 cm y 30 cm (es igual a decir menor a 30 cm) es porque detectamos  el objeto (en este caso una botella), y en la figura de la derecha vemos que cuando el sensor nos da una lectura entre 3 cm y 12 cm es porque la botella está tan cerca que ya la podemos agarrar.

 

Paso 1 - Detectar Objetos

Paso 3

Traslada tres bloques de control de velocidad (Velocidad del Motor) hasta Configuraciones, luego, para cada motor (M1, M2 y M3) varía su velocidad a un 60%.

pinzas_12

Paso 4

Enciende el motor M3 hacia ADELANTE por medio segundo, y apaga todos los motores del robot.

pinzas_13

Paso 5

Construye el siguiente algoritmo en el Ciclo Infinito.

  1. SI el sensor de ultrasonido que está conectado en J3 detecta una distancia menor o igual a 30, entonces:
  2. Encender motor M3 en REVERSA
  3. Esperar medio segundo
  4. Apagar motor M3
  5. Ir hacia Adelante con motores M1 y M2

 pinzas_14

Paso 6

Debajo del bloque Ir hacia Adelante, agrega la parte del código que hará que el robot recolecte el objeto:

  1. SI el sensor de ultrasonido que está conectado en J3 detecta una distancia menor o igual a 12, entonces:
  2. Apagar Motores M1 y M2
  3. Encender Motor M3 hacia ADELANTE
  4. Esperar medio segundo
  5. Apagar motor M3
  6. Esperar 20 segundos

pinzas_15

Carga el programa en el Innobot, verifica que recolecte un objeto que esté a menos de 30 cm.

2. Robot recolector de objetos

A continuación se construirá el código de un robot detector y recolector de objetos utilizando FUNCIONES.

Funciones

Una función es un bloque de código que tiene un nombre y un conjunto de instrucciones que son ejecutadas cuando se llama en alguna parte del código, las funciones sirven para ahorrar líneas de código ya que en muchas ocasiones hay bloques completos de instrucciones que se repiten varias veces, un función, evita tener que escribirlas una y otra vez.

Paso 1

Lo primero que realizaremos son las funciones básicas del robot para desplazarse, esto es ir  Adelante, ir Atrás y girar a la Derecha. Sin utilizar los bloques ya definidos en el programa para realizar estas acciones.

Bloque de Funciones

pinzas_16
Es un bloque de código que permite generar pequeños algoritmos con instrucciones ya definidas en el programa y que podemos llamar cuando sea necesario en el programa para que realice una acción determinada en cualquier momento.

Paso 2

Para construir una función, debes trasladar un bloque de Función desde la categoría de Funciones, después de Ciclo Infinito.

pinzas_17

Paso 3

Luego debes escribir un nombre único para la función, no es posible tener dos funciones con el mismo nombre. Dentro de la función, puedes agregar cuantos instrucciones necesites. En este caso se agregaran, dos bloques de Encender Motor, uno para M1 y otro para M2, además se agregó un bloque de Esperar por 300 milisegundos.

Paso 4

Si quieres construir más funciones, solo debes agregarlas cómo se hizo con la primera. Construyamos ir Atras, girar a la Derecha y girar a la Izquierda.

pinzas_19

Paso 5

Ahora construye las funciones agarrarObjeto y soltarObjeto.

pinzas_20

Paso 6

Ahora, se utilizarán las funciones construidas. Las funciones se encuentran en la categoría Funciones, busca la función que necesites allí y traslada el bloque de la función hasta Ciclo Infinito o Configuraciones.

pinzas_21

Paso 7

Vamos a construir el programa principal,

pinzas_22

Paso 8

Agreguemos unas funciones más:

1. Prueba de la Pinza
En esta sección aprenderás cómo ejecutar la programación para probar el funcionamiento de la pinza.

Paso 1

  • Para comenzar, debes verificar la conexión del motor de la pinza M3
  • Desatornilla y atornilla los conectores para ingresar los cables de los motores en el orden que sugiere la ilustración.

 

Pag24_img

Paso 2

  • Para detectar objetos nos apoyamos en el sensor ultrasonido, este sensor se instala en el Innobot de tal forma que al estar un objeto en frente del robot da una lectura en centímetros (cm), que corresponde a la distancia del objeto. Dicho en otras palabras este sensor indicará que tan lejos está el robot del objeto.
  • Una forma para detectar los objetos se muestra en la siguiente imagen, la figura de la izquierda nos dice que si el sensor ultrasonido nos da un valor entre 3 cm y 30 cm (es igual a decir menor a 30 cm) es porque detectamos  el objeto (en este caso una botella), y en la figura de la derecha vemos que cuando el sensor nos da una lectura entre 3 cm y 12 cm es porque la botella está tan cerca que ya la podemos agarrar.

 

Paso 1 - Detectar Objetos

Paso 3

Escribe el siguiente código y cárgalo en el Innobot.

void setup () {
  motorSpeed(M1,60);
  motorSpeed(M2,60);
  motorSpeed(M3,60);
  motorOn(M3,FORWARD);
  delay(500);
  motorOff(M3);
  motorsOff(M1 , M2);
}
void loop () {
  if (ultrasoundRead(J3) <= 30) {
    motorOn(M3,REVERSE);
    delay(500);
    motorOff(M3);
    goForward(M1,M2);
    if (ultrasoundRead(J3) <= 12) {
      motorsOff(M1 , M2);
      motorOn(M3,FORWARD);
      delay(500);
      motorOff(M3);
      delay(10000);
    }
  }
}

Carga el programa en el Innobot, verifica que recolecte un objeto que esté a menos de 30 cm.

2. Robot Recolector de Objetos

A continuación se construirá el código de un robot detector y recolector de objetos utilizando FUNCIONES.

Funciones

Una función es un bloque de código que tiene un nombre y un conjunto de instrucciones que son ejecutadas cuando se llama en alguna parte del código, las funciones sirven para ahorrar líneas de código ya que en muchas ocasiones hay bloques completos de instrucciones que se repiten varias veces, un función, evita tener que escribirlas una y otra vez.

Paso 1

Lo primero que realizaremos son las funciones básicas del robot para desplazarse, esto es ir  Adelante, ir Atrásgirar a la Derecha y girar a la Izquierda.

Bloque de Funciones

void funcion (){
}

Es un bloque de código que permite generar pequeños algoritmos con instrucciones ya definidas en el programa y que podemos llamar cuando sea necesario en el programa para que realice una acción determinada en cualquier momento.

Paso 2

Para construir una función, debes nombrarla, no es posible tener dos funciones con el mismo nombre, si se utilizará un nombre compuesto, se recomienda separar las palabras con mayúsculas, no se permiten tildes, espacios o caracteres especiales cómo ñ, *, ~, %, ?, etc. A continuación, crearemos algunas funciones básicas (adelante, atras, girarIzquierda, girarDerecha, agarrarObjeto, soltarObjeto).

void setup () {
}
void loop () {
}
void adelante (){
  motorOn(M1,FORWARD);
  motorOn(M2,FORWARD);
  delay(300);
}
void atras (){
  motorOn(M1,REVERSE);
  motorOn(M2,REVERSE);
  delay(300);
}
void girarDerecha (){
  motorOn(M1,FORWARD);
  motorOn(M2,REVERSE);
  delay(500);
}
void girarIzquierda (){
  motorOn(M1,REVERSE);
  motorOn(M2,FORWARD);
  delay(500);
}
void soltarObjeto (){
  motorOn(M3,REVERSE);
  delay(600);
  motorOff(M1);
}
void agarrarObjeto (){
  motorOn(M3,FORWARD);
  delay(600);
  motorOff(M1);
}

}

Paso 3

Ahora utilizaremos las funciones construidas, para llamar una función, solo tienes que escribir su nombre, seguido de los dos paréntesis () que delimitan sus parámetros y un punto y coma ;

Ejemplo

Para llamar la función agarrarObjeto solo debes escribir:

agarrarObjeto ();
void setup () {
  motorSpeed(M1,70);
  motorSpeed(M2,70);
  motorSpeed(M3,70);
  delay(500);
  motorOff(M3);
}
void loop () {
  if (ultrasoundRead(J3) <= 12) {
    agarrarObjeto ();
    girarIzquierda ();
    adelante ();
    motorsOff(M1 , M2);
    soltarObjeto ();
    atras ();
    girarDerecha ();
  } else {
    goForward(M1,M2);
  }
}
void adelante (){
  motorOn(M1,FORWARD);
  motorOn(M2,FORWARD);
  delay(300);
}
void atras (){
  motorOn(M1,REVERSE);
  motorOn(M2,REVERSE);
  delay(300);
}
void girarDerecha (){
  motorOn(M1,FORWARD);
  motorOn(M2,REVERSE);
  delay(500);
}
void girarIzquierda (){
  motorOn(M1,REVERSE);
  motorOn(M2,FORWARD);
  delay(500);
}
void soltarObjeto (){
  motorOn(M3,REVERSE);
  delay(600);
  motorOff(M1);
}
void agarrarObjeto (){
  motorOn(M3,FORWARD);
  delay(600);
  motorOff(M1);
}