Döngüler; bir şart sağlandığı sürece belirli kod bloklarını tekrar tekrar çalıştıran yapılardır.
Arduino programlama dilinde 3 adet döngü vardır. Bunlar;
- For Döngüsü
- While Döngüsü
- Do-While Döngüsüdür.
Bu döngülerin söz dizimi farklı olsa da hepsi aynı işi görebilmektedir. Diğerlerinden farklı olarak yalnızca do-while döngüsü şartları kontrol etmeden bir defaya mahsus çalışmaktadır ve döngü sonunda şartları kontrol etmektedir. Şimdi dilerseniz bu döngülere teker teker bakalım.
1- For Döngüsü :
For döngüsünde döngü deyimi, değişken tanımlama şart ve artırma – azaltma operatörü aynı satırda tanımlanır. Döngü esnasında çalışacak kodlar ise döngü parantezi içerisine yazılır. Örnek olarak arduino 0, 1, 2, 3, 4 ve 5 nolu dijital pinine bağlı ledleri sırayla 1 saniye aralıklarla yakalım.
Kodumuz şu şekilde olacak;
void setup() {
/*
Öncelikle ilgili pinlerimizi çıkış olarak ayarlayalım
Normalde kodlarımızı aşağıdaki gibi yazacaktık
pinMode(0, OUTPUT); // Arduino 0 numaralı pinini çıkış olarak ayarla
pinMode(1, OUTPUT); // Arduino 1 numaralı pinini çıkış olarak ayarla
pinMode(2, OUTPUT); // Arduino 2 numaralı pinini çıkış olarak ayarla
pinMode(3, OUTPUT); // Arduino 3 numaralı pinini çıkış olarak ayarla
pinMode(4, OUTPUT); // Arduino 4 numaralı pinini çıkış olarak ayarla
pinMode(5, OUTPUT); // Arduino 5 numaralı pinini çıkış olarak ayarla
Ancak bu bölümü for döngüsü ile aşağıdaki gibi 3 satırlık kod yazarak yapabiliriz
*/
for (int pin = 0; pin <= 5; pin++) {
pinMode(pin, OUTPUT);
}
}
void loop() {
for (int i = 0; i <= 5; i++) {
digitalWrite(i, HIGH);
delay(1000);
}
}
Şimdi yukarıdaki döngüleri satır satır inceleyelim.
for(int pin = 0; pin <= 5; pin++) { bu satırda for deyimiyle hangi döngünün kullanılacağını bildirmiş olduk ve parantez içerisinde döngü şartlarını yazdık.
int pin = 0; burada pin adında integer türünde bir değişken oluşturduk ve değişkene sıfır değerini verdik.
pin <= 5; bu kodumuz ile döngünün hangi şartta devam edeceğini bildirdik. Yani döngümüz pin değişkeni değeri 5’in üzerinde oluncaya kadar çalışacaktır.
pin++; bu kkod ile döngü her döndüğünde pin değişkeni değerini bir artırdık.
14. satırdaki parantez “{” ile 16. satırdaki parantez “}” arasına ise döngü sırasında çalışacak olan aşağıdaki kodu yazdık.
pinMode(pin, OUTPUT); pinMode komutu ile pin değişkeninin her döngü adımındaki değerini dijital çıkış olarak ayarladık.
Yukarıdaki kodlar size biraz karışık gelebilir ancak, örnek yaptıkça kullanımı daha iyi kavrayacağız.
Şimdi gelelim loop() yapısı içerisindeki for döngümüze;
for(int pin = 0; i <= 5; pin++) { bu satırda for deyimiyle hangi döngünün kullanılacağını bildirmiş olduk ve parantez içerisinde döngü şartlarını yazdık.
int i = 0; burada i adında integer türünde bir değişken oluşturduk ve değişkene sıfır değerini verdik.
i <= 5; bu kodumuz ile döngünün hangi şartta devam edeceğini bildirdik. Yani döngümüz i değişkeni değeri 5’in üzerinde oluncaya kadar çalışacaktır.
i++; bu kod ile döngü her döndüğünde i değişkeni değerini bir artırdık.
{ } bu parantezler arasına ise döngü sırasında çalışacak olan aşağıdaki kodu yazdık.
digitalWrite(i, HIGH); digitalWrite komutu ile i değişkeninin her döngü adımındaki değerini ilgili dijital çıkışta HIGH olarak ayarladık.
delay(1000); burada ise döngü her döndüğünde 1 saniye beklemesini sağladık.
2- While Döngüsü :
While döngüsünde döngü değişkeni döngü dışında tanımlanır. Döngü şartı döngüyle birlikte tanımlanır ve artırma – azaltma işlemleri döngü parantezi içerisinde yapılır.
Şimdi yukarıdaki uygulamayı while döngüsü ile birlikte yapalım. Kodlarımız şu şekilde olacaktır;
void setup() {
/*
Öncelikle ilgili pinlerimizi çıkış olarak ayarlayalım
Normalde kodlarımızı aşağıdaki gibi yazacaktık
pinMode(0, OUTPUT); // Arduino 0 numaralı pinini çıkış olarak ayarla
pinMode(1, OUTPUT); // Arduino 1 numaralı pinini çıkış olarak ayarla
pinMode(2, OUTPUT); // Arduino 2 numaralı pinini çıkış olarak ayarla
pinMode(3, OUTPUT); // Arduino 3 numaralı pinini çıkış olarak ayarla
pinMode(4, OUTPUT); // Arduino 4 numaralı pinini çıkış olarak ayarla
pinMode(5, OUTPUT); // Arduino 5 numaralı pinini çıkış olarak ayarla
Ancak bu bölümü While döngüsü ile aşağıdaki gibi yapabiliriz
*/
int pin = 0; // pin adında integer türünde değişken tanımladık ve sıfır değerini atadık
while (pin <= 5) { // pin değişkeni değerinin 5'den küçük yada 5'e eşit olup olmadığını kontrol ettik
pinMode(pin, OUTPUT); // pin değişkeni değerine karşılık gelen dijital pini çıkış olarak ayarladık
pin++; // pin değişkeni değerini bir artırdık
}
}
void loop() {
int i = 0; // i adında integer türünde değişken tanımladık ve sıfır değerini atadık
while (i <= 5) { // pin değişkeni değerinin 5'den küçük yada 5'e eşit olup olmadığını kontrol ettik
digitalWrite(i, HIGH); // pin değişkeni değerine karşılık gelen dijital pini HIGH olarak ayarladık
delay(1000); // 1 saniye bekletme uyguladık
i++; // i değişkeni değerini bir artırdık
}
}
3- Do – While Döngüsü :
Do- While döngüsünde döngü do komutu ile başlar ve şart kontrol edilmeden döngü parantezine girilir. Parantez içerisindeki işlem yapılır ve döngü sonuna gelindiğinde While komutu ile şart kontrol edilir. Eğer şart hâlâ sağlanıyorsa şart false döndürene kadar işlem tekrarlanır. Do while döngüsünde dikkat edilmesi gereken nokta şu ki, döngü şartı kontrol etmeksizin bir defa kesinlikle çalışır.
Örnek kullanım:
void setup() {
/*
* 0 ile 5 arasındaki pinleri çıkış olarak ayarlıyoruz
*/
for(int pin = 0; pin <= 5; pin++){
pinMode(pin, OUTPUT);
}
}
void loop() {
int i = 0; // i adında değişken tanımlayıp, başlangıç değeri olarak sıfır değerini atıyoruz
do{ // do while döngüsüne giriyoruz
digitalWrite(i, HIGH); // i değişkeninin her döngüdeki değerini dijital pine yönlendirip HIGH olarak atıyoruz
delay(1000); // 1 saniyelik bekleme veriyoruz
i++; // i değişkeni değerini bir artırıyoruz
}while(i <= 5); // döngü sonunda while komutu ile şartı belirleyip noktalı virgül ile satırı sonlandırıyoruz
}