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;
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.
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;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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.
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;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
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 } } |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 } |