🔁 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

🔁 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: