I'm making a Line follower with a robotic arm, the arm moves but the motors don't move

So Basically i have been working on a project, i have to make a robotic arm which is connected to a line follower, i tested the line follower first and it worked, after that i tested the arm and it worked, but when i test them both only the arm move.
I'm using:
Arduino Uno, 2 infrared FC-51, L298N Motor driver, 2 Dc Motors, HC-05 bluetooth Module, 4 servos SG90, 2 Batteries 3,7V (7,4V in total)
i tried to visualize what's happening in seriel monitor and it seems to work but the motors still don't move, i'm thinking that the problem is a powering problem ?

#include <Servo.h>

// Servo objects
Servo myservo1, myservo2, myservo3, myservo4;

// Motor driver pins
#define enA 10
#define in1 7
#define in2 8
#define in3 12
#define in4 13
#define enB 5

// Line sensor pins
#define L_S 2
#define R_S 4

char mode = 'S'; // Default to Stop mode

void setup() {
  Serial.begin(9600);

  // Set sensor pins
  pinMode(R_S, INPUT);
  pinMode(L_S, INPUT);

  // Set motor pins
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(enB, OUTPUT);

  // Set motor speed (0–255)
  analogWrite(enA, 190);
  analogWrite(enB, 190);

  // Attach servos
  myservo1.attach(3);
  myservo2.attach(6);
  myservo3.attach(9);
  myservo4.attach(11);

  delay(1000); // Wait for everything to settle
}

void loop() {
  // Handle incoming Bluetooth data
  if (Serial.available() >= 3) {
    unsigned int servopos = Serial.read();
    unsigned int servopos1 = Serial.read();
    char inputvalue = Serial.read();

    unsigned int realservo = (servopos1 * 256) + servopos;

    // Update mode
    if (inputvalue == 'F' || inputvalue == 'S') {
      mode = inputvalue;
      Serial.print("Mode changed to: ");
      Serial.println(mode);
    }

    // Servo control
    if (realservo >= 1000 && realservo < 1180) {
      int angle = map(realservo, 1000, 1180, 0, 180);
      myservo1.write(angle);
      Serial.print("Servo1 -> ");
      Serial.println(angle);
    } else if (realservo >= 2000 && realservo < 2180) {
      int angle = map(realservo, 2000, 2180, 0, 180);
      myservo2.write(angle);
      Serial.print("Servo2 -> ");
      Serial.println(angle);
    } else if (realservo >= 3000 && realservo < 3180) {
      int angle = map(realservo, 3000, 3180, 0, 180);
      myservo3.write(angle);
      Serial.print("Servo3 -> ");
      Serial.println(angle);
    } else if (realservo >= 4000 && realservo < 4180) {
      int angle = map(realservo, 4000, 4180, 0, 90);
      myservo4.write(angle);
      Serial.print("Servo4 -> ");
      Serial.println(angle);
    }
  }

  // Line following logic only if in Follow mode
  if (mode == 'F') {
    int leftSensor = digitalRead(L_S);
    int rightSensor = digitalRead(R_S);

    Serial.print("Sensors -> L: ");
    Serial.print(leftSensor);
    Serial.print(" R: ");
    Serial.println(rightSensor);

    if (rightSensor == 0 && leftSensor == 0) {
      forward();
    } else if (rightSensor == 1 && leftSensor == 0) {
      turnLeft();
    } else if (rightSensor == 0 && leftSensor == 1) {
      turnRight();
    } else {
      Stop();
    }
  } else {
    Stop(); // Make sure motors are stopped in 'S' mode
  }
}

// Movement functions
void forward() {
  Serial.println("Moving forward");
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}

void turnLeft() {
  Serial.println("Turning left");
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void turnRight() {
  Serial.println("Turning right");
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
}

void Stop() {
  Serial.println("Stopped");
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

Can you show a schematic of how you have things connected?

Sure ! This is the shematic of the full circuit

I think you forgot to common the grounds. Not sure, hard for these old eyes to see.

One mistake is that you have the batteries connected in parallel NOT series

When using the servo library you cannot use pins 9 or 10 for PWM output.
Use pin 11 for enA and pin 10 for myservo4

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.