16 Nisan 2020 Perşembe

Arduino Buton ile İf Else Kullanımı

Bu dersimizde yan tarafta gördüğünüz gif hareketli resmindeki gibi butona basılınca led yanıp sönecek butona basılmadığında ise led yanmayacak şekilde kodlamayı göreceğiz. Bunun için iki yeni kavram öğreneceğiz birincisi butondan gelen sinyali okutma, ikincisi ise kıyaslama yapmak için if-else komut yapısı.




Kullandığımız buton "push buton" olarak bilinen sadece üzerine basıldığında elektrik akımını geçiren bir yapısı olan elektromekanik bir bileşendir. Anahtardan farkı üzerine basılı tutulduğu sürece akım geçirir. Anahtar ise bir kere basınca tekrar basana kadar elektriği geçirir. Aşağıdaki resimde görüldüğü üzere bu buton 4 uçludur ve 2 taraflıdır. bir taraftan giren akım butona basılınca simetri olan tarafından çıkar. Biz bu butonun sadece tek tarafını kullanacağız.


Aşağıdaki resimde buton ve led ile oluşturulmuş devreyi görüyorsunuz. Çalışma tahtasına Arduino'dan GND ve 5V aktarmış olduk. Kırmızı hat 5V mavi hat ise GND'dir. Butona 5V'dan elektrik akımı verilir, butonun diğer ucu ise öylesine seçtiğimiz 12 numaralı dijital pine gider. Burada dikkat edilmesi gereken bir nokta var. Butondan dijital pine giden uçta bir de direnç var. O direnç elektrik dijital pini giriş olarak kullanacağımız için sinyalin sağlıklı çalışmasını sağlayan bir dirençtir. Bu bir elektronik bilgisidir. Bu devrede butona bastığımızda kırmızı hattan gelen elektrik buton üzerinden 12. pine gidecek. 12. pinde kod ile okutulacak bu sinyale göre butona basıldığı sürece 7. pine bağlanan led belirli aralıkla yanıp sönecek. Butona basılmadığında ise led hiç ışık vermeyecek.
Şimdi kodlamaya geçelim!
Butondan gelen sinyal dijital olduğu için 1 ya da 0 değeri alır yani ya elektrik var(5V) ya da elektrik yok (0V=GND) olacak. Butondan gelen sinyal 12. pine giriş yapacağı için 12. pin giriş olarak ayarlanmalı. 12. pine gelen sinyali okumak için digitalRead komutu kullanılır.
Daha önce digitalWrite komutu ile led üzerine HIGH ya da LOW ile sinayl gönderdik yani yazdık yani "write" işlemi yaptık. Şimdi ise okuma işlemi yapacağımız için kod digitalRead oldu.

Kodlarda setup kısmında 12. pini INPUT ile giriş olarak ayarladık. 7. pine led bağlanacağı için o daha önce öğrencdiğimiz gibi OUTPUT modunda ayarlandı.

Programın ana kısmında durum adında bir değişken var. Bu değişken butondan gelen sinyali alacak. Butondan gelen sinyal 1 ya da 0 sayıları olacağı için durum değişkeni başlangıçta int ile tanıttık. 

digitalRead(12) komutu ile 12. pine butondan gelen sinyali okuttuk.
if komut satırında durum==1 ise diye kıyaslama yaptık. Yani butona basılınca elektrik 12. pine geldiyse, süslü parantez içinde 7. pindeki ledi 150ms aralıklarla yakıp söndürme kodlarını kullandık.

else satırında ise if şartının tersi olan durumu yani durum==0 olduğunda lede hiç sinyal gitmesin istedik.

Bu kodlar ile devremiz ve programımız sağlıklı bir şekilde çalıştı bunu yukarıda hareketli resimde görebiliyoruz.

---------------Kod satırları----------------

int durum;
void setup() {
pinMode(7,OUTPUT);
pinMode(12,INPUT);
}

void loop() {
durum=digitalRead(12);
if (durum==1) 
{
digitalWrite(7,HIGH);
delay(150); 
digitalWrite(7,LOW);
delay(150); 
} //if parantez sonu
else
{
digitalWrite(7,LOW);
} //else parantez sonu
} //void loop parantez sonu

if-else komutunun kullanımı; 

if (şart)

istenilen kodlar yazılır. Tek satır kod olacaksa süslü parantezlere gerek yok
}
else
{
if şartındaki ters durumda istenilen kodlar yazılır. tek satır kodda süslü paranteze gerek yok
}

Hiç yorum yok:

Yorum Gönder