Elektrik Elektronik Teknolojisi Alanı Temrinleri

 
Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

Gönderen Konu: 22. Tekrarlayan kodları kısaltmak  (Okunma sayısı 763 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

12 Ekim 2016, 22:40:28
Çevrimdışı Hasan ERTÜRK
*
İleti: 496
Karma 3
Profili Görüntüle Spina Bifida 
Bu dersimizde düzenli olarak tekrarlayan kodları onlarca kez yazmak yerine bir kere yazıp kısaltmayı öğreneceğiz.

Nasıl yapılacağını örnek bir devre üzerinden açıklayalım.

Senaryo:
Birisi yeşil diğeri sarı olmak üzere 2 ledimiz var. Arduinoya enerji verildiği anda yeşil ledin 150 ms aralıklarla 10 defa flip flop yapıp sönmesi isteniyor. Yeşil led flip flop yaparken sarı led sönük kalacak.

Yeşil led 10 defa flip flop yaptıktan sonra da sarı ledin 150 ms aralıklarla 10 defa flip flop yapıp sönmesi isteniyor.

Bu döngü sonsuza dek devam edecektir.


Bu senaryoya ait devre şemamız şu şekilde:



Bu devreye ve istenen senaryoya ait kodlarımız şu şekilde:

Alıntı
                    /*
   *  *  *  *  *  *  *  *  *  *  *  *    
   *  *  *  *  *  *  *  *  *  *  *  *  
   *  *                          *  *  
   *  *    TEKRARLAYAN KODLARI   *  *  
   *  *          KISALTMA        *  *  
   *  *      temrinlerim.org     *  *  
   *  *                          *  *  
   *  *  *  *  *  *  *  *  *  *  *  *  
   *  *  *  *  *  *  *  *  *  *  *  *  
                     */  

//  CIKIS TANIMLAMALARI BURADA BASLADI
    int yesil_led = 13; // 13 nolu pine yesil_led adini verdik
    int sari_led = 6; // 6 nolu pine sari_led adini verdik
//  CIKIS TANIMLAMALARI BURADA BITTI                     

void setup() 
  {
    pinMode(yesil_led, OUTPUT); // yesil_led isimli pin (13) cikis yapildi
    pinMode(sari_led, OUTPUT); // sari_led isimli pin (6) cikis yapildi
  }

void loop() 
  {
        for (int yesil_ledi_10_defa_flash_yap = 1; yesil_ledi_10_defa_flash_yap <= 10;  yesil_ledi_10_defa_flash_yap ++) 
            {
              digitalWrite(yesil_led, HIGH); 
              delay(150); 
              digitalWrite(yesil_led, LOW); 
              delay(150);
            }

        for (int sari_ledi_10_defa_flash_yap = 1; sari_ledi_10_defa_flash_yap <= 10;  sari_ledi_10_defa_flash_yap ++) 
            {
              digitalWrite(sari_led, HIGH); 
              delay(150); 
              digitalWrite(sari_led, LOW); 
              delay(150);
            }            
  }
    


Kodları inceleyecek olursak yeşil ledin flip flop yapmasını sağlayan kodlar şunlar:
Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin.
Bu kod yeşil ledin 1 kere flip flop yapmasını sağlayacaktır. Ancak bu kodu;
şu kod ile:
Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin.
şu kod
Kod:
Kodlari sadece uyeler gorebilir. Lutfen Uye Olun ya da Giris Yapin. arasına yazarsam yeşil led 10 kere flip flop yapacaktır. Aynı durum sarı led için de söz konusudur.

Kodda kırmızı renk ile vurguladığım 10 sayısı ledin iki parantez arasındaki kodların 10 kere çalıştıktan sonra programın bir alt satıra geçeceğini ifade eder. Yeşil renkle vurguladığım yesil_ledi_10_defa_flash_yap (3 yerde geçiyor) ifadesi yerine başka bir şey yazabilirsiniz.

Örnekten anlaşılacağı üzere onlarca satır yazmadığımız için program gayet sade oldu. program ilk bakışta çok daha anlaşılabilir olacaktır. Umarım anlatabilmişimdir.

Bu da söz konusu devreye ait proteus similasyonu:

<iframe width="640" height="385" src="//www.youtube.com/embed/BsksOIicBQ4?fs=1&start=" frameborder="0" allowfullscreen></iframe>

Devreye ait isis ve ide dosyaları konu ekinde mevcuttur.

Anlatım, kodlama, tasarım, video ve resim temrinlerim.org sitesine aittir. Bu konu kaynak gösterilerek kullanılabilir.