Hola, estoy intentando hacer un código en c++ para arduino para controlar 6 motores mediante tres modulos l298n, los motores estarán colocados en dos columnas, es decir como un coche con 6 ruedas, donde hay 3 sensores de ultrasonidos, si alguno de estos detecta un objeto a una distancia de menos de 10 cm los motores deben retroceder y girar a la derecha o a la izquierda de manera aleatoria y comprobar si hay algun objeto a 10cm en caso de que lo hubiese el coche deberia volver a girar un angulo aleatorio hasta que no se encuentre ningun obstaculo a menos de 10 cm, una vez que tenga el camino despejado debe ir recto hasta que se encuentre otro obstaculo y repetir la acción. El código está pensad para un arduino mega, y con chat gpt he conseguido solo este trozo de código:
// Definición de pines de los módulos L298N
const int ena1 = 3;
const int in1 = 4;
const int in2 = 5;
const int ena2 = 6;
const int in3 = 7;
const int in4 = 8;
const int ena3 = 9;
const int in5 = 10;
const int in6 = 11;
// Definición de pines de los sensores de ultrasonido
const int trig1 = 12;
const int echo1 = 13;
const int trig2 = 14;
const int echo2 = 15;
const int trig3 = 16;
const int echo3 = 17;
// Distancia límite para retroceder y girar
const int limite_distancia = 10;
void setup() {
// Configuración de los pines de los módulos L298N como salidas
pinMode(ena1, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(ena2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(ena3, OUTPUT);
pinMode(in5, OUTPUT);
pinMode(in6, OUTPUT);
// Configuración de los pines de los sensores de ultrasonido como entradas
pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
pinMode(trig3, OUTPUT);
pinMode(echo3, INPUT);
// Inicialización de la comunicación serial para el monitoreo de la distancia
Serial.begin(9600);
}
void loop() {
// Lectura de la distancia del sensor 1
digitalWrite(trig1, LOW);
delayMicroseconds(2);
digitalWrite(trig1, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
int distancia1 = pulseIn(echo1, HIGH) / 58;
// Lectura de la distancia del sensor 2
digitalWrite(trig2, LOW);
delayMicroseconds(2);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig2, LOW);
int distancia2 = pulseIn(echo2, HIGH) / 58;
// Lectura de la distancia del sensor 3
digitalWrite(trig3, LOW);
delayMicroseconds(2);
digitalWrite(trig3, HIGH);
delayMicroseconds(10);
digitalWrite(trig3, LOW);
int distancia3 = pulseIn(echo3, HIGH) / 58;
// Retroceso y giro aleatorio si se detecta un objeto a menos de 10cm de distancia
if (distancia1 < limite_distancia || distancia2 < limite_distancia || distancia3 < limite_distancia) {
// Detener los motores
analogWrite(ena1, 0);
analogWrite(ena2, 0);
analogWrite(ena3, 0);
delay(1000);
// Girar aleatoriamente hacia la izquierda o la derecha
int direccion = random(2);
if (dirección ==
(aquí debe ir a mi entender "if (rDirection == 0) {
angulo = randomAngle;
girarDerecha();
} else {
angulo = -randomAngle;
girarIzquierda();
}"
Pero no se como terminar este código para que cuando gire vuelva a comprobar y siga recto