Codigo:

/*
Este ejemplo es un programa para controlar una plataforma robotica
tipo diferencial, se usa un controlador de motores basado en el 
integrado L293 envia señales por los pines 4,5,6,7 hacia los motores
por otro lado recibe señales seriales por los pines 1 y 2, en este caso se usa 
una plataforma robotica, un Arduino uno, un controlador de motores
un shield de entradas salidas y un modulo comunicador Bluetooth.
Codigo de dominio publico www.suallabs.com 2014
*/
 
char val; 
// variable para recibir datos desde el puerto serial
int EN1 = 6;  
int EN2 = 5;
int IN1 = 7;
int IN2 = 4;
// Define las constantes de control de los motores
 
void setup()
{
  Serial.begin(9600);
// Inicia la comunicacion serial
    pinMode(IN2, OUTPUT);         
    pinMode(EN2, OUTPUT);         
    pinMode(EN1, OUTPUT);         
    pinMode(IN1, OUTPUT);              
// Inicializa los pines 4,5,6,7 como salidas    
}
 
void loop() {
Alto(10);
  if( Serial.available() )       
// si hay datos disponibles para leer
  {
    val = Serial.read();         
// son leídos y puestos en la variable 'val'
  }
   
  if (val == 48){
//48 es el codigo ASCII para cero
    Avanzar(100, 500);
  }
  else if(val == 50){
//50 es el codigo ASCII para dos   
    Regresar(100,500);
  }
  else if(val == 49){
//49 es el codigo ASCII para uno   
    Izquierda(100,500);
  }
  else if(val == 51){    
//51 es el codigo ASCII para tres   
    Derecha(100,500);
  }
  else {Alto(100);}
  delay(50);
}
 
//********************
//AREA DE SUB RUTINAS
//********************
//Sub-rutina Avanzar, cuando esta sub-rutina es llamada el robot avanza
//Se ejecutara la subrutina por los milisegundos que estén entre paréntesis
int Avanzar(int Vel, int Mil){  
  digitalWrite(IN2, LOW);    
  analogWrite(EN2,Vel);    
  digitalWrite(IN1, LOW);    
  analogWrite(EN1,Vel);     
  delay(Mil);
//Espera el tiempo que se indica entre paréntesis
//La configuración 0110 en los pines 10,11,12,13 
//hace que el robot avance
  }
 
//Sub-rutina Regresar, cuando esta sub-rutina es llamada el robot retrocede
//Se ejecutara la subrutina por los milisegundos que estén entre paréntesis
int Regresar(int Vel, int Mil){ 
  digitalWrite(IN2, HIGH);     
  analogWrite(EN2,Vel);    
  digitalWrite(IN1, HIGH);    
  analogWrite(EN1,Vel);     
  delay(Mil); 
//Espera el tiempo que se indica entre paréntesis
//La configuración 1001 en los pines 10,11,12,13 
//hace que el robot regrese
  } 
 
//Sub-rutina Izquierda, cuando esta sub-rutina es llamada el robot gira a la izquierda
//Se ejecutara la subrutina por los milisegundos que estén entre paréntesis
int Izquierda(int Vel, int Mil){ 
  digitalWrite(IN2, LOW);     
  analogWrite(EN2,Vel);    
  digitalWrite(IN1, HIGH);    
  analogWrite(EN1,Vel);     
  delay(Mil);
//Espera el tiempo que se indica entre paréntesis
//La configuración 0101 en los pines 10,11,12,13 
//hace que el robot de vuelta a la izquierda
  } 
 
//Sub-rutina Derecha, cuando esta sub-rutina es llamada el robot gira a la derecha
//Se ejecutara la subrutina por los milisegundos que estén entre paréntesis
int Derecha(int Vel, int Mil){ 
  digitalWrite(IN2, HIGH);  
  analogWrite(EN2,Vel);    
  digitalWrite(IN1, LOW);    
  analogWrite(EN1,Vel);     
  delay(Mil); 
//Espera el tiempo que se indica entre paréntesis
//La configuración 1010 en los pines 10,11,12,13 
//hace que el robot de vuelta a la derecha
  }
  
//Sub-rutina Alto, cuando esta sub-rutina es llamada el robot hace un alto
int Alto(int Mil){
  digitalWrite(5, LOW);   
  digitalWrite(6, LOW);   
  delay(Mil);
//La configuración 0000 en los pines 10,11,12,13 
//hace que el robot haga un alto
  }
 
Software de Control Sual Labs Bluetooth
 

Regresar