Robot Sürekli Tek Tekeri Dönüyor?

çizgi izleyen aynı zamanda engelden kaçan robot yaptım. Fakat sadece sağ teker dönüyor . ters çevirince falan bazen sağ teker durup sol teker çalışıyor sonra tekrar sağ teker devam ediyor. çözemedim kaç gündür yardımcı olursanız çok sevinirim

Merhaba
Büyük ihtimal ya temazsızlıktandır ya da hiç bir sorun yoktur. Çünkü engel algılayınca mantıkken sadece sağ motor çalışıp sola dönmesi gerekiyor. Engel algıladığı süre boyunca da böyle oluyor. İsterseniz koddan engel algılama daha doğrusu kaç cm sonra engelden kaç kodundaki cm değerini düşürebilirsiniz. İsterseniz kodunuzu atın çünkü kodda da sorun olabilir. Onun haricinde aşağıya iki kaynak bırakıyorum belki faydası dokunabilir. Kolay gelsin. :smiley:

teşekkür ederim ben bunlarıda izledim nette bir çok kaynak taradım böyle bişey yazdım bakar mısınız ? çizgi izliyvek engel görünce geri gelicek -sağ dön- ileri git-sola dön-ileri git ve çizgiyi görünce izlemeye devam et dedim . ultrasonic sensörüm ve 4 girişli tcrt5000 im ve l298n’im var .

#define echoPin 12 //Ultrasonik sensörün echo pini Arduino’nun 12.pinine
#define trigPin 13 //Ultrasonik sensörün trig pini Arduino’nun 13.pinine tanımlandı.

#define enA 9//Enable1 L298 Pin enA
#define in1 7 //Motor1 L298 Pin in1
#define in2 6//Motor1 L298 Pin in1
#define in3 5 //Motor2 L298 Pin in1
#define in4 4 //Motor2 L298 Pin in1
#define enB 3 //Enable2 L298 Pin enB

#define R_S A1//ir sensor Right
#define L_S A0 //ir sensor Left

long sure, uzaklik;

void setup(){ // put your setup code here, to run once

pinMode(R_S, INPUT); // declare if sensor as input
pinMode(L_S, INPUT); // declare ir sensor as input

pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);

pinMode(enA, OUTPUT); // declare as output for L298 Pin enA
pinMode(in1, OUTPUT); // declare as output for L298 Pin in1
pinMode(in2, OUTPUT); // declare as output for L298 Pin in2
pinMode(in3, OUTPUT); // declare as output for L298 Pin in3
pinMode(in4, OUTPUT); // declare as output for L298 Pin in4
pinMode(enB, OUTPUT); // declare as output for L298 Pin enB

analogWrite(enA, 150); // Write The Duty Cycle 0 to 255 Enable Pin A for Motor1 Speed
analogWrite(enB, 150); // Write The Duty Cycle 0 to 255 Enable Pin B for Motor2 Speed
delay(1000);

Serial.begin(9600);
}
void loop() {

digitalWrite(trigPin, LOW); //sensör pasif hale getirildi
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); //Sensore ses dalgasının üretmesi için emir verildi
delayMicroseconds(10);
digitalWrite(trigPin, LOW); //Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi

sure = pulseIn(echoPin, HIGH); //ses dalgasının geri dönmesi için geçen sure ölçülüyor
uzaklik = sure / 29.1 / 2; //ölçülen süre uzaklığa çevriliyor

Serial.println(uzaklik);

if (uzaklik < 15) // Uzaklık 15’den küçük ise,
{
Stop();
delay(150);
go_backward(); // 100 ms geri git
delay(100);
turnRight(); // 150 ms sağa dön
delay(150);
forword();
delay(200);
turnLeft();
delay(150);
forword();
delay(250);
turnLeft();
delay(200);

}
else {
if((digitalRead(R_S) == 0)&&(digitalRead(L_S) == 0)){forword();} //if Right Sensor and Left Sensor are at White color then it will call forword function

if((digitalRead(R_S) == 1)&&(digitalRead(L_S) == 0)){turnRight();} //if Right Sensor is Black and Left Sensor is White then it will call turn Right function

if((digitalRead(R_S) == 0)&&(digitalRead(L_S) == 1)){turnLeft();} //if Right Sensor is White and Left Sensor is Black then it will call turn Left function

if((digitalRead(R_S) == 1)&&(digitalRead(L_S) == 1)){Stop();} //if Right Sensor and Left Sensor are at Black color then it will call Stop function
}

}

void forword(){ //forword
digitalWrite(in1, HIGH); //Right Motor forword Pin
digitalWrite(in2, LOW); //Right Motor backword Pin
digitalWrite(in3, LOW); //Left Motor backword Pin
digitalWrite(in4, HIGH); //Left Motor forword Pin
}

void turnRight(){ //turnRight
digitalWrite(in1, LOW); //Right Motor forword Pin
digitalWrite(in2, HIGH); //Right Motor backword Pin
digitalWrite(in3, LOW); //Left Motor backword Pin
digitalWrite(in4, HIGH); //Left Motor forword Pin
}

void turnLeft(){ //turnLeft
digitalWrite(in1, HIGH); //Right Motor forword Pin
digitalWrite(in2, LOW); //Right Motor backword Pin
digitalWrite(in3, HIGH); //Left Motor backword Pin
digitalWrite(in4, LOW); //Left Motor forword Pin
}

void Stop(){ //stop
digitalWrite(in1, LOW); //Right Motor forword Pin
digitalWrite(in2, LOW); //Right Motor backword Pin
digitalWrite(in3, LOW); //Left Motor backword Pin
digitalWrite(in4, LOW); //Left Motor forword Pin
}
void go_backward() // Robot geri gitsin.
{
digitalWrite(in1, LOW); //Right Motor forword Pin
digitalWrite(in2, HIGH); //Right Motor backword Pin
digitalWrite(in3, HIGH); //Left Motor backword Pin
digitalWrite(in4, LOW); //Left Motor forword Pin
}