Servo motors behaving erratically

I’m doing a small robot arm project using 4 micro servo motors connected to my arduino Uno, a breadboard and a 6v battery power supply. My arduino is connected separately to a USB and USB servos are powered from the 6v battery pack. I have followed a similar project that was available on the internet because I’m pretty new to arduino and stuff like this. I am controlling my servos via a bluetooth app on my android device which is working but the only issue I am experiencing is that my servos keep randomly moving and jittering rapidly and erratically even when I’m not controlling their movement. Could this be something to do with my code which I have provided below? I have also attached a circuit diagram.

Please post your code, in code tags

#include <Servo.h>  //arduino library
#include <math.h>   //standard c library

#define PI 3.141

Servo baseServo;  
Servo shoulderServo;  
Servo elbowServo; 
Servo gripperServo;

int command;

struct jointAngle{
  int base;
  int shoulder;
  int elbow;

int desiredGrip;
int gripperPos;

int desiredDelay;

int servoSpeed = 15;
int ready = 0;

struct jointAngle desiredAngle; //desired angles of the servos

//+++++++++++++++FUNCTION DECLARATIONS+++++++++++++++++++++++++++

int servoParallelControl (int thePos, Servo theServo );

void setup()
  baseServo.attach(9);        // attaches the servo on pin 9 to the servo object 
  Serial.setTimeout(50);      //ensures the the arduino does not read serial for too long
  baseServo.write(90);        //intial positions of servos
  ready = 0;

//primary arduino loop
void loop() 
  if (Serial.available()){
    ready = 1;
    desiredAngle.base = Serial.parseInt();
    desiredAngle.shoulder = Serial.parseInt();
    desiredAngle.elbow = Serial.parseInt();
    desiredGrip = Serial.parseInt();
    desiredDelay = Serial.parseInt();

    if( == '\n'){               // if the last byte is 'd' then stop reading and execute command 'd' stands for 'done'

        Serial.flush();                     //clear all other commands piled in the buffer
          //send completion of the command
  int status1 = 0;
  int status2 = 0;
  int status3 = 0;
  int status4 = 0;
  int done = 0 ; 
  while(done == 0 && ready == 1){  
    //move the servo to the desired position
    status1 = servoParallelControl(desiredAngle.base, baseServo, desiredDelay);
    status2 = servoParallelControl(desiredAngle.shoulder,  shoulderServo, desiredDelay);
    status3 = servoParallelControl(desiredAngle.elbow, elbowServo, desiredDelay);      
    status4 = servoParallelControl(desiredGrip, gripperServo, desiredDelay);  
    if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1){
      done = 1;
  }// end of while


//++++++++++++++++++++++++++++++FUNCTION DEFITNITIONS++++++++++++++++++++++++++++++++++++++++++

int servoParallelControl (int thePos, Servo theServo, int theSpeed ){
    int startPos =;        //read the current pos
    int newPos = startPos;
    //int theSpeed = speed;
    //define where the pos is with respect to the command
    // if the current position is less that the actual move up
    if (startPos < (thePos-5)){
       newPos = newPos + 1;
       return 0;
   else if (newPos > (thePos + 5)){
      newPos = newPos - 1;
      return 0;
    else {
        return 1;

I’m new to coding so it could be my program that’s causing the issue. Any help will be greatly appreciated

my servos keep randomly moving and jittering rapidly and erratically

Servos need a lot of current. Your symptoms are often caused because you're not providing it. Trying to push high current through a breadboard is questionable too.

Try some more basic code that just exercises the servos - leave the bluetooth stuff alone until they're working as expected.

        Serial.flush();                     //clear all other commands piled in the buffer

flush works only on the tx buffer - look it up

check your line endings in the serial monitor!