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 |
---|---|---|
for | Belirli bir sayıda döngü çalıştırmak için kullanılır. | LED'leri sırayla yakmak. |
while | Bir koşul doğru olduğu sürece döngüyü çalıştırır. | Bir butona basılı tutuldukça LED yakmak. |
do-while | Koş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
Komut | Açıklama | Örnek Kullanım |
---|---|---|
break | Döngüyü erken sonlandırır. | Koşul sağlandığında döngüyü sonlandırma. |
continue | Dö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);
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);
}
}
Bu Gönderiye Yorum Yapılmamış