For Döngüsü:
Belirlenen koşulun gerçekleşene kadar döngü içindeki kod bloğu tekrar eder. Hemen kullanımını ve örnek uygulamasını yapalım.
for (başlama;koşul;artış) {
// kodlar
}
Örnek uygulama.
void setup() {
Serial.begin(9600); //seri ekran başlatıldı
}
void loop() {
for (int i = 0; i <= 10; i++) //i++ ifadesiyle i=i+1 aynıdır. dilerseniz i=i+2 ifadesini kullanarak artış miktarını değiştirebilirsiniz.
{ //döngü başladı
Serial.println(i);
delay(500);
}
//döngü bitti
}
/*
0'dan 10'a kadar sayıları ekrana yazan program.
Burada i değerini ilk etapta 0(sıfır) olarak atadık.
şartımızı yazdık hemen yanına : i değerinin 10dan küçük eşit olması
son olarak da artış miktarını ayzdık: i++ (bir artır demek)
i değeri 10 olduğunda döngüden çıktı.
*/
Şimdi for döngüsünü kullanarak bir ledin parlaklığını artıralım.
Düşünelim ve hatırlayalım.
Ledin parlaklığını artırmak istiyorsak analog – dijital sinyallerden hangisini kullanmam lazım?
Arduino’da hangi pinlere takabilirim ledin + (uzun) bacağını?
Ledi giriş mi çıkış mı tanımlayacağız?
Ledin parlaklığını 0’dan kaça kadar artırmam lazım? 255? 1024?
Bu işlemi nasıl yapacağız? analogRead, anallogWrite?
Düşündük :)
Sadece ledi yak söndür yapmayacağımız için, belirli bir aralıkta bir çok değeri kullanacağımız için analog sinyal kullanacağız.
Arduinoda analog çıkış pinleri (PWM) yanında yaklaşık “~” işareti olan pinlerdir. Arduino uno için 3,5,6,9,10,11 numaralı pinlerden istediğimiz birini kullanabiliriz.
Ledi çıkış olarak tanımlıyoruz.
Dijital pinlerin 8 bitlik olduğunu ve alabildikleri maksimumum değerin 255 olduğunu biliyoruz. (2 tabanındaki 8 bitlik en büyük sayı 256’dır, 0 dan başladığı için 255’e kadar değer alabilir.)
Bu işlemi for döngüsüyle yapabiliriz.
#define led 3 // 3 numaralı pine ledimizi bağladık
void setup() {
Serial.begin(9600); //seri ekran başlatıldı
}
void loop() {
for (int i = 0; i <= 255; i++) //i++ ifadesiyle i=i+1 aynıdır. dilerseniz i=i+2 ifadesini kullanarak artış miktarını değiştirebilirsiniz.
{ //döngü başladı
analogWrite(led,i); // lede i'nin o anki değerini gönderdik.
Serial.println(i); // değerleri seri ekrandan okumak için ekrana da yazdırdık.
delay(30);
// delay(30) ledin her bir değerde beklemesini istediğimiz süre, milisaniye.. bu değeri değiştirerek ledin hızlı bir şekilde parlaklığa ulaşmasını sağlayabilirsiniz.
}
//döngü bitti
}
//Ledin parlaklığını sıfırdan maksimumuma çıkaran bir program yazdık.
Şimdi dikkat ettiyseniz, ledimiz en parlak ana geliyor ve sonra en az ışık yayarak baştan yanıyor. Parlaklığı en yüksek seviyeye gelince, yavaş yavaş en düşük seviyeye gelmesini istersek ne yapabiliriz? Kodda nasıl bir değişiklik yapmamız gerekir.
İsterseniz döngü içine bir kontrol ifadesiyle, isterseniz iki döngüyle yapabilirsiniz.
While döngüsü
while döngüsünde döngü başlarken bir koşul tanımlanır. Ve döngü içinde bu koşulun sağlandığı durumda, döngüden çıkılır. Kullanımı ve örneklerle somutlaştıralım.
while (koşul) {
// kodlar
}
Örnek:
void setup() {
Serial.begin(9600);
}
0’dan 10’a kadar olan sayıları ekrana yazan programı while döngüsü ile yapalım.
void loop()
{
int x = 0; // x değerini int olarak tanımladık
while (x <= 10) // x değeri 10'a küçük eşit mi
{ //döngü başladı
Serial.println(x); //seri porta yaz
x++; //x değerini bir artır dilersek x=x+1
delay(500); // yarım saniye bekle..
}
//döngü bitti
}
Do .. while Döngüsü:
while döngüsünden tek farkı, döngü koşulunun döngü bir kez çalıştıktan sonra test edilmesidir. Bir de koşuldan sonra noktalı virgül kullanmamız gerekmektedir.
do {
// kodlar
} while (koşul);
0’dan 10’a kadar olan sayıları ekrana yazan programı do … while döngüsü ile yapalım.
void setup() {
Serial.begin(9600);
}
void loop() {
int x = 0; // x değerini int olarak tanımladık
do
{ //döngü başladı
Serial.println(x); //seri porta yaz
x++; //x değerini bir artır dilersek x=x+1
delay(500); // yarım saniye bekle..
}
while (x <= 10); // x değeri 10'a küçük eşit mi
//döngü bitti
}