Making arduino human followinf robot, code error?

Hello, I am a newbie here, my first robot design. I have made a robot( Arduino Uno R3 ATmega328P+ motor shield L293D+2 IR sensors+ 4 DC 3-6V Motors+ultrasonic sensor+9v Battery+ servomotor SG90) Schematics: Imgur: The magic of the Internet instead of that power supply I got an Duracell Basic, 9V, Alkaline .
The problem I have is that the motors of the robot won't spin all 4 in forward direction. They will spin 2 by 2(when I touch left or right side of the robot). Is it a Code error? Thanks!
Code:
moderator edit : added code tags

#include<NewPing.h>
#include<Servo.h>
#include<AFMotor.h>
#define RIGHT A2
#define LEFT A3
#define TRIGGER_PIN A1
#define ECHO_PIN A0
#define MAX_DISTANCE 100
  

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);


AF_DCMotor Motor1(1,MOTOR12_1KHZ);
AF_DCMotor Motor2(2,MOTOR12_1KHZ);
AF_DCMotor Motor3(3,MOTOR34_1KHZ);
AF_DCMotor Motor4(4,MOTOR34_1KHZ);

Servo myservo;
 
int pos =0;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
myservo.attach(10);
{
for(pos = 90; pos <= 180; pos += 1){
  myservo.write(pos);
  delay(15);
} for(pos = 180; pos >= 0; pos-= 1) {
  myservo.write(pos);
  delay(15);
}for(pos = 0; pos<=90; pos += 1) {
  myservo.write(pos);
  delay(15);
}
}
pinMode(RIGHT, INPUT);
pinMode(LEFT, INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:

  delay(50);
 unsigned int distance = sonar.ping_cm();
Serial.print("distance");
Serial.println(distance);


int Right_Value = digitalRead(RIGHT);
int Left_Value = digitalRead(LEFT);

Serial.print("RIGHT");
Serial.println(Right_Value);
Serial.print("LEFT");
Serial.println(Left_Value);

if((Right_Value==1) && (distance>=10 && distance<=30)&&(Left_Value==1)){
  Motor1.setSpeed(120);
  Motor1.run(FORWARD);
  Motor2.setSpeed(120);
  Motor2.run(FORWARD);
  Motor3.setSpeed(120);
  Motor3.run(FORWARD);
  Motor4.setSpeed(120);
  Motor4.run(FORWARD);
}else if((Right_Value==0) && (Left_Value==1)) {
  Motor1.setSpeed(200);
  Motor1.run(FORWARD);
  Motor2.setSpeed(200);
  Motor2.run(FORWARD);
  Motor3.setSpeed(100);
  Motor3.run(BACKWARD);
  Motor4.setSpeed(100);
  Motor4.run(BACKWARD);
}else if((Right_Value==1)&&(Left_Value==0)) {
  Motor1.setSpeed(100);
  Motor1.run(BACKWARD);
  Motor2.setSpeed(100);
  Motor2.run(BACKWARD);
  Motor3.setSpeed(200);
  Motor3.run(FORWARD);
  Motor4.setSpeed(200);
  Motor4.run(FORWARD);
}else if((Right_Value==1)&&(Left_Value==1)) {
  Motor1.setSpeed(0);
  Motor1.run(RELEASE);
  Motor2.setSpeed(0);
  Motor2.run(RELEASE);
  Motor3.setSpeed(0);
  Motor3.run(RELEASE);
  Motor4.setSpeed(0);
  Motor4.run(RELEASE);
}else if(distance > 1 && distance < 10) {
  Motor1.setSpeed(0);
  Motor1.run(RELEASE);
  Motor2.setSpeed(0);
  Motor2.run(RELEASE);
  Motor3.setSpeed(0);
  Motor3.run(RELEASE);
  Motor4.setSpeed(0);
  Motor4.run(RELEASE);
  }
 }

Hi,
Welcome to the forum.
If your battery is one of the smokedetector type, then it will not have the capacity to do what you want.

Tom.... :grinning: :+1: :coffee: :australia:

Thanks a lot Tom! What if I connect 2 batteries like those in the image in parallel? Should this make enough power? Or should I change the power source?

Hi,
Change power source.
What are your motor and servo specifications?

Tom... :grinning: :+1: :coffee: :australia:

SERVO MOTOR:
Weight: 9 g

• Dimension: 22.2 x 11.8 x 31 mm approx.

• Stall torque: 1.8 kgf·cm

• Operating speed: 0.1 s/60 degree

• Operating voltage: 4.8 V (~5V)

• Dead band width: 10 μs

• Temperature range: 0 ºC – 55 º
4 DC MOTORS:
Voltage:3-6V
Torque 0.8kg*cm

  • RPM: 3V:125rpm, 5V:200rpm, 6V:230rpm;
  • Curent: 3V:60mA, 5V:100mA, 6V:120mA.

Hi,
Try 9V worth of AA 1.5V batteries in series.
That is 6 batteries in series.

Tom.... :grinning: :+1: :coffee: :australia:

Thanks a lot for your help Tom! Have a good day!

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