Arduino Programlama Dili: Temel Yapılar (Loop)
Arduino Programlama Dili: Temel Yapılar (Döngüler - Loop)
Merhaba Arduino severler! Bu yazımızda Arduino programlamanın temel taşlarından biri olan ve kodumuzun tekrar tekrar çalışmasını sağlayan döngüler (loop) konusuna değineceğiz. Arduino ile projeler geliştirirken sensörlerden veri okumak, LED'leri yakıp söndürmek veya motorları kontrol etmek gibi işlemleri sürekli olarak yapmamız gerekir. İşte bu noktada döngüler devreye girer ve işimizi oldukça kolaylaştırır.
Arduino'da Döngüler Neden Önemli?
Döngüler sayesinde:
- Kod tekrarından kurtuluruz. Aynı kod bloğunu defalarca yazmak yerine, döngü kullanarak tek seferde istediğimiz kadar tekrar edebiliriz.
- Programımızı daha okunaklı ve anlaşılır hale getiririz.
- Projemizin karmaşıklığını azaltırız.
- Gerçek zamanlı uygulamalar geliştirebiliriz (Örneğin, sürekli olarak sensör değerlerini okuyup tepki vermek).
Arduino'da Kullanılan Temel Döngüler
Arduino programlamada en sık kullanılan döngüler şunlardır:
void loop()
: Arduino programının ana döngüsüdür.setup()
fonksiyonu bir kez çalıştıktan sonra,loop()
fonksiyonu sonsuza kadar tekrar tekrar çalışır.for
Döngüsü: Belirli bir sayıda tekrar yapmak istediğimizde kullanırız.while
Döngüsü: Belirli bir koşul sağlandığı sürece tekrar eden bir döngüdür.do...while
Döngüsü:while
döngüsüne benzer ancak koşul döngünün sonunda kontrol edilir, bu nedenle döngü en az bir kere çalışır.
void loop()
Döngüsü
Arduino IDE'si ile yeni bir proje oluşturduğumuzda karşımıza çıkan temel yapıdır. Arduino kartımız enerji verildiği sürece bu döngü sürekli çalışmaya devam eder. Örneğin, bir LED'i yakıp söndürmek için kullanabiliriz:
void setup() {
// LED'in bağlı olduğu pini çıkış olarak tanımlıyoruz.
pinMode(13, OUTPUT);
}
void loop() {
// LED'i yak.
digitalWrite(13, HIGH);
delay(1000); // 1 saniye bekle.
// LED'i söndür.
digitalWrite(13, LOW);
delay(1000); // 1 saniye bekle.
}
Yukarıdaki kodda, LED'i 1 saniye yakıp 1 saniye söndürerek sürekli tekrarlayan bir yanıp sönme efekti oluşturuyoruz.
Devre Bağlantısı:
- LED anot (+) -> 220 Ohm direnç -> Arduino Dijital Pin 13
- LED katot (-) -> Arduino GND
for
Döngüsü
for
döngüsü, belirli bir sayıda tekrar yapmak istediğimizde idealdir. Üç bölümden oluşur:
- Başlangıç: Döngünün başlangıcında sadece bir kez çalıştırılan kısım. Genellikle bir sayaç değişkeni tanımlanır ve başlangıç değeri atanır.
- Koşul: Döngünün devam edip etmeyeceğini belirleyen koşul. Koşul doğru (true) olduğu sürece döngü çalışmaya devam eder.
- Artış/Azalış: Her döngü tekrarından sonra sayaç değişkeninin değerini günceller.
Örneğin, 1'den 10'a kadar olan sayıları seri monitöre yazdırmak için for
döngüsünü şu şekilde kullanabiliriz:
void setup() {
Serial.begin(9600); // Seri iletişimi başlatıyoruz.
}
void loop() {
for (int i = 1; i <= 10; i++) {
Serial.println(i);
delay(500); // 0.5 saniye bekle.
}
delay(5000); // 5 saniye bekle ve tekrar başla.
}
while
Döngüsü
while
döngüsü, belirli bir koşul sağlandığı sürece tekrar eden bir döngüdür. Koşul başlangıçta kontrol edilir. Koşul yanlış (false) ise döngü hiç çalışmaz.
Örneğin, bir butona basılana kadar beklemek için while
döngüsünü kullanabiliriz:
const int buttonPin = 2; // Butonun bağlı olduğu pin.
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP); // Dahili pull-up direnci kullanıyoruz.
}
void loop() {
while (digitalRead(buttonPin) == HIGH) {
// Butona basılana kadar bekle.
Serial.println("Butona basılmasını bekliyorum...");
delay(100);
}
Serial.println("Butona basıldı!");
delay(1000); // 1 saniye bekle ve tekrar başla.
}
Devre Bağlantısı:
- Buton bir bacağı -> Arduino Dijital Pin 2
- Buton diğer bacağı -> Arduino GND
Bu kodda, dahili pull-up direnci kullanıldığı için butona basılmadığında pin HIGH değerini alır. Butona basıldığında ise pin LOW değerini alır. while
döngüsü, buton HIGH olduğu sürece (yani basılmadığı sürece) çalışmaya devam eder.
do...while
Döngüsü
do...while
döngüsü, while
döngüsüne benzer ancak koşul döngünün sonunda kontrol edilir. Bu nedenle döngü en az bir kere çalışır.
int sayac = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
do {
Serial.println(sayac);
sayac++;
delay(500);
} while (sayac <= 5);
delay(5000); // 5 saniye bekle ve tekrar başla.
sayac = 0; // Sayacı sıfırla.
}
Bu örnekte, sayaç 0'dan başlar ve her döngüde ekrana yazdırılır ve 1 artırılır. Koşul döngünün sonunda kontrol edildiği için, sayaç değeri 0 olduğunda ekrana yazdırılır ve sonra sayaç değeri 1 olur. Döngü, sayaç 5'e eşit veya küçük olduğu sürece devam eder.
Sonuç
Bu yazımızda Arduino programlamanın temel döngü yapılarını inceledik. loop()
, for
, while
ve do...while
döngüleri, Arduino projelerinizde tekrar eden işlemleri kolayca gerçekleştirmek için güçlü araçlardır. Umarım bu bilgiler, Arduino yolculuğunuzda size yardımcı olur. Bir sonraki yazımızda görüşmek üzere!
Etiketler: Arduino, Programlama, Döngü, Loop, for, while, do-while, Arduino Dersleri, Arduino Temelleri
```
0 yorum: