Karaşimşek devresi uygulaması ile karaşimşek efektini döngülerle vermeyi amaçlıyoruz. Led’leri sürekli bir sonraki yanacak ve en sonuncuya geldiğinde aynı döngüyü geriye doğru oluşturacak, bunu sürekli olarak yapacak uygulama için for döngüsünü kullanacağız.  Döngünün çalışma şekli aşağıda verilmiştir:



for(
başlangıç değeri; koşul; artış miktarı{

Tekrar etmesi istenilen komut/komutlar;

}


     Bu döngünün kullanımına bir örnek verelim:


int a;                                        //Öncelikle bir değişken belirlenir.

for(a=0; a<=10; a=a+1){        //0,1,2,3,4,5,6,7,8,9 ve 10 olmak üzere 11 kez dönen döngü

digitalWrite(led,HIGH);         //çıkışı ‘1’ yap.

delay(1000);                              // 1 sn. bekle

digitalWrite(led,LOW);           // çıkışı ‘0’ yap.

delay(1000);                              // 1 sn. bekle

}


For komutu içerisinde başlangıç değeri olarak a=0 yazılarak 0 değeri atanır. Daha sonra bitiş sayısını belirlemek için koşul ifadesi belirlenir. Burada a<=10 yazan ifade a değişkeni 10 sayısından küçük olduğu sürece programı çalıştırır. Yani koşul olarak belirtilen ifade doğru olduğu sürece döngü tekrarlar. Son olarak da artış miktarı belirlenir. a=a+1 ifadesi a değişkeninin her çevrimde bir arttırılmasını sağlayacaktır. Bu değer a=a+2 olsaydı her çevrimde değer 2 artacaktı ve 10 sayısına beş çevrimde ulaşılacaktı. For döngüsünün basitçe kullanımı bu şekilde. Şimdi karaşimşek uygulama devresini kuralım.

kara.png

For döngüsünden başka, daha çok bu döngüyle beraber kullanılan dizileri de anlamamız gerekiyor. Dizide tek tek yapması zor olan işleri tek satırda halledebilmemiz için kolaylıklar sağlanır. Aşağıdaki programda hem dizi, hem for döngüsü için açıklamalarla anlatımlar mevcuttur.



//Karaşimşek Uygulama Devresi: İleri-geri akan ışıklar

int pindizi[] = { 3, 4, 5, 6, 7, 8, 9};           //7 elemanlı bir dizi oluşturup her                                                                                          //elemanını  integer olarak tanımladık.
int sayici= 0;                                              //dizinin indisine ‘0’ atadık.
int timer = 20;                                           //led’lerin yanma hızını belirledik.

void setup() {
for (sayici=0; sayici<7; sayici++) {         //sayici değişkeninin 0.’dan itibaren 
pinMode(pindizi[sayici], OUTPUT);     //1,2,3,4,5ve  6. elemanlarını tek tek
}                                                                   //çıkış elemanı olarak atıyoruz.
}

void loop()    {
for (sayici=0; sayici<7; sayici++)   {         //0,1,2,3,4,5 ve 6. eleman için döngü digitalWrite(pindizi[sayici], HIGH);       //en baştaki led’i ‘1’ yap.
delay(timer);                                               //20 ms bekle
digitalWrite(pindizi[sayici+ 1], HIGH); //ikinci ledi yak
delay(timer);                                               //20 ms bekle
digitalWrite(pindizi[sayici], LOW);        //en baştaki led’i söndür.
delay(timer);                                              // 20 ms bekle
}                                                                     //7. elemana kadar başa dön.
for (sayici=5; sayici>0; sayici–) {             //en son 7. led yandığı için 6. ledden
digitalWrite(pindizi[sayici], HIGH);       //itibaren geriye gider, ters yönde 
delay(timer);                                               //aynı olay tekrarlanır.
digitalWrite(pindizi[sayici- 1], HIGH);
delay(timer);
digitalWrite(pindizi[sayici], LOW);
delay(timer);
}
}


İşlem Basamakları

  1. Şekildeki devreyi kurunuz.
  2. Verilen kodları yükleyerek devrenin çalışmasını gözlemleyiniz.
  3. Aynı devre üzerinde değişiklik yapmadan her iki baştan başlayıp ortada buluşan ve tekrar başladığı yere dönen yürüyen ışık programını yazınız.

Yorum bırakın