I have a L298n motor driver with an arduino mega clone. My motors are taken out of a servo motor. I kept the gearbox but got rid of the circuits. The arduino drives one motor just fine but when I drive 2 at a time it doesn't work and I have to switch arduino pins to get it to work again.
#include <configureBT.h>
#include <Ultrasonic.h>
// Motor A
int enA = 13;
int in1 = 10;
int in2 = 9;
// Motor B
int enB = 12;
int in3 = 8;
int in4 = 7;
//Varibles and Object declaration
long durationRight;
int distanceRight;
long durationLeft;
int distanceLeft;
long durationFront;
int distanceFront;
long durationBack;
int distanceBack;
const int trigPinRight = 4;
const int echoPinRight = 5;
const int trigPinLeft = 6;
const int echoPinLeft = 3;
const int buzzer = 49;
// Setup start
void setup() {
Serial.begin(9600);
Serial.println("Click this link to control bot or use serial console");
Serial.println("https://8f7b90ec-54c0-49e4-8bcd-92e62f519007-00-177zzsekh1f87.spock.replit.dev/https://8f7b90ec-54c0-49e4-8bcd-92e62f519007-00-177zzsekh1f87.spock.replit.dev/");
pinMode(trigPinRight, OUTPUT);
pinMode(echoPinRight, INPUT);
pinMode(trigPinLeft, OUTPUT);
pinMode(echoPinLeft, INPUT);
// motor setup
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
// Set max speed
analogWrite(enA, 255);
analogWrite(enB, 255);
Serial.println("Setup complete");
}
int readDistanceRight() {
digitalWrite(trigPinRight, LOW);
delayMicroseconds(2);
digitalWrite(trigPinRight, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinRight, LOW);
durationRight = pulseIn(echoPinRight, HIGH, 50000);
distanceRight = durationRight * 0.034 / 2;
if (durationRight == 0) {
distanceRight = 500;
}
return distanceRight;
}
int readDistanceLeft() {
digitalWrite(trigPinLeft, LOW);
delayMicroseconds(2);
digitalWrite(trigPinLeft, HIGH);
delayMicroseconds(10);
digitalWrite(trigPinLeft, LOW);
durationLeft = pulseIn(echoPinLeft, HIGH, 50000);
distanceLeft = durationLeft * 0.034 / 2;
if (durationLeft == 0) {
distanceLeft = 500;
}
return distanceLeft;
}
void loop () {
Servotick ();
}
// Servo & wheel control
void Servotick () {
while (Serial.available() == 0) {} //wait for data available
String input = Serial.readString(); //read until timeout
input.trim();
input.toUpperCase();
if (input == "F") {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
if (input == "B") {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
};
if (input == "R") {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
};
if (input == "L") {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
};
if (input == "S") {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
};
};

