//KOD 1 #define echoPin 12 //Ultrasonik sensörün echo pini Arduino kartımızın 12.pinine bağladık #define trigPin 13 //Ultrasonik sensörün trig pini Arduino kartımızın 13. pinine bağladık. #define MotorR1 7 // L298N üzerindeki IN1 pinine bağlayın #define MotorR2 6 //L298N üzerindeki IN2 pinine bağlayın #define MotorRenable 9 // L298N üzerindeki enA pinine bağlayın #define MotorL1 5 // L298N üzerindeki IN3 pinine bağlayın #define MotorL2 4 // L298N üzerindeki IN4 pinine bağlayın #define MotorLenable 3// L298N üzerindeki enB pinine bağlayın //Yukarıdaki kısımda motor pinlerini tanımladık. long sure, uzaklik; //süre ve uzaklık adında iki değişken tanımlıyoruz. void setup() { // ultrasonik sensör Trig pininden ses dalgaları gönderdiği için OUTPUT (Çıkış), // göndermiş olduğıu bu dalgaları Echo pini ile geri aldığı için INPUT yani (Giriş) olarak tanımlanır. pinMode(echoPin, INPUT); pinMode(trigPin, OUTPUT); pinMode(MotorL1, OUTPUT); pinMode(MotorL2, OUTPUT); pinMode(MotorLenable, OUTPUT); pinMode(MotorR1, OUTPUT); pinMode(MotorR2, OUTPUT); pinMode(MotorRenable, OUTPUT); // yukarıdaki kısımda Motorlarımızı çıkış olarak tanımladık Serial.begin(9600);// 9600 baud rate üzerinden bir seri haberleşme başlattık } 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; //ses dalgasının gidiş ve dönüşünden elde edilen süre uzaklık birimine çevriliyor Serial.println(uzaklik); if (uzaklik < 15) // Uzaklık 15'den küçük ise, { geri(); // 150 ms geri git delay(150); sag(); // 250 ms sağa dön delay(250); } else { // değil ise, ileri(); // ileri git } } void ileri(){ // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz. digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif analogWrite(MotorRenable, 250); // Sağ motorun hızı 150 digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif analogWrite(MotorLenable, 250); // Sol motorun hızı 150 } void sag(){ // Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz. digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif analogWrite(MotorRenable, 0); // Sağ motorun hızı 0 (Motor duruyor) digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif analogWrite(MotorLenable, 250); // Sol motorun hızı 150 } void geri(){ // Robotun geri yönde hareketi için fonksiyon tanımlıyoruz. digitalWrite(MotorR1, LOW); // Sağ motorun ileri hareketi pasif digitalWrite(MotorR2, HIGH); // Sağ motorun geri hareketi aktif analogWrite(MotorRenable, 150); // Sağ motorun hızı 150 digitalWrite(MotorL1, LOW); // Sol motorun ileri hareketi pasif digitalWrite(MotorL2, HIGH); // Sol motorun geri hareketi aktif analogWrite(MotorLenable, 150); // Sol motorun hızı 150 } //KOD 2 include // servo motor kütüphanesi #include //motor pinleri #define SolMotorileri 2 #define SolMotorGeri 3 #define SagMotorileri 4 #define SagMotorGeri 5 //sensör pinleri #define USTrigger 6 #define USEcho 7 #define Maksimum_uzaklik 100 Servo servo; //servo motor tanımlama NewPing sonar(USTrigger, USEcho, Maksimum_uzaklik);//ultrasonik sensör tanımlama //kullanılacak eleman tanımı unsigned int uzaklik; unsigned int on_uzaklik; unsigned int sol_uzaklik; unsigned int sag_uzaklik; unsigned int zaman; // program ilk çalıştığında sadece bir kez çalışacak programlar void setup() { //motor çıkışları pinMode(SolMotorileri, OUTPUT); pinMode(SolMotorGeri, OUTPUT); pinMode(SagMotorileri, OUTPUT); pinMode(SagMotorGeri, OUTPUT); servo.attach(8); //servo pin tanımı } // sonsuz döngü void loop() { delay(500); servo.write(90); sensor_olcum(); on_uzaklik = uzaklik; if(on_uzaklik > 35 || on_uzaklik == 0) { ileri(); } else { dur(); servo.write(180); delay(500); sensor_olcum(); sol_uzaklik = uzaklik; servo.write(0); delay(500); sensor_olcum(); sag_uzaklik = uzaklik; servo.write(90); delay(300); if(sag_uzaklik>sol_uzaklik) { sag(); delay(200); ileri(); } else if(sol_uzaklik >sag_uzaklik) { sol(); delay(200); ileri(); } else { geri(); } } } // robotun yön komutları void ileri() { digitalWrite(SolMotorGeri, LOW); digitalWrite(SolMotorileri, HIGH); digitalWrite(SagMotorGeri, LOW); digitalWrite(SagMotorileri, HIGH); } void geri() { digitalWrite(SolMotorileri, LOW); digitalWrite(SolMotorGeri, HIGH); digitalWrite(SagMotorileri, LOW); digitalWrite(SagMotorGeri, HIGH); } void sol() { digitalWrite(SolMotorileri, LOW); digitalWrite(SolMotorGeri, HIGH); digitalWrite(SagMotorGeri, LOW); digitalWrite(SagMotorileri, HIGH); } void sag() { digitalWrite(SolMotorGeri, LOW); digitalWrite(SolMotorileri, HIGH); digitalWrite(SagMotorileri, LOW); digitalWrite(SagMotorGeri, HIGH); } void dur() { digitalWrite(SolMotorGeri, LOW); digitalWrite(SolMotorileri, LOW); digitalWrite(SagMotorileri, LOW); digitalWrite(SagMotorGeri, LOW); } // sensörün mesafe ölçümü void sensor_olcum() { delay(50); zaman = sonar.ping(); uzaklik = zaman / US_ROUNDTRIP_CM; }