Wall Follower Robot's Problems that cannot be solved

Firstly,our robot worked in our ardiuno code.However,it isn’t working now.We checked motors.They worked but we think problem which is motors in general code.Secondly we don’t hear any voice from motor drivers or motors.Also we receive datas from sernsors.We change ardiuno.We cant find mistake.Where is mistake?
code :
#include <Servo.h>
#include <NewPing.h>
const int inA=2;
const int inB=3;
const int inC=4;
const int inD=5;
const int e1=9;
const int e2=10;

#define trig A1
#define echo A2
#define maximumdistance 200
int distance;
void ileri();
void sag();
void sol();
void dur();

int a,b;
int servoPin = 7;
NewPing sonar(trig,echo,maximumdistance);
Servo Servo1;

#define s0 8
#define s1 6
#define s2 11
#define s3 12
#define sensorOut 13

int K, Y, M = 0;

void setup()
{

Servo1.attach(servoPin);

pinMode (inA,OUTPUT);
pinMode (inB,OUTPUT);
pinMode (inC,OUTPUT);
pinMode (inD,OUTPUT);
pinMode (e1,OUTPUT);
pinMode (e2,OUTPUT);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(sensorOut, INPUT);
digitalWrite(s1,LOW);
digitalWrite(s0,HIGH);
Serial.begin(9600);
// prints title with ending line break
Serial.println(“Program Starting”);
// wait for the long string to be sent
delay(1000);
}
void loop()
{
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
K = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Kırmızı= “);
Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, HIGH); //Yeşili filtrelemek için
digitalWrite(s3, HIGH);
Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
Serial.print("Yeşil= “);
Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, LOW); //Maviyi filtrelemek için
digitalWrite(s3, HIGH);
M = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Mavi= ");
Serial.print(M);//Mavi için aldığımız değeri serial monitöre yazdır
Serial.println();
delay(50);//50 milisaniye bekle

while((K<100 && Y<100 && M<100) || (K>550 && Y>550 && M>550)){

digitalWrite(s2, LOW); //Kırmızıyı filtrelemek için
digitalWrite(s3, LOW);
K = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Kırmızı= “);
Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, HIGH); //Yeşili filtrelemek için
digitalWrite(s3, HIGH);
Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
Serial.print("Yeşil= “);
Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, LOW); //Maviyi filtrelemek için
digitalWrite(s3, HIGH);
M = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Mavi= ");
Serial.print(M);//Mavi için aldığımız değeri serial monitöre yazdır
Serial.println();
delay(50);//50 milisaniye bekle
a=0;
b=0;
Servo1.write(90);
delay(100);
distance=readPing();
Serial.println(distance);
delay(200);

while(distance<=35){
distance=readPing();
Serial.println(distance);
delay(200);

dur();
delay(1000);

Servo1.write(0);
delay(1000);
a=readPing();
Serial.println(a);
delay(2000);

Servo1.write(180);
delay(1000);
b=readPing();
Serial.println(b);
delay(2000);

if(a>b){
sag();
Servo1.write(90);
delay(500);
break;
}
else
sol();
Servo1.write(90);
delay(500);
break;

}
ileri();
delay(200);
}
digitalWrite(s2, LOW); //Kırmızıyı filtrelemek için
digitalWrite(s3, LOW);
K = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Kırmızı= “);
Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, HIGH); //Yeşili filtrelemek için
digitalWrite(s3, HIGH);
Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
Serial.print("Yeşil= “);
Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, LOW); //Maviyi filtrelemek için
digitalWrite(s3, HIGH);
M = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Mavi= ");
Serial.print(M);//Mavi için aldığımız değeri serial monitöre yazdır
Serial.println();
delay(50);//50 milisaniye bekle
while(Y<=K && Y<=M){
sol();
delay(500);
ileri();
digitalWrite(s2, LOW); //Kırmızıyı filtrelemek için
digitalWrite(s3, LOW);
K = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Kırmızı= “);
Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, HIGH); //Yeşili filtrelemek için
digitalWrite(s3, HIGH);
Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
Serial.print("Yeşil= “);
Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, LOW); //Maviyi filtrelemek için
digitalWrite(s3, HIGH);
M = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Mavi= ");
Serial.print(M);//Mavi için aldığımız değeri serial monitöre yazdır
Serial.println();
delay(50);//50 milisaniye bekle
if(M<=Y && M<=K){
sol();
delay(1000);

ileri();
digitalWrite(s2, LOW); //Kırmızıyı filtrelemek için
digitalWrite(s3, LOW);
K = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Kırmızı= “);
Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, HIGH); //Yeşili filtrelemek için
digitalWrite(s3, HIGH);
Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
Serial.print("Yeşil= “);
Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, LOW); //Maviyi filtrelemek için
digitalWrite(s3, HIGH);
M = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Mavi= ");
Serial.print(M);//Mavi için aldığımız değeri serial monitöre yazdır
Serial.println();
delay(50);//50 milisaniye bekle
if(Y<=K && Y<=M){
ileri();
distance=readPing();
Serial.println(distance);
delay(200);
Serial.print("aaaaaa= ");

digitalWrite(s2, LOW); //Kırmızıyı filtrelemek için
digitalWrite(s3, LOW);
K = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Kırmızı= “);
Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, HIGH); //Yeşili filtrelemek için
digitalWrite(s3, HIGH);
Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
Serial.print("Yeşil= “);
Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
Serial.print(” ");
delay(50);//50 milisaniye bekle

digitalWrite(s2, LOW); //Maviyi filtrelemek için
digitalWrite(s3, HIGH);
M = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
Serial.print("Mavi= ");
Serial.print(M);//Mavi için aldığımız değeri serial monitöre yazdır
Serial.println();
delay(50);//50 milisaniye bekle
if(K<=Y && K<=M){
dur();

}
}
}
}
}

