
If – Else Komutları ve Bağlaçlar:
If, İngilizce’den ‘Eğer’, Else ise ‘Değilse’ olarak çevrilebilir ve Arduino’da da aynı işi yaparlar. If fonksiyonu sadece parametre olarak girilen değer doğru ise çalışır. Her if fonksiyonundan sonra else fonksiyonunu eklemek zorunda değiliz ama else fonksiyonuun eklemek için if fonksiyonunu eklemek zorundayız.
Karşılaştırma Operatörleri:
Kodlarımızı yazarken if fonksiyonuna parametreler gireriz ve bu fonksiyon da bize girdiğimiz parametre sonucunda iş yapar. Bu parametreleri karşılaştırma operatörleri ile veririz.
‘==’ Operatörü: Bu operatör bize bir x değerinin y değerine eşit olup olmadığını sorgulamamızı sağlar. Eğer eşit ise 1 değilse 0 değerini döndürür.
NOT: ‘X = Y’ komutu X değerinin içine Y değerini atar. Yani içerisindeki değeri değiştirir fakat bu operatör değerlerinin aynı olup olmadığını karşılaştırır.
‘!=’ Operatörü: Bu operatör ise ‘==’ operatöründen farklı olarak X ve Y eşit değilse 1 eşit ise 0 değerini döndürür.
‘<’ Operatörü: Bu operatör bir X değeri Y değerinden küçük ise 1 büyük veya eşit ise 0 değerini döndürür.
‘>’ Operatörü: Bu operatör bir X değeri Y değerinden büyük ise 1 küçük veya eşit ise 0 değerini döndürür.
‘<=’ Operatörü: ‘<’ operatöründen farklı olarak X değeri Y değerine eşit olduğu durumda da 1 değerini döndürür. Bu fark dışında aynı işi görür.
‘>=’ Operatörü: ‘>’ operatöründen farklı olarak X değeri Y değerine eşit olduğu durumda da 1 değerini döndürür. Bu fark dışında aynı işi görür.
Mantıksal Bağlaçlar:
Türkçe’de olduğu gibi Arduino’da da bağlaçlar vardır. Bu bağlaçlar çoğunlukla if ile beraber kullanılır. 2 adettir.
And (Ve) bağlacı koşulların ikisi de doğru ise 1 değerini verir. Or (Veya) bağlacı ise koşullardan herhangi biri doğru ise 1 değerini verir. And bağlacı ‘&&’ işareti ile veya ‘and’ şeklinde gösterilir. Or bağlacı da ‘||’ işareti ile veya ‘or’ şeklinde gösterilir.
Bağlantı Şeması:
Şemada da görülebileceği gibi projemize bir adet buton ekledik. Bu butona basınca LED’i yakacak bir kod yazacağız. Fakat bundan önce bağlantıyı biraz daha detaylı inceleyelim.
Öncelikle butonlar yönsüz elemenlardır. Üzerindeki düğmeye bastığımızda devreyi kapatır ve üzerinden akım geçmesine izin verir basmadığımızda ise akım geçirmez. Fakat butona basılmıyorken devremiz açık bir devre haline geleceğinden dijital pinimizden butona bağlı pindeki voltajı ölçmeye çalıştığımızda garip değerler alabiliriz. Bunu önlemek için butonun okuma yapacağımız kısmına bir adet 10.000 ohmluk (10K) direnç bağladık ve direncin diğer ucunu da toprak hattına bağladık. Bu sayede butona basılmıyorken okuma yaptığmızda sadece sıfır değerini göreceğiz.
Bu direncin bağlantı şekli ise PULL-DOWN’dur. Bu direnç ile butona basıldığında 1 sinyali, basılmadığında ise 0 sinyali alabiliriz. PULL-UP bağlantı şeklinde ise butona basılmazken gelen sinyal 1, basıldığında ise 0’dır. Bu bağlantıyı yapmak için ise sadece direncin toprağa giden ucuna 5V, butonun soldaki ucunu ise toprak hattına bağlamamız yeterlidir.
Kodlar:
İlk iki satırda bağlantımıza göre led değişkenine 10, buton değişkenine ise 9 değerini verdik. Üçüncü satırda ise buton pininden okuduğumuz değeri barındıracak değişkeni tanımladık fakat içerisine değer girmedik. Değeri loop fonksiyonu içerisinde gireceğiz.
Setup fonksiyonunda ise led pinini (10) çıkış olarak, buton pinini (9) ise giriş olarak ayarladık. Bunun sebebi bizim Arduino’nun 9. Pininden bir voltaj okuması yapmak istememizdir. Arduino’nun herhangi bir pininden okuma yapılmak istendiğinde INPUT, yazma yapılmak istendiğinde ise OUTPUT olarak yazılması gerektiğini unutmalıyız.
buton_deger = digitalRead(buton);
Bu komut ile buton_deger değişkenine butona bağlı olan pinden gelen değeri yazdık. Buton, dijital bir pine bağlı olduğundan dolayı gelecek değer sadece 1 veya 0 olabilir.
digitalRead(pin_numarası);
Bu fonksiyon bize argüman olarak girilen pin numarasındaki voltaj değerini okuyup değeri dijital olarak döndürür.
if (buton_deger == 1){ }
If komutunun karşıkaştırma sonucu eğer 1 ise işlem yaptığını biliyoruz. Daha önceden buton_deger değişkeninin içerisine buton pininden okuduğumuz değeri atamıştık. If komutuna da argüman olarak buton_deger == 1 (yani buton_deger değişkeni içerisinde 1 değeri var mı?) argümanını girdik. Eğer butona basılırsa buton_deger değişkenine 1 değeri atanacak ve dolayısıyla if komutu içerisindeki komutlar çalışacak.
else { }
Bu komut ise if komutunun argümanı doğrulanmamışsa çalışacak olan komutları içerir ve parametre almasına gerek yoktur.
Bu kodları Arduino’ya yükledikten sonra butona bastığınızda LED’in yandığını görebilirsiniz.
TÜM KODLAR:
int led = 10; int buton = 9; int buton_durum; void setup() { pinMode(led, OUTPUT); pinMode(buton, INPUT); } void loop() { buton_durum = digitalRead(buton); if (buton_durum == 1){ digitalWrite(led, HIGH); } else{ digitalWrite(led, LOW); } }
Yorum Satırları:
Eğer bu öğrendiğimiz bilgileri daha sonra koda baktığımızda hatırlamak istersek yorum satırlarını kullanabiliriz. Yorum satırları Arduino’nun kodları derlerken yok saydığı satırlardır. Bu satırlar programcının kodlarını daha sonradan incelemek istediğinde kafa karışıklığını önlemek için veya yazılan bir koda açıklama eklemek içindir. İki çeşit yorum satırı vardır:
Tek Satırlı Yorum Yapma:
Sadece tek bir satırı yorum satırı haline getirmek istersek ‘//’ ifadesini kullanırız. Bu işaretler sonrasına koyduğumuz bütün yazılar Arduino IDE’si tarafından yok sayılacaktır.
Çok Satırlı Yorum Yapma:
Birden fazla satırı yorum haline getirmek istersek de yorum satırının başlangıcına ‘/*’, sonuna ise ‘*/’ ifadelerini eklemeliyiz. Bu sayede bu iki işaret arasındaki tüm yazılar ve kodlar Arduino IDE’si tarafından yok sayılacaktır.