Arduino HC-Sr04 – Ultrasonik Sensör – Park Sensörü ve engel algılama sensörü gibi isimlele anılmaktadır.
Bir çok projede HC-Sr04 tercih edilmektedir. Arduino ile uğraşan ister hobi amaçlı projeler olsun ister profesyonel amaçlı projeler olsun Ultrasonik Sensörler tercih edilebilmektedir.
Üzerinde insan kulağının duyamayacağı frekanslarda ses dalgaları yollayan hoparlör ve yine bu ses dalgalarını duyabilen mikrofon sayesinde mesafeleri ölçebilmektedir. 4 metrelik mesafeleri ölçebilen bu sensör 5volt ile çalışabilmekte ve 150mA akım çekmektedir. Az enerji tüketmesi oldukça stabil çalışması projelerde sıklıkla tercih sebebidir.
Teknik özellikleri:
- Çalışma Voltajı: DC 5V
- Çektiği Akım: 15 mA
- Çalışma Frekansı: 40 kHz
- Maksimum Görme Menzili: 4m
- Minimum Görme Menzili: 2cm
- Görme Açısı: 15°
- Tetik Bacağı Giriş Sinyali: 10 us TTL Darbesi
- Echo Çıkış Sinyali: Giriş TTL sinyali ve Mesafe Oranı
- Boyutları: 45mm x 20mm x 15mm
Arduin ile kullanabilmek için kütüphanelerden faydalanıldığı gibi kütüphanesiz de kullanılabilen bir sensördür.
//Görsel İşitsel Teknoloji Kanalı //wwww.teknikerler.com //Kerim Arı Youtube kanalı HC-Sr04 Kodları - kullanımı örnek Kodları byte trigger = 9; // Sensörün Trigger bacağının bağlı olduğu pin byte echo = 10; // Sensörün Echo bacağının bağlı olduğu pin unsigned long sure; // Echo bacağının kac mikro saniyede aktif olduğunu saklayacak olan değişken double Yol; double Mesafe; void setup() { Serial.begin(9600); pinMode(trigger, OUTPUT); // Sensörün Trigger bacağına gerilim uygulayabilmemiz için OUTPUT yapıyoruz. pinMode(echo, INPUT); // Sensörün Echo bacağındaki gerilimi okuyabilmemiz için INPUT yapıyoruz. Serial.begin(9600); } void loop() { /* Başlangıçta LOW durumda olan trigger bacağına gerilim uygulayıp ardından gerilimi keserek bir ses dalgası oluşturmuş oluyoruz. Bu işlem arasında 10 mikro saniye beklenmenin sebebi HC-SR04'ün en az 10 mikro saniyelik dalgalar ile çalışmasıdır. */ digitalWrite(trigger, HIGH); delayMicroseconds(10); digitalWrite(trigger, LOW); // Dalga üretildikten sonra geri yansıyıp Echo bacağının HIGH duruma geçireceği süreyi pulseIn fonksiyonu ile // kaydediyoruz. sure = pulseIn(echo, HIGH); // Aşağıda yapılan süre-mesafe dönüşüm işlemleri yazımızda açıklanmıştır. Yol = (double)sure*0.034; Mesafe = (double)Yol / 2; Serial.print("Mesafe:"); Serial.println(Mesafe); delay(500); }
Hc-Sr04 Kullanarak park sensörü örneği yapımı.
//Görsel İşitsel Teknoloji Kanalı //wwww.teknikerler.com //Kerim Arı Youtube kanalı HC-Sr04 Kodları - kullanımı örnek Kodları #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x3F,16,2); byte trigger = 9; byte echo = 10; unsigned long sure; double Yol; double Mesafe; const int buzzer = 11; void setup() { pinMode(trigger, OUTPUT); pinMode(echo, INPUT); Serial.begin(9600); pinMode(buzzer, OUTPUT); lcd.init(); lcd.backlight(); lcd.setCursor(1,0); lcd.print("Merhaba Dunya"); lcd.setCursor(6,1); lcd.print("GiT"); delay(1000); lcd.clear(); delay(1000); tone(buzzer, 3000, 400); } void loop() { digitalWrite(trigger, HIGH); delayMicroseconds(10); digitalWrite(trigger, LOW); sure = pulseIn(echo, HIGH); Yol = (double)sure*0.034; Mesafe = (double)Yol / 2; if (Mesafe >= 400 || Mesafe <= 2) { lcd.clear(); lcd.setCursor(3,0); lcd.print("Menzil Disi"); Serial.println("menzil dısı"); delay(1000); } if(Mesafe <= 20) { lcd.clear(); lcd.setCursor(0,0); lcd.print("Mesafe:"); lcd.print(Mesafe); lcd.print(" cm"); lcd.setCursor(0,1); lcd.print("Dikkatli Olun"); Serial.println("20den kücük"); delay(1000); while(Mesafe <= 10) { digitalWrite(trigger, HIGH); delayMicroseconds(10); digitalWrite(trigger, LOW); sure = pulseIn(echo, HIGH); Yol = (double)sure*0.034; Mesafe = (double)Yol / 2; lcd.clear(); lcd.setCursor(0,0); lcd.print("Mesafe:"); lcd.print(Mesafe); lcd.print(" cm"); lcd.setCursor(0,1); lcd.print("Durunuz"); Serial.println("10 dan kücük"); map(Mesafe,0,400,4,1); digitalWrite(buzzer,1); delay(Mesafe*25); digitalWrite(buzzer,0); delay(Mesafe*50); if(Mesafe>10) break; } } else { Serial.println("else"); lcd.setCursor(0,0); lcd.print("Mesafe:"); lcd.print(Mesafe); lcd.print(" cm"); delay(1000); lcd.clear(); } }
ViDEOYU iZLEMEK iÇiN TIKLAYINIZ