void ileri(){ // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz.
analogWrite(e1, 150);
analogWrite(e2, 150);
digitalWrite(inA, HIGH);
digitalWrite(inB, LOW);
digitalWrite(inC, HIGH);
digitalWrite(inD, LOW);
Serial.print("ileri= ");

}
void sag(){ // Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz.
analogWrite(e1, 0);
analogWrite(e2, 100);
digitalWrite(inA, HIGH);
digitalWrite(inB, LOW);
digitalWrite(inC, HIGH);
digitalWrite(inD, LOW);
}
void sol(){ // Robotun sola dönme hareketi için fonksiyon tanımlıyoruz.
analogWrite(e1, 100);
analogWrite(e2, 0);
digitalWrite(inA, HIGH);
digitalWrite(inB, LOW);
digitalWrite(inC, HIGH);
digitalWrite(inD, LOW);
}

void dur(){
analogWrite(e1, 0);
analogWrite(e2, 0);
digitalWrite(inA, LOW);
digitalWrite(inB, LOW);
digitalWrite(inC, LOW);
digitalWrite(inD, LOW);
Serial.print("aaaaaa= ");

}
int readPing(){
delay(50);
int cm=sonar.ping_cm();
if(cm==0){
cm=250;
}
return cm;
}

Erva___in.ino (9.2 KB)

please give as the circuit or the code to help you

Please read the first topics telling How to use Forum etc. There You can read how to attach code. I tried to open it but it ran into error. Helpers using mobiles can't read Your code……

Building large systems like this calls for building parts and verifying the parts. Then assemble one part to the build and verify. And so on. Use the same technich to find the error. Take part by part off the project and test them one by one. Hopefully You don't need to unscrew Everything but You can apply test code to each partial system and verify it.

Hi,
Welcome to the forum.

Do you have code that JUST controls the motors?
What model Arduino are you using?
What motor controller are you using?
How are you powering your project?

Thanks... Tom.. :slight_smile:

Thanks evertybody who help us,
Hi Tom,
Yes i have code that just controls the motors.
We use ardiuno uno.
We use 1298 motor driver.
We power motor driver with lipo battery and we power ardiuno with 9V battery.
We test motors with this code:

// connect motor controller pins to Arduino digital pins
// motor one
const int in1=2;
const int in2=3;
const int in3=4;
const int in4=5;
const int enA=9;
const int enB=10;

void setup()
{
// set all the motor control pins to outputs
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void demoOne()
{
// this function will run the motors in both directions at a fixed speed
// turn on motor A
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enA, 100);
// turn on motor B
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// set speed to 200 out of possible range 0~255
analogWrite(enB, 100);
delay(2000);
// now change motor directions
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void demoTwo()
{
// this function will run the motors across the range of possible speeds
// note that maximum speed is determined by the motor itself and the operating voltage
// the PWM values sent by analogWrite() are fractions of the maximum speed possible
// by your hardware
// turn on motors
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// accelerate from zero to maximum speed
for (int i = 0; i < 256; i++)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// decelerate from maximum speed to zero
for (int i = 255; i >= 0; --i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// now turn off motors
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop()
{
demoOne();
delay(1000);
demoTwo();
delay(1000);
}

@OP
Did You not understand #2?

Actually we want make a different wall follower robot.İt has color sensor.Also we don't think mistake which is in code.Because we test code ,which is in past and worked,isn't working now.we don't understand this case.
Thanks

are your motors working when each of them is alone with the arduino test code
i mean verify if all the motors are good if yes verify your batteries power they may be empty or they can't power up all the motors
for your code it is completly correct
did your robot work in the past or it didi never work ?

USE CODE TAGS when posting code.

Third reminder. Let's hope that's enough.