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.
![](https://vicarmaker.com/wp-content/uploads/2022/06/nuevitoooo-1-1024x481.png)
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;
}