HC-05 wont let one motor go backwards

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);
}

Welcome to the forum

Please follow the advice given in the link below when posting code, in particular the section entitled 'Posting code and common code problems'

Use code tags (the < CODE/ > icon above the compose window) to make it easier to read and copy for examination

https://forum.arduino.cc/t/how-to-get-the-best-out-of-this-forum

In my experience the easiest way to tidy up the code and add the code tags is as follows

Start by tidying up your code by using Tools/Auto Format in the IDE to make it easier to read. Then use Edit/Copy for Forum and paste what was copied in a new reply. Code tags will have been added to the code to make it easy to read in the forum thus making it easier to provide help.

maybe some pins are damaged. test them with LED.
and show how you powered everything.

Your code works (F = forward, B = backward). Check your wiring and your power supply.

Files for wokwi.com:

sketch.ino
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(115200);
}

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);
}
diagram.json
{
  "version": 1,
  "author": "Anonymous maker",
  "editor": "wokwi",
  "parts": [
    { "type": "wokwi-arduino-nano", "id": "nano", "top": -4.8, "left": -0.5, "attrs": {} },
    {
      "type": "wokwi-led",
      "id": "led1",
      "top": -78,
      "left": 141,
      "rotate": 90,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led2",
      "top": -106.8,
      "left": 141,
      "rotate": 90,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led3",
      "top": -49.2,
      "left": 141,
      "rotate": 90,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led4",
      "top": -78,
      "left": -31.8,
      "rotate": 270,
      "attrs": { "color": "red", "flip": "1" }
    },
    {
      "type": "wokwi-led",
      "id": "led5",
      "top": -106.8,
      "left": -31.8,
      "rotate": 270,
      "attrs": { "color": "red", "flip": "1" }
    },
    {
      "type": "wokwi-led",
      "id": "led6",
      "top": -49.2,
      "left": -31.8,
      "rotate": 270,
      "attrs": { "color": "red", "flip": "1" }
    }
  ],
  "connections": [
    [ "nano:GND.2", "led1:C", "black", [ "v0" ] ],
    [ "nano:GND.2", "led2:C", "black", [ "v0" ] ],
    [ "nano:GND.2", "led3:C", "black", [ "v0" ] ],
    [ "nano:GND.2", "led6:C", "black", [ "v0" ] ],
    [ "nano:GND.2", "led4:C", "black", [ "v0" ] ],
    [ "nano:GND.2", "led5:C", "black", [ "v0" ] ],
    [ "nano:6", "led1:A", "green", [ "v0" ] ],
    [ "nano:7", "led2:A", "green", [ "v0" ] ],
    [ "nano:8", "led3:A", "green", [ "v0" ] ],
    [ "nano:5", "led4:A", "green", [ "v0" ] ],
    [ "nano:9", "led5:A", "green", [ "v0" ] ],
    [ "nano:10", "led6:A", "green", [ "v0" ] ]
  ],
  "dependencies": {}
}

fblfs

Hi,

LED series current limit resistors??

Tom... :smiley: :+1: :coffee: :australia:

The sim is showing the sketch works. I was not trying to make a proper circuit.