Escornacolor – El Escornabot que detecta colores

Presentamos oficialmente para la comunidad Maker a Escornacolor.

Escornacolor es un mod de Escornabot al que hemos añadido un sensor de color TCS3200 para detectar el color sobre la superficie sobre la que se encuentra.

De esta manera podemos realizar distintos modelos de jugabilidad para ejecutar acciones en función de esta extensión del concepto de color.

 

Para montar este módulo, solamente nos hace falta sustituir la pieza del alojamiento de la canica por una un poco más compleja para integrar este sensor de color. Esta pieza se puede descargar desde Thingiverse que está incluida dentro de la colección de Escornabot.

Pero aún falta la parte más divertida.

Programar nuestro Escornabot.

Para desarrollar una programación personalizada de tu EscornaColor, solo tienes que registrar una función a cada movimiento y programar tu robot con tus propias reglas.

Te dejamos unos códigos de ejemplo para que puedas crear tu propio modelo de programación.

Existen dos funciones en caso de ganar ( win() ) y en caso de perder el juego ( game_over() ). Puedes crear un modelo de juego en el que puedes perder vidas en función del color que el EscornaColor ha detectado. Si el EscornaColor llega al color objetivo sin perder todas las vidas ganas.

Bot ESCORNABOT;
int lives = 2;

void red(){
  ESCORNABOT.win();
}

void green(){
  lives -= 1;
  Serial.print("Lives: ");Serial.println(lives);
  if (lives <= 0 ){
    ESCORNABOT.game_over();
    Serial.println("GAME OVER");
  }
}

También puedes programar los movimientos en función del color que has encontrado con la función move( ). Dentro del parámetro de esta función puedes definir los siguientes tipos de movimiento.

  • MOVE_NONE
  • MOVE_FORWARD
  • MOVE_RIGHT
  • MOVE_BACKWARD
  • MOVE_LEFT
  • MOVE_PAUSE
  • MOVE_ALT_RIGHT
  • MOVE_ALT_LEFT

void white(){
  ESCORNABOT.move( MOVE_BACKWARD );
  Serial.println("COLOR White");
}

void black(){
  ESCORNABOT.move( MOVE_FORWARD );
  Serial.println("COLOR Black");
}

Ten cuidado, porque puedes caer facilmente en un bucle de movimientos si no piensas bien la secuencia.

Una vez finalizadas tus reglas de juego, deberás asociar una accion de color a cada color en el setup de tu programa. El bucle loop se encargará de todo.

void setup()
{
    ESCORNABOT.init();
    ESCORNABOT.load_colortable();

    //Color Actions Define
    ESCORNABOT.color_action( WHITE , white );
    ESCORNABOT.color_action( BLACK , black );
    ESCORNABOT.color_action( RED , red );
    
    //GREEN change non consecutively
    ESCORNABOT.color_action( GREEN , green, true );
    //YELLOW need to change from consecutive yellow colors
    ESCORNABOT.color_action( YELLOW , yellow );
    
    //random movements for Blue color
    randomSeed(analogRead(5));
    ESCORNABOT.color_action( BLUE , blue );

    //Brown and Orange not working
    ESCORNABOT.color_action( BROWN , aux_void );
    ESCORNABOT.color_action( ORANGE , aux_void );
}

void loop()
{
    ESCORNABOT.loop();
}

//Auxiliar void function for every color action defined
void aux_void(){
  
}

Al final, solo tienes que cargar el código a tu robot y dejarlo funcionar con los objetivos que te has definido.

IMPORTANTE: Ten cuidado de no saturar la memoria. Si superas más del 85% de la memoria RAM pueden ocurrir errores, pero puedes jugártela.

ENLACE DE GITHUB CON TODA LA DOCUMENTACION PARA HACER FUNCIONAR TU ESCORNACOLOR

Calibración del sensor de color TCS3200

Hemos integrado la calibración para poder guardar una configuración propia o cargar una configuración almacenada en la EEPROM manteniendo presionado el botón delantero.

De la misma forma, el Escornacolor realizará una calibración manteniendo presionado el botón trasero.

Para realizar esta calibración hay que acceder al puerto serie y escribir un caracter Y o N para que vaya realizando calibraciones. En cada calibración nos preguntarán si queremos guardar nuestra tabla de colores en la EEPROM.

Esta calibración se puede realizar a través del monitor serie o por Bluetooth a través de una aplicación.

Calibración de intensidades BLANCO – NEGRO

Primero hay que calibrar las lecturas con respecto el color negro BLACK CALIBRATION y al color blanco WHITE CALIBRATION, que establecen los límites de lectura del sensor. Esta calibración es muy importante para la calibración de nuestra tabla de colores.

Calibración de la tabla de colores

Acto seguido se requiere de una calibración de una tabla de 8 colores que se almacenan en la memoria EEPROM.

Los dos primeros colores son el color Blanco y el color Negro, y las lecturas deben corresponder a los valores RGB ( 255, 255, 255 ) y ( 0, 0, 0 ) respectivamente.

El resto de colores será una combinación de estos valores RGB. NOTA: Los valores RGB de cada color debida a la calibración no tienen por qué corresponder exactamente con los valores RGB del color. Esta calibración es una aproximación para cada medida.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

dieciocho − 8 =

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.