Una vez que habiamos depurado y terminado la aplicación que se iba a encargar de procesar los gestos pasamos a desarrollar el código del robot que ibamos a usar en este caso. Pudimos reciclar parte del código del robot que empleamos para la competición ya que los estados que se encargan de realizar los movimientos del robot estaban ya implementados.
Reconfiguramos los estados del robot de tal forma que las condiciones necesarias para realizar los movimientos fuesen a partir de los datos recibidos por el puerto USB en lugar de los sensores.
Como en el caso del Coldfire, hacemos uso de un loop donde residirá el programa de control robot y que se estará ejecutando constantemente. En el programa principal podemos apreciar que se dan cinco estados distintos que representan el reposo, movimiento a la izquierda, movimiento a la derecha, movimiento hacia adelante y movimiento hacia atrás.
// Indicamos que estamos en reposo
valordefecto=10;
// Comprobamos si tenemos datos en el puerto serie
if(Serial.available()>0){
// Obtenemos los datos del puerto
// Escribimos por pantalla (Para depuracion)
valordefecto= Serial.read();
delay(10);
Serial.println(valordefecto);
}
Al principio del bucle, hemos realizado una comprobación para ver sí el sistema ha recibido datos por el puerto USB. Los datos recibidos son almacenados en una variable auxiliar para luego comprobar si corresponde al inicio de uno de los movimientos. Una vez realizado esto pasamos a hacer los saltos entre estados mediante un switch.
switch(valordefecto){
case 119:
grados = 90;
servo.write(grados);
delay(100);
digitalWrite(motorDer0, HIGH);
digitalWrite(motorDer1, 0);
digitalWrite(motorIzq0, HIGH);
digitalWrite(motorIzq1, 0);
delay(700);
break;
Continue reading