Sumobot autonomo

Crea tu propio sumobot autonomo y se el proximo campion nacional

Diagrama

Con el siguiente programa, puedes hacer un robot automatizado, solo necesitas: un arduino uno , un puente H- L298N, 2 sensores opticos TCR5000, 2 motorreductores, portapilas y pilas 18650.

Diagrama de conexión Sumobot, se puede realizar con diferentes tipos de baterias, solo hay que tomar en cuenta que para el buen funcionamiento de nuestro sumo, te recomendamos utilizar 12 v. Tambien, debemos recordar que podemos alimentar el arduino desde la salida de 5v del puente H, hacia Vin (cable naranja), recuerden hacer el puente entre GND del puente H y GND del arduino.

long TP_init(int trigger_pin, int echo_pin);  //variables para medir distancia 
long Distance(int trigger_pin, int echo_pin);

//los "IN" son las entradas de nuestro puente H, numeros son los pines a los cuales estan conectadas
//las entradas del puente H al arduino 
int IN1 = 10;
int IN2 = 9;
int IN3 = 6;
int IN4 = 5;

void setup() {
 pinMode(IN1,OUTPUT); 
 pinMode(IN2,OUTPUT); 
 pinMode(IN3,OUTPUT); 
 pinMode(IN4,OUTPUT); 

 
 pinMode( 2 , OUTPUT ); //Trigger sensor de distancia
 pinMode( 3 , INPUT );  //ECHO sensor de distancia 

 
 pinMode( 11 , INPUT );  //sensor de linea
 pinMode( 12 , INPUT );  //sensor de linea
 
 Serial.begin(9600); //inicializacion de puerto serial
}

void loop() {
  
Serial.println(Distance(2,3)); // imprimir distancia obtenida
  
//AVANZA HACIA ENFRENTE
  analogWrite(IN1, 0);    
  analogWrite(IN2,120);
  analogWrite(IN3,120);
  analogWrite(IN4,0);

 if(digitalRead(11)==1 or digitalRead(12)==1){           // linea blanca 0, linea negra 1
                       
                       analogWrite(IN1,150);    //RETROCEDE
                       analogWrite(IN2,0);
                       analogWrite(IN3,0);
                       analogWrite(IN4,150);
                       delay(1000);
                       analogWrite(IN1,0);    //GIRA
                       analogWrite(IN2,150);
                       analogWrite(IN3,0);
                       analogWrite(IN4,150);
                       delay(800);

                       }
 
if (Distance(2,3)<20){  

        analogWrite(IN1,0);
        analogWrite(IN2,255);
        analogWrite(IN3,255);
        analogWrite(IN4,0);
     }  


                           

  


}



//funcion para medir distancia NO TOCAR
//NO TOCAR //NO TOCAR //NO TOCAR //NO TOCAR //NO TOCAR
long TP_init(int trigger_pin, int echo_pin)
{
  digitalWrite(trigger_pin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigger_pin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigger_pin, LOW);
  long microseconds = pulseIn(echo_pin ,HIGH);
  return microseconds;
}
long Distance(int trigger_pin, int echo_pin)
{
  long microseconds = TP_init(trigger_pin, echo_pin);
  long distance;
  distance = microseconds/29/2;
  if (distance == 0){
    distance = 999;
  }
  return distance;
}