KARAR VERME KOMUTLARI: Döngüler belirli bir şarta bağlı olarak bir program bloğunu (yani küme parantezi içindeki komutları)defalarca çalıştıran yapılardır. Bazen bir kodun belli bir şartı sağlaması halinde bir kez çalıştırılması gerekebilir. Bu durumda döngüler yerine karar komutları tercih edilir. Günlük yaşamımızda eger bir seri üretim bandında çalışmıyorsak döngülerden çok kararları kullanırız. Mesela yarın sınav varsa ders çalışmaya karar veririz.(gülmeyin en azından 3-4 kişi karar verir ).Hava çok soğuksa üzerimize kalın bir şeyler giymeye karar veririz. Dışarda yağmur yağıyorsa mesela şemsiye yi yanımıza almaya karar verebiliriz. Programda kullanacağımız karar yapıları veya komutları da bunun gibidir. Arduino da en çok kullanılan karar komutları if,if -else, ve switch-case yapılarıdır. Bu komutları tek tek örneklerle anlatmaya çalışacağım. İf: İf ifadesi karar komutlarının temelidir dersek yanlış olmaz. İngilizcede eger anlamına gelir. Genel yapısı: İf(şart veya koşul) İşletilecek komutlar 1. 2. 3. Eğer şart veya koşul gerçekleşmezse küme parantezinin altındaki satırdan devam eder. Anlatıma yine akış şeması ile başlamak istiyorum. Çok basit bir uygulama düşünelim. Bir buton ve led bağladığımızı, butona basıldığında ledin yanmasını eğer basılmamış ise ledin sönmesini isteyelim. Bakın tanımlama sırasında eğer ifadesi kullandık. İşte bu programın yazılımında if kullanmak oldukça mantıklı. Yeri gelmişken söyleyeyim if ile yazılan bir kod while ile de yazılabilir. Yani bir komut sadece şurada kullanılır diye bir şey yok. Hangi komutun kullanılacağı tamamen programı yazan kişiye bağlıdır. Bu turşunun iyisi sirke ile mi olur yoksa limon lamı olur tartışmasına benzer. Şimdi gelelim akış şemasına. Önce buton bilgisini okutuyoruz. Sonra if koşulunda buton daki bilginin HIGH mı olduğunu sorgulatıyoruz. Butona basılmış ise buton 0 volt vardır(elbette 5 volt olacak şekilde de bağlayabiliriz).eger LOW varsa ledi yak diyoruz. Eğer butona basılmamış ise HIGH bilgisi vardır bu durumda da ledi söndür diyoruz. Şimdi bu basit devrenin yazılımını ve fritzing şemalarını paylaşalım.
İki nolu pin giriş yapılırken aynı zamanda Pullup direncide aktif ediliyor. Böylece butona seri 10 k lık direnç bağlamak zorunda kalmıyoruz. Ben 8 nolu pini çıkış yaptım. Ve ilk başta 8 nolu pini LOW,0 volt seviyesine çekiyoruz.loop fonksiyonunda if karar komutunu kullanıyoruz. Şartımız şu (2 nolu pini oku eğer LOW ise veya 0 Volt ise ) bir alttaki satırdaki komutu işlet. Eğer değilse bir sonraki komut satırını atlar onun altındakini işletir. Aslında if yazılınca işletilecek satır veya satırlar küme parantezi içinde belirtilir. Ancak komut tek satırsa küme parantezi kullanılmasa da olur.son satırda digitalwrite(8,0); ile if şartı gerçekleşmezse bu satır işletilir. İf için bir örnek yeter şimdi daha yaygın kullanım alanı olan if-else komutuna geçelim
İf-else komutu : Bir if ifadesinde şart sağlanırsa if şartının hemen altındaki satır işletilir. Eğer küme parantezi açılmış birden fazla satırdan oluşan bir komut dizisi varsa onlar çalıştırılır. Eğer şart sağlanmadığında özel bir komut veya komutlar dizisi çalıştırılacaksa bu durumda bu kısımda else komutu kullanılır. İf eğer anlamına gelirken else ise değilse anlamına gelir. İf ve else bir programda kullanılırsa, şu şartlar sağlanırsa şu komut veya komutları işle değilse yani şart sağlanmazsa şu komut veya komutları çalıştır. Else komutu bir üstündeki if komutu na bağlı olarak çalışır. İf(şart) komut; // tek satır komut else komut // yine tek satır eğer komut tek satır değilse birden fazla olacaksa mutlaka küme parantezi arasına alınır if (şart) Komutlar.. Else Komutlar.. Şimdi yukarıdaki devreyi sökmeden if else için örnek yapalım. Bu yazılımda butona basılıp basılmadığı bilgisini seri port ekranından okuyalım.
İf else komutunu pekiştirmek için bir örnek daha yapalım ne dersiniz.
Aslında programı anlatmaya gerek yok biliyorum ama yine de kısaca açıklayalım.2 nolu pini PULLUP direncini aktif ederek giriş olarak ayarlıyoruz. Bunun yanında 8 ve 9.pinleri çıkış yapıyoruz. Hangi ledin yandığını ekrandan görebilmek için seri iletişimi başlatıyoruz. Void loop () fonksiyonunda if satırında pin2 okutuluyor ve LOW seviyesinde olup olmadığını kontrol ediyoruz.koşul doğru olduğunda küme parantezi içerisindeki komutlar işletilir ve 8 nolu pin HIGH yapılır ve kırmızı led yanar.bu anda seri port ekranında kırmızı led yanıyor satırı oluşur. Butona basılmadıysa else ifadesi çalışır.9. pin HIGH yapılır.mavi led yanar ve seri port ekranında mavi led yanıyor yazısı oluşur. Sonuç olarak butona basılmıyorsa mavi led, butona basılıyorsa kırmızı led yanar. İf ve else komutları ile ilgili örneklere daha sonraki uygulamalarda bol bol yer vereceğiz. Bu nedenle anlatımı burada noktalayalım.