Arduino

Arduino ile Döngülerle Tekrarlı İşlemler

Aykut AKMAN 8 ay önce Yorumlar (0) 4 Dakika Okuma
Arduino ile Döngülerle Tekrarlı İşlemler
E-Posta : 817 0

Arduino projelerinde döngüler, bir işlemi belirli bir süre boyunca veya belirli koşullar sağlandıkça tekrar etmek için kullanılır. Döngüler sayesinde kodu tekrar tekrar yazmak yerine belirli bir kod bloğunu tek bir yapı içinde çalıştırabilirsiniz. Arduino'da kullanılan temel döngüler: for, while, ve do-while döngüleridir.

Döngü Türleri ve Kullanımları

Döngü TürüAçıklamaÖrnek Kullanım
forBelirli bir sayıda döngü çalıştırmak için kullanılır.LED'leri sırayla yakmak.
whileBir koşul doğru olduğu sürece döngüyü çalıştırır.Bir butona basılı tutuldukça LED yakmak.
do-whileKoşul kontrol edilmeden önce döngü içindeki kodu en az bir kez çalıştırır.Kullanıcıdan en az bir giriş almak ve doğru değeri sağlayana kadar giriş istemek.

1. for Döngüsü

for döngüsü, genellikle belirli bir sayıda işlem yapmak için kullanılır.

Örnek 1: LED'leri Sırayla Yakmak

int ledPins[] = {2, 3, 4, 5, 6}; // LED pinleri

void setup() {
    for (int i = 0; i < 5; i++) {
        pinMode(ledPins[i], OUTPUT);
    }
}

void loop() {
    for (int i = 0; i < 5; i++) {
        digitalWrite(ledPins[i], HIGH); // LED'i yak
        delay(500);
        digitalWrite(ledPins[i], LOW);  // LED'i söndür
    }
}

Örnek 2: Seri Monitörde Sayı Yazdırma

void setup() {
    Serial.begin(9600);
}

void loop() {
    for (int i = 1; i <= 10; i++) {
        Serial.println(i); // 1'den 10'a kadar sayıları yazdır
        delay(500);
    }
}

2. while Döngüsü

while döngüsü, koşul sağlandığı sürece kod bloğunu tekrar eder.

Örnek: Butona Basıldıkça LED Yakma

int buttonPin = 7;
int ledPin = 13;

void setup() {
    pinMode(buttonPin, INPUT);
    pinMode(ledPin, OUTPUT);
}

void loop() {
    while (digitalRead(buttonPin) == HIGH) {
        digitalWrite(ledPin, HIGH); // LED'i yak
    }
    digitalWrite(ledPin, LOW); // Buton bırakıldığında LED'i söndür
}

3. do-while Döngüsü

do-while döngüsü, en az bir kez çalışır, ardından koşulu kontrol eder.

Örnek: Seri Monitörde Kullanıcı Girişi

void setup() {
    Serial.begin(9600);
}

void loop() {
    int input;
    do {
        Serial.println("Bir sayı giriniz (1-10): ");
        while (Serial.available() == 0); // Kullanıcı girişini bekler
        input = Serial.parseInt();
    } while (input < 1 || input > 10);

    Serial.print("Girdiğiniz sayı: ");
    Serial.println(input);
    delay(2000);
}

Döngülerde Kullanılan Özel Komutlar

KomutAçıklamaÖrnek Kullanım
breakDöngüyü erken sonlandırır.Koşul sağlandığında döngüyü sonlandırma.
continueDöngünün o iterasyonunu atlar, bir sonraki iterasyona geçer.Belirli bir değeri geçici olarak atlama.

break Kullanımı Örnek

void setup() {
    Serial.begin(9600);
}

void loop() {
    for (int i = 0; i < 10; i++) {
        if (i == 5) {
            break; // Döngüyü 5'te durdur
        }
        Serial.println(i);
    }
    delay(2000);
}

continue Kullanımı Örnek

void setup() {
    Serial.begin(9600);
}

void loop() {
    for (int i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            continue; // Çift sayıları atla
        }
        Serial.println(i);
    }
    delay(2000);
}

Döngülerle Çalışmanın Püf Noktaları

  • Döngüleri gereksiz yere uzun çalıştırmayın; bu, programın yavaşlamasına neden olabilir.
  • Sonsuz döngü oluştururken dikkatli olun, çıkış koşulunu mutlaka belirleyin.
  • Birden fazla döngüyü iç içe kullanırken kodun karmaşıklığını artırmamaya özen gösterin.

