Hey so im making a bluetooth controlled car with some high rpm motors and previoulsy i used this exact hardware for a line following car which worked just as intended so i know that isnt the problem but for some reason when i connect this car with my phone the left motor can go both forward and backwards but the right motor will only go forwards, and when i click on any button where it was supposed to go backwards, it just doesnt move. Here is the code:
int enableRightMotor = 6;
int rightMotorPin1 = 7;
int rightMotorPin2 = 8;
// Left motor
int enableLeftMotor = 5;
int leftMotorPin1 = 9;
int leftMotorPin2 = 10;
char t;
void setup() {
pinMode(enableRightMotor, OUTPUT);
pinMode(rightMotorPin1, OUTPUT);
pinMode(rightMotorPin2, OUTPUT);
pinMode(enableLeftMotor, OUTPUT);
pinMode(leftMotorPin1, OUTPUT);
pinMode(leftMotorPin2, OUTPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void rotateMotor(int rightMotorSpeed, int leftMotorSpeed) {
if (rightMotorSpeed < 0) {
digitalWrite(rightMotorPin1, LOW);
digitalWrite(rightMotorPin2, HIGH);
} else if (rightMotorSpeed > 0) {
digitalWrite(rightMotorPin1, HIGH);
digitalWrite(rightMotorPin2, LOW);
} else {
digitalWrite(rightMotorPin1, LOW);
digitalWrite(rightMotorPin2, LOW);
}
if (leftMotorSpeed < 0) {
digitalWrite(leftMotorPin1, LOW);
digitalWrite(leftMotorPin2, HIGH);
} else if (leftMotorSpeed > 0) {
digitalWrite(leftMotorPin1, HIGH);
digitalWrite(leftMotorPin2, LOW);
} else {
digitalWrite(leftMotorPin1, LOW);
digitalWrite(leftMotorPin2, LOW);
}
analogWrite(enableRightMotor, abs(rightMotorSpeed));
analogWrite(enableLeftMotor, abs(leftMotorSpeed));
}
void loop() {
if (Serial.available()) {
t = Serial.read();
Serial.println(t);
}
switch(t) {
case 'F': // move forward (all motors rotate in forward direction)
rotateMotor(255, 255);
break;
case 'B': // move reverse (all motors rotate in reverse direction)
rotateMotor(-255, -255);
break;
case 'L':
rotateMotor(-255, 255);
break;
case 'R':
rotateMotor(255, -255);
break;
case 'S': // STOP (all motors stop)
rotateMotor(0, 0);
break;
}
delay(10);
}
