Arduino projelerinde koşullu ifadeler, belirli bir duruma göre karar vermek ve farklı işlemler gerçekleştirmek için kullanılır. if, else if ve else ifadeleri, sensörlerden gelen verilerle işlem yapmak, LED’leri kontrol etmek veya motor gibi cihazları çalıştırmak için temel programlama yapılarıdır.
Koşullu İfadelerin Temel Yapısı
| Koşullu Yapı | Açıklama | Örnek Kod |
|---|
| if | Belirtilen koşul doğruysa kod bloğu çalışır. | if (deger > 50) { digitalWrite(ledPin, HIGH); } |
| else if | İlk koşul yanlışsa ve belirtilen başka bir koşul doğruysa çalışır. | else if (deger > 30) { digitalWrite(ledPin, HIGH); } |
| else | Hiçbir koşul sağlanmazsa çalışır. | else { digitalWrite(ledPin, LOW); } |
Örneklerle Koşullu İfadeler
1. LED’i Sıcaklık Sensörüne Göre Kontrol Etme
| Durum | İşlem |
|---|
| Sıcaklık > 30°C | LED yanar. |
| Sıcaklık <= 30°C | LED söner. |
int ledPin = 13;
int sensorPin = A0; // Sıcaklık sensörü bağlı
int sensorValue = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(sensorPin); // Sensör verisi oku
int temperature = map(sensorValue, 0, 1023, -40, 125); // Sıcaklık hesapla
if (temperature > 30) {
digitalWrite(ledPin, HIGH); // LED'i yak
} else {
digitalWrite(ledPin, LOW); // LED'i söndür
}
Serial.print("Temperature: ");
Serial.println(temperature);
delay(1000); // 1 saniye bekle
}
2. Birden Fazla Koşulla Trafik Lambası Simülasyonu
| Durum | İşlem |
|---|
| Durum == 1 | Kırmızı LED yanar. |
| Durum == 2 | Sarı LED yanar. |
| Durum == 3 | Yeşil LED yanar. |
int redLed = 13;
int yellowLed = 12;
int greenLed = 11;
int state = 1;
void setup() {
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void loop() {
if (state == 1) {
digitalWrite(redLed, HIGH);
digitalWrite(yellowLed, LOW);
digitalWrite(greenLed, LOW);
} else if (state == 2) {
digitalWrite(redLed, LOW);
digitalWrite(yellowLed, HIGH);
digitalWrite(greenLed, LOW);
} else if (state == 3) {
digitalWrite(redLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(greenLed, HIGH);
}
state++;
if (state > 3) {
state = 1;
}
delay(1000);
}
3. Hareket Sensörüne Göre Alarm Sistemi
| Durum | İşlem |
|---|
| Hareket algılandı | Buzzer çalar ve LED yanar. |
| Hareket algılanmadı | Buzzer kapanır ve LED söner. |
int motionPin = 2;
int buzzer = 3;
int led = 13;
void setup() {
pinMode(motionPin, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
int motion = digitalRead(motionPin);
if (motion == HIGH) {
digitalWrite(buzzer, HIGH); // Buzzer çalsın
digitalWrite(led, HIGH); // LED yansın
Serial.println("Hareket algılandı!");
} else {
digitalWrite(buzzer, LOW); // Buzzer kapansın
digitalWrite(led, LOW); // LED sönsün
Serial.println("Hareket yok.");
}
delay(500);
}
4. Kullanıcıdan Gelen Girişe Göre LED Kontrolü
| Kullanıcı Girişi | İşlem |
|---|
| 1 | Kırmızı LED yanar. |
| 2 | Sarı LED yanar. |
| 3 | Yeşil LED yanar. |
int redLed = 13;
int yellowLed = 12;
int greenLed = 11;
void setup() {
pinMode(redLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(greenLed, OUTPUT);
Serial.begin(9600);
Serial.println("1: Kırmızı, 2: Sarı, 3: Yeşil LED yak.");
}
void loop() {
if (Serial.available()) {
char input = Serial.read();
if (input == '1') {
digitalWrite(redLed, HIGH);
digitalWrite(yellowLed, LOW);
digitalWrite(greenLed, LOW);
} else if (input == '2') {
digitalWrite(redLed, LOW);
digitalWrite(yellowLed, HIGH);
digitalWrite(greenLed, LOW);
} else if (input == '3') {
digitalWrite(redLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(greenLed, HIGH);
}
}
}
Koşullu İfadelerle Çalışmanın Püf Noktaları
Doğru Karşılaştırma Operatörlerini Kullanın
== → Eşit mi?!= → Eşit değil mi?> → Büyük mü?< → Küçük mü?
else if Kullanımı
- Birden fazla koşulu sıralamak için kullanışlıdır. Ancak gereksiz yere kullanılmamalıdır.
Mantıksal Operatörlerle Koşulları Birleştirin
&&: Tüm koşullar doğruysa çalışır.||: Koşullardan biri doğruysa çalışır.
Optimize Kod Yazımı
- Fazla iç içe
if kullanımlarından kaçının. Kod okunabilirliğini düşürür.
Koşullu ifadeler, Arduino'da karar verme işlemlerinin temelidir. Sensörlerden gelen verilerle hareket algılama, trafik lambası kontrolü veya kullanıcı girdilerine göre işlem yapma gibi çok sayıda senaryoda kullanılabilir.
Bu Gönderiye Yorum Yapılmamış