Arduino – LED Bar ile Mesafe Gösterme

Herkese merhabalar, bu projemizde sizlerle HC-SR04 ultrasonik mesafe sensörü ile mesafe ölçümü yapıp bu mesafeyi LED bar ile göstereceğiz. Burada LED bardan kastımız sırayla dizilmiş LED’lerdir diyebiliriz. Projemizde LED’leri sürmek için shift register kullanacağız. HC-SR04 ile 0-80 cm aralığında mesafe ölçümü yapıp, sırayla dizilmiş olan 8 LED ile her LED 10 cm’lik aralığı gösterecek şekilde LED barımızı tasarlayacağız. Aynı zamanda sensörden okunan değerler kararsız olabildiği için Median filtre ile filtreleme yapacağız. Burada sayılar tamamen keyfi seçilmiştir. İsterseniz mesafeyi ve LED sayısını arttırabilirsiniz. Yazımızı okumadan önce Arduino ile HC-SR04 sensörünün ve shift register’ın nasıl kullanıldığını görmek için aşağıdaki linklere bakmanızda fayda var.Ayrıca filtreyi anlayabilmeniz için median filtre yazımıza da bakmanız gerekmektedir.

Arduino ile Median Filtre                          

Arduino HC-SR04 Mesafe Sensörü Kullanımı

Arduino Shift Register Kullanımı

İki elemanında oldukça kolay kullanımı olduğunu söyleyebiliriz ama yine de üşenenler için küçük bir hatırlatma yapmakta fayda var.

HC-SR04 Sensörü

HC-SR04 sensörü ultrasonik ses dalgaları ile mesafe ölçümü yapan bir sensördür. Karşına oldukça çıkan bu sensörün kullanımı oldukça basit. Trig bacağından gönderilen bir pulse ile sensörü tetikliyoruz ve devamında echo pininden okuma yapıyoruz. Bu okuma süresi bize sesin gidiş ve dönüş süresini veriyor. Ses hızına göre basit bir matematik ile aradaki mesafeyi ölçebiliyoruz. Sensörün kullanımı basit olsa da çok kararlı olduğu söylenemez. Düz zeminlerde iyi çalışırken engebeli düzlemlerde ses tam yansıyamadığı için kararsız davranmaktadır.

74HC595 Shift Register

Bu tip LED uygulamalarında I/O pininden tasarruf etmek ve kullanımı kolaylaştırmak için shift register oldukça sık kullanlmaktadır. Basitçe anlatacak olursak 3 pin ile 8 pinlik bir çıkış elde etmemizi sağlayan shift register kaydırma yöntemizle içindeki 8 bitlik hafızayı doldurmamızı sağlarken latch pini ile de bu hafızayı çıkışa vermemizi sağlıyor.

Devre Şematiği

Arduino UNO Kodları

Projede kullanılan algoritma oldukça basittir. Öncelikle mesafenin sınırlar içerisinde olup olmadığı kontrol edilir ki bu bizim için 80 cm’dir. Eğer sınır içerisindeyse ölçülen mesafe 10’a bölünür. Sonucun ondalık kısmı dikkate alınmazsa, sonuç bize kaç adet LED yanması gerektiğini göstermektedir. Elimizde 8 adet LED vardır. Örneğin 65 cm ölçüldüğü bir durumda 65/10 = 6.5 yapmaktadır. Ondalık kısım dikkate alınmazsa (int tanımlamada ondalık kısım dikkate alınmaz) sonuç 6’dır. Dizinin ilk 6 elemanı 1 yapılır ve bu dizi shift register ile LED’leri yakacak şekilde ayarlanır. Böylece 8 LED’imizden ilk 6’sı yanmış olur. LED’lerinin durumunun aynı olması durumunda bir önceki durum kontrol edilerek işlem yapılmaz. Böylece gereksiz yere LED durumları güncellenmez ve LED’lerdeki titreme engellenmiş olur. Ayrıca mesafe sensöründen okunan değerler median filtreden geçirilmiştir. Böylece daha tutarlı sonuçlar elde edilmektedir. 100 milisaniyede bir durum tekrarlanır. Görüntünün gerçekçi olması için LED’lerin doğru sırayla yanyana bağlanması gerekmektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.