Engel geçen çizgi izleyen arduino araç

HalilSenn

MB Üyesi
Kayıt
2 Ocak 2019
Mesajlar
13
Tepkiler
3
Yaş
28
Üniv
Adnan Menderes Üniversitesi
Merhaba arkadaşlar çizgi izleyen ve engel geçen araç yapıyorum. Çizgi izleme ve engele gelmede bir sorun yaşamıyorum ancak engelin önünde durduktan sonra aracın bir kez daha engel görmesini istiyorum. Bir kez daha engeli gördükten sonra geçecek. Eğer bunu yaptırmazsam engel yok diyerek geçmek isteyecek, belkide engel kapanırken denk gelecek ve engelle çarpışacak. O yüzden 1 kere daha engeli gördükten sonra geç işlemini nasıl yaptırabilirim?
#define SensorSol 4 //left sensor
#define echoPin 12
#define trigPin 11
#define SensorSag 2 //right sensor

long sure, uzaklik; //duration, distance

#define MotorR1 9
#define MotorR2 8
#define MotorRE 10

#define MotorL1 7
#define MotorL2 6
#define MotorLE 5



void setup() {

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

pinMode(MotorR1, OUTPUT);
pinMode(MotorR2, OUTPUT);
pinMode(MotorRE, OUTPUT);

pinMode(MotorL1, OUTPUT);
pinMode(MotorL2, OUTPUT);
pinMode(MotorLE, OUTPUT);

Serial.begin(9600);


}

void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

sure = pulseIn(echoPin, HIGH);
uzaklik = (sure / 2) / 29.1 ;
Serial.print("uzaklik: ");
Serial.println(uzaklik);
if (uzaklik > 5 ) {
if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}

if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 1){
sag();
}

if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}

if(digitalRead(SensorSol) == 1 && digitalRead(SensorSag) == 0){
sol();
}

if(digitalRead(SensorSol) == 0 && digitalRead(SensorSag) == 0){
ileri();
}

}

if (uzaklik < 5){
dur();
delay(500);

//SORUN BURADA BAŞLIYOR.
//ENGELİ BİR DAHA GÖR VE ARDINDAN if (uzaklik > 5);
//geç();
//delay(1000);
//void stop
//delay(500);
//Tekrar çizgi izlemeye devam et
}


}


void ileri(){ // move forward

digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 60);

digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 80);
}


void sag(){ //right

digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 0);

digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 80);
}

void sol(){ //left

digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 80);

digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 0);
}

void dur(){ // stop

digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 0);

digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 0);
}

void gec(){ //pass obstacle

digitalWrite(MotorR1, HIGH);
digitalWrite(MotorR2, LOW);
analogWrite(MotorRE, 250);

digitalWrite(MotorL1, HIGH);
digitalWrite(MotorL2, LOW);
analogWrite(MotorLE, 250);
}

Veya engeli gördürme konusunda MZ80 mi kullanmalıyım? Hangisi daha iyi sonuç verir, MZ80 mi yoksa HCSR04 mü?
Projem hakkında video;
 
Yukarı Alt