Es un robot autónomo o controlado a distancia que compite en un ring, donde el objetivo es empujar al rival fuera del área de combate.

Características
Dimensiones máximas
Largo: 200 mm
Ancho: 200 mm
Componentes principales
Arduino Nano
Driver de motor L298N
Sensor TCRT5000
Sensor Ultrasónico HS-04
Materiales necesarios
1 Arduino Nano

1 Modulo Driver l298N

2 Sensores de línea TCRT5000

1 Sensor Ultrasónico HC-SR04

2 Motorreductores con llanta

Ruedas se silicona (Alternativa)

2 Baterías de 4.2 (18650)

1 Porta pilas para 18650

Cables jumper macho-hembra

1 Interruptor pequeño

Diagrama de conexión

Código Arduino
//Pines de conexión del driver.
//Conexiones para el motor 1 (velocidad del motor).
int ENA = 9;
//Conexiones para el motor 1 (dirección del motor).
int IN1 = 8;
int IN2 = 7;
//Conexiones para el motor 2 (dirección del motor).
int IN3 = 5;
int IN4 = 4;
//Conexiones para el motor 2 (velocidad del motor).
int ENB = 3;
//Conexiones para el sensor ultrasónico.
int ULTROU = 12;
int ULTRIN = 11;
//Conexiones para los sensores infrarrojo.
int SNSR1 = A0;
int SNSR2 = A1;
//Variables que guardaran el valor de sensores infrarrojo 1 y 2 (el valor será "1" si están sobre la línea negra y "0" si están sobre la pista blanca).
int SNSR1_V = 0;
int SNSR2_V = 0;
// Variables para el sensor ultrasónico.
// Variable para la distancia.
long DIST;
// Variable para el tiempo.
long TIME;
//Variable de velocidad (entre 0 y 255 donde 255 es la velocidad máxima).
int SPEED = 160;
// Función de configuraciones en la placa, se ejecutará una sola vez.
void setup()
{
// Definimos los Pines asignados al Motor 1 como salidas.
pinMode(INA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
// Definimos los Pines asignados al Motor 2 como salidas.
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(INB, OUTPUT);
// Definimos los Pines asignados a los sensores como entradas.
pinMode(ULTROU,OUTPUT);
pinMode(ULTRIN,INPUT);
pinMode(SNSR1,INPUT);
pinMode(SNSR2,INPUT);
delay(1500);
// Iniciamos con los motores detenidos.
digitalWrite(AIN1,LOW);
digitalWrite(AIN2,LOW);
digitalWrite(BIN1,LOW);
digitalWrite(BIN2,LOW);
analogWrite(PWMA,0);
analogWrite(PWMB,0);
}
// Función principal, se ejecutará en bucle.
void loop()
{
//Iniciamos con la función para medir la distancia con el ultrasonido
digitalWrite(ULTROU,LOW);
delayMicroseconds(5);
digitalWrite(ULTROU, HIGH);
delayMicroseconds(10);
TIME = pulseIn(ULTRIN, HIGH);
DIST= int(0.017*TIME);
// Al momento de iniciar se define una espera de 5 segundos.
delay(5000);
// El robot inicia girando a la derecha en su posición para detectar objetos al rededor.
analogWrite(PWMA,250);
analogWrite(PWMB,250);
digitalWrite(AIN1,HIGH);
digitalWrite(AIN2,LOW);
digitalWrite(BIN1,LOW);
digitalWrite(BIN2,HIGH);
// Si se detecta un objeto al frente el robot avanza hacia adelante.
if(DIST <= 15) {
analogWrite(PWMA,250);
analogWrite(PWMB,250);
digitalWrite(AIN1,HIGH);
digitalWrite(AIN2,LOW);
digitalWrite(BIN1,HIGH);
digitalWrite(BIN2,LOW);
delay(3000);
}
// Si el sensor derecho detecta la line blanca del final del rin, el robot gira a la izquierda.
if((!digitalRead(SNSR1))) {
analogWrite(PWMA,250);
analogWrite(PWMB,250);
digitalWrite(AIN1,LOW);
digitalWrite(AIN2,HIGH);
digitalWrite(BIN1,LOW);
digitalWrite(BIN2,HIGH);
delay (1000);
}
// Si el sensor izquierdo detecta la line blanca del final del rin, el robot gira a la derecha.
if((!digitalRead(SNSR2))) {
analogWrite(PWMA,250);
analogWrite(PWMB,250);
digitalWrite(AIN1,HIGH);
digitalWrite(AIN2,LOW);
digitalWrite(BIN1,HIGH);
digitalWrite(BIN2,LOW);
delay (1000);
}
}
Nota: Este es un código básico para entender como funciona un robot sumo.


