#include <Servo.h> // Servo kutuphanesini include ettik
Servo servom; // Servo motor nesnesi yarattık
const int trigPin = 12; //Hc-sr04'ün trig pini için
const int echoPin = 13; //Hc-sr04'ün echo pini için
const int in1=7; //L298N'nin in1 pini için
const int in2=10;
const int in3=5;
const int in4=4;
const int en1=6;
const int en2=3;
int hiz1=150; /* İleri hareket hızı */
int hiz2=80; /* Dönme hızı */
int sure=700; /* Dönme süresi */
int x=0; /* Ultrasonik sensör öne bakarken gelen mesafe bilgisi için */
int y=0; /* Ultrasonik sensör sola bakarken gelen mesafe bilgisi için */
int z=0; /* Ultrasonik sensör sağa bakarken gelen mesafe bilgisi için */
void setup()
{
servom.attach(11); // Servo motoru 11 numarali pine bagladık
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(en1, OUTPUT);
pinMode(en2, OUTPUT);
}
void loop()
{
servom.write(78);
x=ontara();
delay(1000);
while(x>20) { //Engele 20 cm yaklaşana kadar ilerleyecek
ilerle();
x=ontara();
delay(100);
}
dur();
delay(1000);
servom.write(180);
delay(1000);
z=sagtara();
delay(100);
servom.write(0);
delay(1000);
y=soltara();
if(y>=z){ //Sol mesafe sağdan büyükse sola dönüyor
soladon();
delay(1000);
}
else { //Sağ mesafe soldan büyükse sağa dönüyor
sagadon();
delay(1000);
}
}
int sagtara(){
long duration,cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// pulsIn komutuyla veri alıyoruz
// cm cinsinden dönüşümleri yapıyoruz
cm = duration / 29 / 2;
return cm;
}
int soltara(){
long duration,cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// pulsIn komutuyla veri alıyoruz
// cm cinsinden dönüşümleri yapıyoruz
cm = duration / 29 / 2;
return cm;
}
int ontara(){
long duration,cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
// pulsIn komutuyla veri alıyoruz
// cm cinsinden dönüşümleri yapıyoruz
cm = duration / 29 / 2;
return cm;
}
void ilerle(){
analogWrite(en1, hiz1);
analogWrite(en2, hiz1);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
void soladon(){
analogWrite(en1, hiz2);
analogWrite(en2, hiz2);
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(sure);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void sagadon(){
analogWrite(en1, hiz2);
analogWrite(en2, hiz2);
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(sure);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void dur(){
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}