Arduino Robotik Arduino ile Engelden Kaçan Robot Yapımı By Yunus Arat Posted on 23 Temmuz 2017 7 min read 6 1 21,291 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Engelden Kaçan Robot (EKR) Nasıl Çalışır ? EKR herhangi bir uzaklık sensörü ile önündeki cisimlere olan uzaklığını ölçen ve belli bir mesafeden sonra çarpmamak için yön değiştiren robottur. Kullanılan Malzemeler Arduino Sarhoş Teker L293D Motor Sürücü DC Motor HC-SR04 DC Voltaj Kaynağı ( 9V-12V uygun olacaktır ) Mini Breadbord Uygun Bir Kasa Arduino, sarhoş teker, DC motor, L293D motor sürücü, DC voltaj kaynağı gibi malzemelerimizi “çizgi izleyen robot” yazımızda kısaca bahsetmiştik. O yazıma buradan ulaşabilirsiniz.O yüzden şimdi sadece HC-SR04 ultrasonik mesafe sensörünü inceleyelim. HC-SR04 dört pinli ultrasonik ses dalgaları ile çalışan bir mesafe sensördür. İkisi besleme uçlarıdır.(5V – GND) Trig pini dışarıya belli bir frekanta ses dalgaları gönderen pindir. Ses dalgaları karşıdaki cisimden çarpıp geri gelir. Echo pini de çarpıp geri gelen ses dalgalarını alan pindir. Yani trig’i hoparlör, echo’yu mikrofon gibi düşünebiliriz. Biz bu ses dalgasının karşıya çarpıp geri dönüş süresinden faydalanarak cismin uzaklığını hesaplayacağız. Gelin şimdi şekil üzerinde daha iyi anlamaya çalışalım. Arkadaşlar 29.1 değeri bizi çok fazla ilgilendiren bir değer değildir. Ses dalgalarının havada yayılma hızı ile ilgili teorik bir değerdir. DEVRE ŞEMASI Mesafemizi ölçtük sıra geldi robota yön vermeye. Robotun bir engele çarpmaması için mesafe bir değerin altına düştükten sonra robotumuzun yönünü değiştirmeliyiz. Örneğin mesafe 40 cm den yüksek ise yani robotun çarpma tehlikesi yok ise robot düz gidecek, bunu da iki motora da tam güç vererek yapacağız. Eğer mesafe 40 cm’ den az ise robotun çarpma tehlikesi var demektir robotun yönünü değiştirmeliyiz. Bunu da iki şekilde yapabiliriz, ister bir motoru durdurup sadece bir motora güç veririz, ister iki motora zıt yön vererek tank dönüşü dediğimiz şekilde robotun yönünü değiştiririz. Yani küçük bir if – else yapısı ile işimizi bitireceğiz. 🙂 Kod üzerinde de açıklamalar yapılmıştır onları da inceleyebilirsiniz. Soru istek ve yorumlarınızı yorum kısmına yazabilirsiniz. Kolay gelsin 🙂 [php] int trig = 3; int echo = 2; int mesafe; //HC-SR04 için değişkenler tanımlandı… int sure; int sol_i = 4; //motor bağlantıları… int sol_g = 5; int sag_i = 6; int sag_g = 7; void setup() { pinMode(trig, OUTPUT); //trig pini hoparlör,echo pini mikrofon demiştik pinMode(echo, INPUT); //o yüzden trig pinini output, echo pinini input olarak ayarladık… pinMode(sol_i, OUTPUT); pinMode(sol_g, OUTPUT); pinMode(sag_i, OUTPUT); //motor bağlantıları output olarak ayarlanır… pinMode(sag_g, OUTPUT); } void loop() { digitalWrite(trig, HIGH); delayMicroseconds(1000); //düzenli bir ses dalgası elde etmek için digitalWrite(trig, LOW); //saniyede 1 kez trig pininden ses dalgası gönderiyoruz… sure = pulseIn(echo, HIGH); //burada ses dalgasının geri dönüş süresini hesaplamak ardından da mesafeyi hesaplıyoruz… mesafe = (sure / 2) / 29; //pulseIn komutu bir şart gerçekleştiği zaman arkada bir kronometre çalıştırır //burada echo’ya bilgi geldiği zaman yani ses dalgası //geri döndüğü zaman pulseIn komutu kronometre çalıştırır… if (mesafe > 0 && mesafe<40) { digitalWrite(sol_i, HIGH); digitalWrite(sol_g, LOW); //eğer robot bir cisme 40 cm’den den yakın ise robot sola dönecek… digitalWrite(sag_i, LOW); digitalWrite(sag_g, HIGH); } else { digitalWrite(sol_i, HIGH); //eğer mesafe 40 cm’den fazla ise robot düz gidecek… digitalWrite(sol_g, LOW); digitalWrite(sag_i, HIGH); digitalWrite(sag_g, LOW); } } [/php]