Arduino-IF Komutu

IF Komutu Ve Kullanımı

Arduino ile diğer programlama dillerinde kullanılan birçok sorgulama işlemleri yapılabilmektedir. Bu komutların başında if komutu gelmektedir. IF, eğer anlamına gelmektedir ve herhangi bir sorgulama işlemini kontrol ederek sonucunun doğru ya da yanlış olmasına göre farklı komutu/komutları çalıştırmaktadır. Örneğin, bir butona basıldı ise ledi yak, basılmadı ise ledi söndür… aşağıda ise komutun nasıl yazıldığı ve kullanımı ile ilgili örnek görülmektedir.

Komutun yazılışı:

if(koşul)

Doğru ise çalıştırılacak komut satırı;

Yanlış ise çalıştırılacak komut satırı;

Örnek:

İnt a;

a=5;

if(a == 5)

digitalWrite(13,HIGH);

digitalWrite(13,LOW);

Açıklama:          

  • Yukarıda öncelikle int türünde a adında değişken tanımlanmaktadır.
  • Tanımlanan değişkene 5 sayısı atanıyor.
  • Daha sonra ise if komutu ile a değişkeninin içinde ki sayının 5’e eşit olup olmadığı kontrol ediliyor.
  • “==” operatörü “eşit midir?” anlamına gelmektedir.
  • Eğer a değişkeninin içindeki sayı 5’e eşit ise if komutunun hemen altında bulunan satır işletilecektir.
  • Eğer a değişkeninin içerisindeki sayı 5’e eşit değilse alt satırı atlayarak bir sonraki satırı işletecektir.
  • Yanı sonuç olarak koşulumuz doğru ise 13. Pine bağlı olan led yanacaktır. Yanlış ise led sönecektir.
  • Burada dikkat edilmesi gereken ayrı bir nokta ise if koşulundan sonra “;” kullanılmamalıdır.

 

IF-ELSE Komutu:

 

IF-ELSE komutunun kullanımı önceki konuda anlatılan if yapısından farklı değildir. Sadece bize daha fazla komut satırı yazmamıza olanak sağlamaktadır. If koşulu yazıldıktan sonra koşul doğru ise if satırından, else satırına kadar olan komutlar işletilecektir. Yanlış ise else komut satırından sonra yazılan satır işletilir. Eğer else komut satırından sonra birden fazla komut satırı kullanılacak ise süslü parantez kullanılmalıdır”{……..}”. Konu bir örnekle daha net anlaşılacaktır.

Örnek Program:

 

#define buton 2

#define led      3

Setup(){

pinMode(buton, INPUT);

pinMode(led, OUTPUT);

}

Loop(){

 if(digitalRead(buton, HIGH)){

digitalWrite(led,HIGH);

delay(1000);

digitalWrite(led,LOW);

delay(1000);

digitalWrite(led,HIGH);

delay(1000);

digitalWrite(led,LOW);

delay(1000);

}

else {

digitalWrite(led, LOW);

 }

}

Açıklama:

  • Yukarıda #define satırı ile 2. Pine buton, 3. Pine ise led adı veriliyor.
  • Daha sonra setup bloğu içerisinde pinMode komutu ile buton bağlanan pin giriş, led bağlanan pin çıkış olarak tanımlanıyor.
  • if komutuna geldiğimizde koşul olarak digitalRead komutu ile butona basılıp basılmadığı kontrol edilmektedir. Basıldı ise if(koşul), parantezleri arasında bulunan koşul HIGH yani bir olacaktır. Bu durum “doğru” anlamına gelmektedir.
  • Butona basıldığında devrede bağlı olan led, birer saniye aralıklarla iki kez yanıp sönecektir.
  • Butona basılmadığında koşul “sıfır” yani “yanlış” olacağı için led, LOW olacaktır.
  • IF-ELSE komutlarından ikisi içinde “;” kullanılmamaktadır. Yalnızca arada kullanılan komut satırları için “;” kullanılmaktadır.
  • Sonuç olarak if ile else satırları arasında, koşulun doğru olduğu durumda çalıştırılacak komutlar işletilir. Else satırından sonra koşulun yanlış olması durumunda çalıştırılması istenen komutlar işletilir.

IF-ELSE IF Komutu:

 

Bu komutun diğer kullanım formatlarından farkı, birinci koşul sağlamadığı durumda ikinci bir koşulu sorgulatmamıza imkan verir.

Kullanımı:

 if(koşul 1)

Koşul 1 doğru ise işletilecek komut/komutlar;

else if(koşul 2)

Koşul 2 doğru ise işletilecek komut/komutlar;

else

Koşul 1 ve Koşul 2 doğru değil ise işletilecek komut/komutlar;

 

 

Arduino-IF Komutu” için 2 yorum

  • 30/12/2017 tarihinde, saat 16:57
    Permalink

    İyi günler,

    Akvaryumum için basit bir su tamamlama projesi yapıyorum pek bilgi sahibide değilim. kullandığım kod :

    const int sensor=0;
    int seviye;

    void setup(){

    Serial.begin(9600);
    pinMode(sensor,INPUT);
    pinMode(6,OUTPUT);
    pinMode(4,OUTPUT);
    }
    void loop(){
    seviye=analogRead(sensor);
    Serial.println(seviye);
    delay(220);
    digitalWrite(4,HIGH);

    if(seviye >100)
    digitalWrite(6,HIGH); //röleye güç verildi

    else
    digitalWrite(6,LOW); //röle kapatıldı

    }

    bu kod ile gayet güzel çalışıyor ancak sorunum 4 numaralı pine bağlı sensör akvaryuma devamlı olarak 5v elektrik veriyor..Akvaryum canlılarına zarar vermesinden korkuyorum.
    ben ise bu sensörün 12 saatte bir 10 saniye ölçüm yapıp ona göre su eksik ise doldurmasını sonrada kapanıp 12 saat sonra tekrar ölçüm yapıp bu şekilde devam etmesini istiyorum.
    void loop alanındaki delay süresini artırınca ölçümü 12 saatte yapıyor ama röle de 12 saat açık kalıp akvaryuma 12 saat su basıyor. bana yardımcı olabilirmisiniz ?

    Yanıtla
    • 31/12/2017 tarihinde, saat 00:58
      Permalink

      4. pine bağlı olan çıkışın sürekli 5V vermesi gayet normal çünkü;
      digitalWrite(4,HIGH);
      komutu bu şekilde herhangi bir şarta bağlı olmaksızın kullanmışsınız.
      12 saatte bir ölçüm yapması için saat modülü kullanmanız gerekir.
      delay ile yaparsanız (ki 12 saat bekleme yapmaz sanırım) delay süresi
      zarfında bekleme yaptırmış olursunuz bu da diğer komutların işlemesini de
      bekletecektir. dolayısıyla kontrol etmek istediğini işlemleri yapamazsınız.

      Yanıtla

Bir Cevap Yazın

%d blogcu bunu beğendi: