Merhaba Webkolog takipçileri,
Bugünkü makalemde, Arduino projelerimize adeta bir beyin işlevi kazandıran, programımızın mantıksal kararlar almasını sağlayan koşullu ifadeleri ele alacağız. Bir önceki yazımda operatörlerden bahsetmiştim. İşte bu operatörlerle birlikte koşullu ifadeleri kullanarak sensörlerden gelen verilere göre farklı tepkiler verebilir, motorları kontrol edebilir veya ışıkları yakıp söndürebiliriz. Gelin, bu temel yapı taşlarını daha yakından inceleyelim.
if, if-else ve if-else-if Yapıları
if ifadesi, Arduino programlamanın en temel karar verme mekanizmasıdır. Belirlediğimiz bir koşulun doğru (true) veya yanlış (false) olmasına göre kodun hangi bölümünün çalışacağını belirler. Bu yapıları kullanarak kodumuzu çok daha dinamik hale getirebiliriz.
if () {}
En basit haliyle, if yapısı parantez içindeki koşul doğruysa süslü parantezler arasındaki kod bloğunu çalıştırır.
int sicaklik = 25;
if (sicaklik > 20) {
// Sıcaklık 20'den büyükse bu kod çalışır.
Serial.println("Sıcaklık 20 derecenin üzerinde.");
}
if () {} else {}
Eğer bir koşulun hem doğru hem de yanlış olduğu durumlar için farklı işlemler yapmak istiyorsak, if-else yapısını kullanırız. Koşul doğruysa if bloğu, yanlışsa else bloğu çalışır.
int potansiyometreDegeri = analogRead(A0);
if (potansiyometreDegeri > 512) {
digitalWrite(13, HIGH); // Potansiyometre yarıdan fazlaysa LED'i yak
} else {
digitalWrite(13, LOW); // Değilse LED'i söndür
}
if () {} else if () {} else {}
Birden fazla koşulu kontrol etmemiz gerektiğinde if-else if-else yapısı imdadımıza yetişir. Koşullar sırayla kontrol edilir ve ilk doğru olan koşulun bloğu çalıştırılır.
int isikSeviyesi = analogRead(A0);
if (isikSeviyesi > 800) {
Serial.println("Çok parlak.");
} else if (isikSeviyesi > 400) {
Serial.println("Orta parlaklıkta.");
} else {
Serial.println("Karanlık.");
}
switch-case Yapısı
Bazen bir değişkenin alabileceği farklı değerlere göre birden fazla durum kontrolü yapmamız gerekir. Bu gibi durumlarda uzun ve karmaşık if-else if zincirleri yerine switch-case yapısını kullanmak kodumuzu daha okunabilir ve düzenli hale getirir.
switch ifadesi, parantez içinde belirtilen değişkenin değerine göre uygun case bloğuna atlar. Her case bloğunun sonunda kullanılan break komutu, o bloğun çalışması bittiğinde switch yapısından çıkılmasını sağlar. Eğer hiçbir case eşleşmezse, isteğe bağlı olarak ekleyebileceğiniz default bloğu çalışır.
int butonDurumu = 1;
void setup() {
Serial.begin(9600);
}
void loop() {
switch (butonDurumu) {
case 1:
Serial.println("Buton 1'e basıldı.");
break;
case 2:
Serial.println("Buton 2'ye basıldı.");
break;
default:
Serial.println("Geçersiz buton.");
break;
}
// Her döngüde butonDurumu değişkenini değiştirdiğinizi varsayalım
// Örnek olarak burada butonu 2 yapalım
butonDurumu = 2;
delay(1000);
}
Aynı kod bloğunu birden fazla case için çalıştırmak isterseniz, break komutunu sadece en son bloğa yazmanız yeterlidir. Bu, kod tekrarını önler ve kodunuzu daha temiz hale getirir.
int haftaninGunu = 6;
switch (haftaninGunu) {
case 1:
case 2:
case 3:
case 4:
case 5:
Serial.println("Hafta içi.");
break;
case 6:
case 7:
Serial.println("Hafta sonu.");
break;
default:
Serial.println("Geçersiz gün.");
break;
}
Koşullu ifadeler, programlamanın temel mantık kapılarıdır. Onları doğru bir şekilde kullanarak projelerinizin sadece komutları takip etmek yerine, çevresindeki dünyaya tepki veren akıllı sistemler haline gelmesini sağlayabilirsiniz. Yeni projelerinize başlarken bu yapıları aklınızdan çıkarmayın!
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder