🔁 Döngüler ve Koşullu Yapılar ile Akıllı Kararlar: Arduino'da Programlamanın Temelleri
🔁 Döngüler ve Koşullu Yapılar ile Akıllı Kararlar: Arduino'da Programlamanın Temelleri
Merhaba Arduino severler!
Bu yazımızda, Arduino projelerinizin kalbi olan döngüler ve koşullu yapılar konusuna derinlemesine dalacağız. Bu iki kavram, Arduino'nuzun çevresindeki dünyayı algılayıp, buna göre akıllı kararlar vermesini sağlamanın anahtarıdır. Basit bir LED'i yakıp söndürmekten, karmaşık robot kontrol sistemlerine kadar her şey bu temel üzerine kuruludur. Hazırsanız, Arduino dünyasında akıllı kararlar vermeye başlayalım!
Döngüler: İşleri Tekrar Tekrar Yapmak
Döngüler, bir kod bloğunu belirli bir sayıda veya belirli bir koşul sağlanana kadar tekrar tekrar çalıştırmanızı sağlar. Arduino'da en sık kullanılan döngüler for
ve while
döngüleridir. Şimdi bunları yakından inceleyelim.
for
Döngüsü: Kontrollü Tekrarlar
for
döngüsü, belirli bir sayıda tekrar gerektiren işler için idealdir. Genellikle bir değişkeni başlatır, bir koşul belirler ve her döngü adımında bu değişkeni güncelleriz. Örneğin, bir LED'i 5 kez yakıp söndürmek için for
döngüsünü şu şekilde kullanabiliriz:
int ledPin = 13; // LED'in bağlı olduğu pin
void setup() {
pinMode(ledPin, OUTPUT); // LED pinini çıkış olarak ayarla
}
void loop() {
for (int i = 0; i < 5; i++) { // 5 kez dönecek bir döngü
digitalWrite(ledPin, HIGH); // LED'i yak
delay(500); // Yarım saniye bekle
digitalWrite(ledPin, LOW); // LED'i söndür
delay(500); // Yarım saniye bekle
}
delay(2000); // Döngü bittikten sonra 2 saniye bekle
}
Bu kodda, for
döngüsü i
değişkenini 0'dan başlatır, i < 5
koşulu sağlandığı sürece döngüyü devam ettirir ve her döngü adımında i
'yi 1 artırır. Böylece LED 5 kez yanıp söner.
while
Döngüsü: Koşul Sağlandığı Sürece
while
döngüsü, belirli bir koşul doğru olduğu sürece bir kod bloğunu çalıştırmaya devam eder. Bu, bir sensörden gelen veriye bağlı olarak bir işlemi tekrarlamak gibi durumlarda çok kullanışlıdır. Örneğin, bir buton basılı tutulduğu sürece bir LED'i yakmak için while
döngüsünü kullanabiliriz:
int buttonPin = 2; // Butonun bağlı olduğu pin
int ledPin = 13; // LED'in bağlı olduğu pin
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Buton pinini giriş olarak ayarla (dahili pull-up direnci ile)
pinMode(ledPin, OUTPUT); // LED pinini çıkış olarak ayarla
}
void loop() {
while (digitalRead(buttonPin) == LOW) { // Buton basılı olduğu sürece
digitalWrite(ledPin, HIGH); // LED'i yak
}
digitalWrite(ledPin, LOW); // Buton bırakıldığında LED'i söndür
}
Bağlantılar:
- Butonun bir bacağı -> Arduino pin 2
- Butonun diğer bacağı -> Arduino GND
- LED'in anot (+) bacağı -> Arduino pin 13 (220 ohm direnç üzerinden)
- LED'in katot (-) bacağı -> Arduino GND
Bu kodda, while
döngüsü digitalRead(buttonPin) == LOW
koşulu doğru olduğu sürece (yani buton basılı olduğu sürece) LED'i yakmaya devam eder. Buton bırakıldığında koşul sağlanmaz ve döngü sona erer, LED söner.
Koşullu Yapılar: Karar Verme Zamanı
Koşullu yapılar, programınızın belirli koşullara göre farklı eylemler gerçekleştirmesini sağlar. Arduino'da en yaygın kullanılan koşullu yapılar if
, else if
ve else
ifadeleridir.
if
İfadesi: Eğer...
if
ifadesi, belirli bir koşul doğruysa bir kod bloğunu çalıştırır. Örneğin, bir sensörden gelen değer belirli bir eşiği aştığında bir alarmı tetiklemek için if
ifadesini kullanabiliriz:
int sensorPin = A0; // Sensörün bağlı olduğu analog pin
int alarmPin = 8; // Alarmın bağlı olduğu dijital pin
int threshold = 500; // Eşik değeri
void setup() {
pinMode(alarmPin, OUTPUT); // Alarm pinini çıkış olarak ayarla
}
void loop() {
int sensorValue = analogRead(sensorPin); // Sensörden değeri oku
if (sensorValue > threshold) { // Eğer sensör değeri eşiği aşarsa
digitalWrite(alarmPin, HIGH); // Alarmı tetikle
} else {
digitalWrite(alarmPin, LOW); // Alarmı kapat
}
delay(100); // Kısa bir süre bekle
}
Bu kodda, if
ifadesi sensorValue > threshold
koşulunu kontrol eder. Eğer sensörden okunan değer eşik değerini aşarsa, digitalWrite(alarmPin, HIGH)
komutuyla alarm tetiklenir. Aksi takdirde, alarm kapatılır.
else if
ve else
İfadeleri: Birden Fazla Koşul
else if
ve else
ifadeleri, birden fazla koşulu kontrol etmek ve farklı koşullara göre farklı eylemler gerçekleştirmek için kullanılır. Örneğin, bir sıcaklık sensöründen gelen değere göre farklı LED'leri yakmak için bu ifadeleri kullanabiliriz:
int tempPin = A0; // Sıcaklık sensörünün bağlı olduğu analog pin
int redLedPin = 11; // Kırmızı LED'in bağlı olduğu dijital pin
int greenLedPin = 12; // Yeşil LED'in bağlı olduğu dijital pin
int blueLedPin = 13; // Mavi LED'in bağlı olduğu dijital pin
void setup() {
pinMode(redLedPin, OUTPUT); // Kırmızı LED pinini çıkış olarak ayarla
pinMode(greenLedPin, OUTPUT); // Yeşil LED pinini çıkış olarak ayarla
pinMode(blueLedPin, OUTPUT); // Mavi LED pinini çıkış olarak ayarla
}
void loop() {
int tempValue = analogRead(tempPin); // Sıcaklık sensöründen değeri oku
float temperature = map(tempValue, 20, 358, -40, 125); // Değeri sıcaklığa dönüştür
if (temperature < 10) { // Eğer sıcaklık 10 dereceden düşükse
digitalWrite(blueLedPin, HIGH); // Mavi LED'i yak
digitalWrite(greenLedPin, LOW);
digitalWrite(redLedPin, LOW);
} else if (temperature < 25) { // Eğer sıcaklık 10 ile 25 derece arasındaysa
digitalWrite(greenLedPin, HIGH); // Yeşil LED'i yak
digitalWrite(blueLedPin, LOW);
digitalWrite(redLedPin, LOW);
} else { // Eğer sıcaklık 25 dereceden yüksekse
digitalWrite(redLedPin, HIGH); // Kırmızı LED'i yak
digitalWrite(blueLedPin, LOW);
digitalWrite(greenLedPin, LOW);
}
delay(100); // Kısa bir süre bekle
}
Bu kodda, sıcaklık değerine göre farklı LED'ler yakılır. if
, else if
ve else
ifadeleri, sıcaklığın farklı aralıklarda olup olmadığını kontrol eder ve buna göre ilgili LED'i yakar.
Bağlantılar:
- Sıcaklık Sensörü sinyal pini -> Arduino A0
- Sıcaklık Sensörü VCC pini -> Arduino 5V
- Sıcaklık Sensörü GND pini -> Arduino GND
- Kırmızı LED'in anot (+) bacağı -> Arduino pin 11 (220 ohm direnç üzerinden)
- Kırmızı LED'in katot (-) bacağı -> Arduino GND
- Yeşil LED'in anot (+) bacağı -> Arduino pin 12 (220 ohm direnç üzerinden)
- Yeşil LED'in katot (-) bacağı -> Arduino GND
- Mavi LED'in anot (+) bacağı -> Arduino pin 13 (220 ohm direnç üzerinden)
- Mavi LED'in katot (-) bacağı -> Arduino GND
Sonuç
Döngüler ve koşullu yapılar, Arduino programlamanın temel yapı taşlarıdır. Bu kavramları iyi anlamak, projelerinizde daha karmaşık ve akıllı davranışlar sergilemenizi sağlar. Bu yazıda öğrendiklerinizi kullanarak, Arduino projelerinizde yaratıcılığınızı konuşturabilir ve harika şeyler ortaya çıkarabilirsiniz!
Umarım bu yazı size faydalı olmuştur. Bir sonraki yazımızda görüşmek üzere!
Etiketler: Arduino, Döngüler, Koşullu Yapılar, Programlama, Elektronik, Proje, Eğitim, For Döngüsü, While Döngüsü, If Else, Başlangıç
```
0 yorum: