Arduino Arduino ile Dinamik Far Asistanı ve Park Sensörü Projesi By Konuk Yazar Posted on 28 Nisan 2015 8 min read 14 0 17,845 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar, Bu yazımızda,Arduino ile park sensörü ve uzunları kapat uygulamasıyla karşınızdayız.Sizde Ultrasonik sensör kullanarak kendi park sensörünüzü yapabilir ve bununla birlikte LDR (Light Depented Resistance) kullanarak uzunları otomatik kapatıp kısa farları yaktırabilirsiniz. Tavsiye Edilen Malzeme Linkleri ve Kullanılan Malzemeler 1 Adet Arduino Uno 1 Adet Ultrasonik Sensör 1 Adet LDR 1 Adet 2*16 LCD 3 Adet LED 1 Adet 10k direnç 3 Adet 330 ohm direnç(330-390 ohm arası olabilir) 1 Adet Buzzer Öncelikle biraz sensörlerden bahsetmek istiyorum.Çoğu teknolojik icatta olduğu gibi bu sensörümüzde doğadan ilham alınarak bulunmuştur.En iyi örneği yarasalar ve yunuslar yaratılıştan bu yana bu teknikle yollarını buluyor ve nesnelerin yerlerini tespit ediyorlar. Ultrasonik Sensör Bu sensörle ölçüm yaparken aslında sensörümüz bize doğrudan mesafe bilgisini vermez.Bize verdiği değer gönderdiği ses dalgasının yansımasının geri dönüş süresidir.Biz de fizikteki en basit hareket denklemini kullanarak mesafeyi buluruz… X=V*t Bu denklemde bildiğimiz tek şey sesin hızıdır V=343 m/s , t değerinide bize sensörümüz tarafından gelir ve mesafeyi bulmak için basit bir çarpma işlemi yapılır.Burada dikkat edilmesi gereken husus,sensörden gelen sürenin gidiş ve dönüş süresi olduğudur.Gidiş dönüşe eşittir.Yani bize sadece gittiği yada döndüğü süre lazım bunun için sensörden gelen t’yi ikiye bölmeyi unutmamak gerekir.Ve bir diğer husus mikrosaniye kullanımı yani saniyenin milyonda biri gibi küçücük bir zaman zarfında ses gönderip yankılanmasını dinliyoruz… LDR Biraz da ldr (light depented resistance),yani ışığa bağımlı dirençden bahsedecek olursak. Elektrik devrelerin altın formulü olan V=I.R ‘dan sabit ve gerilimi veriyorken dirençte değişim varsa I akımı buna ters orantılı olarak değişecektir.Bizde bu değişimi analog girişimizden okuyayrak ışıktaki değişimi algılayıp,yapmamız gerekenleri yaptırıyoruz. Devre Şeması Arduino Kodları [php] #define trigPin 4 // Trigger Pini (Ses gönderme) #define echoPin 5 // Echo Pini (Yansıyan ses algılama) #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12); int ldr = 0; //analog pin to which LDR is connected int ldr_value = 0; //variable to store LDR values int kisa =13; int uzun =6; int stp = 3; int bzr =2; int maksimumMesafe = 200; // Maksimum mesafe. Farketmesi için uzak nesneler daha büyük olmalıdır. int minimumMesafe = 3; // Minimum mesafe long microsaniyeSure, cmMesafe; // Mesafe hesabında kullanılan değişkenler int ldr_pin=A0; int tonePin = 2; byte possible_patterns[9] = { B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111, }; void setup() { Serial.begin (9600); // Seri iletişimi başlat pinMode(trigPin, OUTPUT); // Ses gönderme pin türünü çıkış olarak ayarla pinMode(echoPin, INPUT); // Yansıyan ses algılama pin türünü giriş olarak ayarla lcd.begin(16, 2); pinMode(kisa, OUTPUT); pinMode(uzun, OUTPUT); pinMode(stp, OUTPUT); pinMode(bzr, OUTPUT); pinMode(tonePin, OUTPUT); } void loop() { /* Aşağıda trigPin/echoPin döngüsü en yakın nesneden yansıyan sesin yansıma süresini hesaplar. */ int ldr= analogRead(ldr_pin); Serial.println(ldr); digitalWrite(trigPin, LOW); // Hoparlör 2ms sessiz delayMicroseconds(2); digitalWrite(trigPin, HIGH); // Hoparlör 10ms sesli delayMicroseconds(10); digitalWrite(trigPin, LOW); // Hoparlör sessiz microsaniyeSure = pulseIn(echoPin, HIGH); // Mikrofonu dinle, yansıma süresini microsaniyeSure değişkenine al // Serial.println(microsaniyeSure); // Sesin gitme ve geri yansıma süresi cmMesafe = microsaniyeSure/58.3; // microsaniyeSure’dan cm olarak mesafeyi hesapla lcd.clear(); if (ldr >= 500) { digitalWrite(kisa ,HIGH); digitalWrite(uzun ,HIGH); lcd.setCursor(0,0); lcd.print("Uzunlar Acik"); } if (ldr < 500) { digitalWrite(kisa ,HIGH); digitalWrite(uzun ,LOW); lcd.setCursor(0,0); lcd.print("Uzunlar Kapali"); } if (cmMesafe >= 15 && cmMesafe < 20){ digitalWrite(stp ,LOW) ; tone(tonePin,200000, 300); delay(100); } if (cmMesafe >= 10 && cmMesafe < 15){ digitalWrite(stp ,LOW); tone(tonePin,200000, 50); delay(300); } if (cmMesafe >=5 && cmMesafe<10 ){ digitalWrite(stp ,LOW); tone(tonePin, 200000,100); } if (cmMesafe < 5 ){ digitalWrite(stp ,HIGH); tone(tonePin, 200000); } if (cmMesafe >20 ){ digitalWrite(stp ,LOW); noTone(tonePin); } /* Seri iletişimden ölçülen mesafeyi bilgisayara gönder */ lcd.setCursor(0,2); lcd.print("Mesafe "); lcd.print(cmMesafe); //Mesafe bilgisi lcd.print(" "); // Birim değeri delay(1000); //Sonraki ölçümden önce bekleme süresi. }[/php]