#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);
}