Arduino Uno ile Hc-Sr04 ve Lcd Ekran Kullanarak Mesafe Ölçmek
1 Adet Arduino Uno 1 Adet Hc-Sr04 Ultrasonik mesafe sensörü 1 Adet 16 2 Lcd Ekran 1 Adet Breadbord 1 Adet Potansiyometre 2 Ader led Yeteri kadar jumper kablosu
Arduino Uno, Arduino'nun birçok çeşidinden (mega, mini, mini pro, nano, leonardo...) biridir. Arduino üzerinde Atmega 328 mikrodenetleyicisi bulunur. Temel olarak yaptığımız işlem bilgisayar üzerinden bu mikrodenetleyiciyi programlamak ve giriş çıkış pinlerini kullanarak istediğimiz devreyi tasarlamaktan ibarettir. Arduino ile analog ve dijital verileri okuyup işleyebilir, çıktı üretebilirsiniz, Arduino'yu Usb girişinden bilgisayara bağlayarak çalıştırabilir ve programlayabilirsiniz. Eğer mobil bir projede kullanılacaksanız harici güç girişinden devreyi besleyebilirsiniz.( En fazla 12V a kadar güç kaynaklarının kullanılması önerilir. ) Arduino size 5V ve 3.3V çıkışlarını verir, çoğu elektronik elemanı çalıştırabilirsiniz.
Hc-sr04 Ultrasonik Sensör Nedir?... Hc-sr04 ultrasonik sensör sonar(sound Navigation and Ranging ) kullanarak karşısındaki nesneye olan mesafesini hesaplayan bir input kaynağıdır.sonar dediğimiz sistem ses dalgalarını kullanarak cismin uzaklığını boyutunu elde etmemizi sağlar. Bu tür sensörlerin esin kaynağı yunuslar ve yarasalardır. Onlarda sonar ile iletişim kurar ve hareket eder. 2cm ile 400cm arası mesafe en sağlıklı okuma yaptığı aralıktır.üzerinde bir alıcı ve bir verici modül bulunur.
Ölçümün başlaması için Trig pini en az 10 us de +5V almalıdır. Böylelikle sensörden 40 khz de 8 devir ses dalgası dışarıya iletilir ve yansıması beklenir. Hc-sr04 alıcıdan ses dalgasını aldığında Echo pini 0V dan 5V a geçer ve mesafeyle orantılı bir süre bekler. Biz burda Echo pinindeki genişliği ölçerek, aradaki mesafeyi elde edebiliriz.
Trigger signal : Trig pini aktif olduğunda gönderilen 1 adet sinyaldir. Module send out : Trig pini aktif olduğunda tek seferde 40kHz de 8 adet kare dalga sinyal gönderir. Output on pin Echo : Yansıyan dalgaların dönüşte Echo pininde oluşturduğu sinyaldir.
LCD Pinleri Fonksiyonları 1) GND Toprak (Ground) 2) Vcc +5 V 3) VEE Kontrast 4) RS Register Select 5) R/W Read / Write 6) E N Enable 7-14) D0 - D7 Data girişleri 15) BL+ Arka panel ışığı pozitif ucu 16) BL - Arka panel ışığı negatif ucu
VEE : Kontrast girişine bağlanan direnç ile LCD panelin kontrastı ayarlanabilir. Direnç değeri yükseldikçe kontrast düşer, azaldıkça ise kontrast yükselir. RS : Lcd ye komut mu yoksa data mı gönderileceğini belirler. RS girişi "0" (ground) durumundayken komut saklayıcısı, +5V oldugundaysa veri saklayıcısı seçilmiş olur. RW : Lcd den okuma mı yoksa lcd ye yazma yapılacağını belirler. RW girişi toprağa bağlandığında yani "0" durumundayken LCD yazma modundadır. E : Enable ucu LCD ve pinler arasındaki gerçek veri alışverişini sağlayan bacaktır. Bu girişi mikrodenetleyiciye program aracılığıyla tanıttıktan sonra PIC kendisi veri gönderileceği zaman bu bacaga enable pulsu gönderir. D0 - D7 : Data hattı olan bu pinler doğrudan mikrodenetleyicinin bir portuna bağlanır. Veri 4 ya da 8 bitlik veri yolu ile gönderilebilir.
Potansiyometre bir direnç (reosta) türüdür. Fakat diğer direnç türlerinden ayrılan en büyük özelliği ise direnç değerinin değiştirilebilir olmasıdır. Potansiyometreyi lcd ekranın parlaklığını ayarlamak için kullanacağız.
LED
LED Işık yayan diyotlardır. LED (Light Emitting Diode) kelimesinin kısaltmasıdır. LED'ler elektrik enerjisini ışık enerjisine çevirmektedir. LED'lerin normal diyotlardan farkı ışık yaymasıdır. LED'ler soğuk ışık yayar, dokunduğunuzda ısınmadığını hissedersiniz. İçerisindeki katkı maddeleri nedeni ile farklı renklerde ışık yayarlar. Beyaz, kırmızı, mavi, yeşil, sarı renkleri bulunmaktadır.
//LCD Ultrasonik Mesafe Ölçer #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12); int trigpin=2; //define trigpin 2 int echopin=3; //define echopin 3 int led=13; int led1=6; void setup() { } pinmode(trigpin, OUTPUT); pinmode(echopin, INPUT); pinmode(led,output); lcd.begin(16,2);
void loop() { int sure, uzaklik; lcd.clear(); lcd.setcursor(0,0); lcd.print("***chucky***");//ilk satırda görünecek mesajı yazıyoruz digitalwrite(trigpin, HIGH); delaymicroseconds(1000); digitalwrite(trigpin, LOW); sure = pulsein(echopin, HIGH); uzaklik = (sure/58);//ölçüm fonksiyonu
if (uzaklik<15) {digitalwrite(led,high);} else {digitalwrite(led,low);} if (uzaklik<200 && uzaklik>15) {digitalwrite(led2,high);} else {digitalwrite(led2,low);} if (uzaklik>200) {digitalwrite(led1,high);} else {digitalwrite(led1,low);} lcd.setcursor(0,1); lcd.print(" "); //Ekranı temizlemek için boşluk yazdırıyoruz. lcd.setcursor(0,1); lcd.print("mesafe = "); lcd.setcursor(7,1); //satırın başında mesafe yazdığı için kursoru 7. sütuna götörüyoruz lcd.print(uzaklik);//ölçülen mesafeyi yazdırıyoruz lcd.print(" cm"); //Ölçü birimini yazdırıyoruz delay(250); }