Arduino-IF Komutu
Your ads will be inserted here by
Easy Plugin for AdSense.
Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.
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)){
Your ads will be inserted here by
Easy Plugin for AdSense.
Please go to the plugin admin page to
Paste your ad code OR
Suppress this ad slot.
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;
M. Yalçın ASLAN
İ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 ?
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.