Bu konu, Arduino projelerinde döngü kullanımı konusunda temel bilgileri ve uygulamalı örnekleri içerir. Döngüler, projelerinizi daha etkili ve düzenli hale getirmek için vazgeçilmez araçlardır.

Sıkça Sorulan Sorular

Arduino’da döngü, belirli bir işlemi tekrar tekrar gerçekleştirmek için kullanılan bir programlama yapısıdır. Örneğin, LED’leri sırayla yakmak veya sensör verilerini sürekli okumak için döngüler kullanılır.

for döngüsü, belirli bir sayıda işlem yapmak için kullanılır. Üç parametre içerir: başlangıç değeri, bitiş koşulu ve her iterasyondan sonra yapılacak işlem.

for (int i = 0; i < 5; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(500);
    digitalWrite(ledPins[i], LOW);
}

while döngüsü, bir koşul doğru olduğu sürece kod bloğunu tekrar eder. Örneğin, bir butona basıldıkça LED yanabilir.
Örnek:

while (digitalRead(buttonPin) == HIGH) {
    digitalWrite(ledPin, HIGH);
}

do-while döngüsü, kod bloğunu en az bir kez çalıştırır ve sonra koşulu kontrol eder. while döngüsü ise önce koşulu kontrol eder, sonra kod bloğunu çalıştırır.
Örnek do-while:

int i = 0;
do {
    Serial.println(i);
    i++;
} while (i < 5);

  • Sonsuz döngülerden kaçının veya çıkış koşulunu doğru belirleyin.
  • Döngülerde işlem süresine dikkat edin; uzun süreli döngüler programın tepkisiz kalmasına neden olabilir.
  • Gerekmediği sürece iç içe çok fazla döngü kullanmayın.
  • break komutu, döngüyü erken sonlandırmak için kullanılır. Koşul sağlandığında döngüden çıkar.
    Örnek:

    for (int i = 0; i < 10; i++) {
        if (i == 5) break; // Döngüyü 5'te sonlandırır
        Serial.println(i);
    }

    continue komutu, döngünün o iterasyonunu atlar ve bir sonraki iterasyona geçer.
    Örnek:

    for (int i = 0; i < 10; i++) {
        if (i % 2 == 0) continue; // Çift sayıları atlar
        Serial.println(i);
    }

    Sonsuz döngü oluşturmak için while (true) veya for(;;) yapıları kullanılır. Ancak çıkış koşulu yoksa dikkatli kullanılmalıdır.
    Örnek:

    while (true) {
        Serial.println("Bu bir sonsuz döngü.");
        delay(1000);
    }

    Döngü kullanmadan, loop() fonksiyonu içinde işlemleri doğrudan tekrarlayarak LED’i yanıp söndürebilirsiniz.
    Örnek:

    void loop() {
        digitalWrite(ledPin, HIGH);
        delay(1000);
        digitalWrite(ledPin, LOW);
        delay(1000);
    }

    Bir for döngüsü kullanarak PWM sinyalleriyle LED’in parlaklığını artırıp azaltabilirsiniz.
    Örnek:

    void loop() {
        for (int i = 0; i <= 255; i++) {
            analogWrite(ledPin, i);
            delay(10);
        }
        for (int i = 255; i >= 0; i--) {
            analogWrite(ledPin, i);
            delay(10);
        }
    }

    İç içe döngüler, bir döngünün içinde başka bir döngü kullanmaktır. Genelde matris LED kontrolü gibi işlemlerde tercih edilir.
    Örnek:

    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            Serial.print("i: ");
            Serial.print(i);
            Serial.print(", j: ");
            Serial.println(j);
        }
    }

    Trafik lambası kontrolü için while veya for döngüsü kullanılabilir. for döngüsü belirli bir sırayı tekrar etmek için idealdir.
    Örnek:

    void loop() {
        for (int i = 0; i < 3; i++) {
            // Kırmızı LED
            digitalWrite(redLed, HIGH);
            delay(1000);
            digitalWrite(redLed, LOW);
        }
    }
    Aykut AKMAN

    Aykut AKMAN

    Bilişim Öğretmeni

    Bu Gönderiye Yorum Yapılmamış

    Yorum Yap

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlendi.

    Diğer Yazılar