Arduino Buton ile Led Yakma Uygulaması Pull-Up Pull-Down

Robotik ve Arduino Kodlama ve Proje Geliştirme

Arduino Pull Up Direnç

Arduino Buton ile Led Yakma Uygulaması Pull-Up Pull-Down

Arduino kullanarak Buton ile Led kontrol etme uygulaması yapmak için öncelikle butonların Pull-Up ve Pull-Down direnç kullanımı hakkında bilgi sahibi olmak gerekir. Butonlar farklı çeşitlerde üretilmektedir. Projemizde Push Buton “bas-çek” buton kullanılmaktadır.

Konu Başlıkları

  •  

    Push Buton Nedir , İç Yapısı Nasıldır?

    Bas-Çek Düğme olarak da bilinen push butonlar oldukça sık karşımıza çıkan malzemelerdir. Çalışma mantığı olarak basıldığında üzerinden elektrik akımı geçiren bırakıldığında ise akımı kesen bir çalışma mantığı bulunmaktadır.

    İki tip push buton vardır. Birincisi 2 pinli (uçlu) diğeri ise 4 pinlidir. Temel olarak aynı çalışma prensibine sahiptirler. İki Pinli push button kullanım olarak çok daha basittir. Bir ucu giriş bir ucu çıkış olarak devreye kolayca bağlanabilirler.

    Ancak 4 pinli push buton kullanımında sıklıkla sorunlar yaşanmaktadır. Dört pinli push butonda aşağıdaki şekilde görüldüğü gibi ikişer pin birbirine bağlıdır. Aslında iç yapısı iki pinli ile tamamen aynı mantıktadır. 1 ve 3 nolu pinler ile 2 ve 4 nolu pinler birbirine bağlı olarak üretilirler.

    Neden bu şekilde tasarlanmışlardır? Cevap olarak devre tasarımını kolaylaştırmak diyebiliriz. Bir devreyi tasarlarken elemanların bağlantı noktalarında bu tip alternariflerin sunulması kolaylık sağlamaktadır. Özellikle breadbordlarda 4 pinli push buton board üzerinde bulunan ve alanları yatay olarak ikiye ayıran kanal üzerine takılabilir. Bu şekilde tasarım kolaylığı elde edilir.

     

     

    Pull-Up ve Pull-Down Direnç kullanımı nedir?

    Arduino ve diğer mikrodenetleyicilerde Push Buton kullanımı oldukça yaygındır. Ancak butonun tek başına girişe bağlanması tavsiye edilmez. Mikrodenetleyiciler girişlerine uygulanan sinyalleri kontrol eden ve buna bağlı olarakta kodlanmış olan görevi yerine getirirler. Kod blokları sürekli olarak giriş olarak tanımlanan  örneğin pinMode(butonPin, INPUT) porttan veri girişi olup olmadığını kontrol edeceklerdir ve yapısı gereği de girişinde 1 yada 0, Hıgh yada LOW değerlerinin olmasını bekleyecektir. Ancak buton tek başına bağlandığında ve basılı olmadığında girişte 0 yada 1 değeri okunamaz. Bu duruma FLOATING denir, programlama açısından istenmeyen bir durumdur ve kararsızlık yaratır.  Programlamada değişken tanımlayıp ilk değer vermemek gibi bir durum oluşturur. Sorunun çözümü ise push butona seri bir direç bağlamaktır. Bu direnç iki şekilde bağlanabilmektedir. Bağlantı şekline göre pull-down yada pull-up direnci olarak tanımlanır.

    Pull-Down Direnci ile Buton Kullanımı

    Yukarıdaki devre şeması incelendiğinde  10Kohmluk bir direnç Eksi’ye (GND-TOPRAK) girişine bağlanmıştır.Buton ise 5V a bağlanmıştır. Arduino‘nun 9 nolu dijital girişi ise buton ve direncin birbirine bağlandığı noktadan alınmaktadır. Çalışma anında butona basılmasa bile 9 Nolu girişe direnç üzerinden 0V yani LOW verilmektedir. Böylece yazılan kodlarda herhangi bir sorun çıkmayacaktır. Butona basılması durumunda ise 5V girişe uygulanmaktadır. Böylece butona basılınca HIGH basılmadı durumda ise LOW uygulanması sağlanmış olur ve kararsızlık durumu ordan kalkar. Pull-Down kelime anlamıyla da aşağıya çekmek anlamındadır. Burada girişten okunan ilk değer LOW olması aşağı kelimesini ifade etmektedir.

    PULL DOWN DİRENCİ KULLANILAN DEVRE ŞEMASI

    Malzeme Listesi

    1. Arduino Uno
    2. 4 Pin Push Buton
    3. 10K Direnç Pull-Down Direnci
    4. LED
    5. 220Ohm Direnç
    6. Jumper Kabloları (Erkek-Erkek)Pull Down Direnç Kullanımı

    Devrede 4 pinli Push Buton Kullanılmıştır. Push butona a basıldığında 9 nolu pine 5V uygulanmaktadır. Butona basılı olmadığı durumda ise 10K’lık pull-down direnci üzerinden 0V uygulanmaktadır.

    PULL-DOWN-DİRENÇ ARDUİNO KODLARI


    /*
    www.robotik.cc
    Arduino ile Buton Kullanımı
    Push Buton İle Led Yakmak
    Pull Pull-Down kullanımı
    */
    #define ledPin 13 // 13 Nolu dijital porta bağlı LED
    #define buttonPin 9 // 9 Nolu Dijital porta bağlı buton
    int deger; // Buton degerinin saklanacağı değişken
    void setup() {
    pinMode(ledPin,OUTPUT);
    pinMode(buttonPin,INPUT);
    }
    void loop() {
    deger=digitalRead(buttonPin); // deger degiskeni ilk olarak LOW olacaktır. Butona basıldığında HIGH olur ve led yanar
    digitalWrite(ledPin,deger);
    }

    Programda 13 nolu pine Led bağlanmıştır. 9 nolu pin ise buton içi giriş olarak tanımlanmıştır. deger değişkeni ise butondan alınan veriye gore LOW yada HIGH değerini alacaktır. Pull-Down Butonu sayesinde deger değişkenine mutlaka bir veri gönderilmektedir. Programda kararsız çalışma durumu oluşmayacaktır.


     

    Pull-Up Direnci ile Buton Kullanımı

    Pull Up Devre Şeması

    Pull Up direnci kullanımında ise direnç ve push buton yer değiştirmektedir. Devreye enerji verildiğinde direnç üzerinden 5V Arduino’nun girişine uygulanmaktadır. Program tarafından bakıldığında arduino girişinden ilk olarak 5V yani HIGH degeri okunacaktır. Butona basılması durumda ise giriş pini doğrudan toprağa GND ye bağlanacağından program LOW değeri okuyacaktır.  Pull-Up kelimesi yukarı çekmek demektir. Yani giriş değeri başlangıçta 5V yani HIGH yapılarak yükseltilmiştir.

    PULL UP DİRENCİ KULLANILAN DEVRE ŞEMASI

    Arduino Pull Up Direnç

    Devrede 10Kohmluk Pull-Up direnci 5V a bağlıdır ve enerji verildiğinde direk olarak 9 nolu girişe bu değeri aktarmaktadır. Butona basıldığında ise LOW sinyali uygulanır. Çünkü giriş buton üzerinden GND’ye başlanmıştır.

    PULL-UP-DİRENÇ ARDUİNO KODLARI


    /*
    www.robotik.cc
    Arduino ile Buton Kullanımı
    Push Buton İle Led Yakmak
    Pull Pull-Down kullanımı
    */
    #define ledPin 13 // 13 Nolu dijital porta bağlı LED
    #define buttonPin 9 // 9 Nolu Dijital porta bağlı buton
    int deger; // Buton degerinin saklanacağı değişken
    void setup() {
    pinMode(ledPin,OUTPUT);
    pinMode(buttonPin,INPUT);
    }
    void loop() {
    deger=digitalRead(buttonPin); // deger degiskeni ilk olarak HIGH olacaktır. Butona basıldığında LOW olur
    digitalWrite(ledPin,!deger);// ! işareti değer değişkenini tersler. Yani HIGH olan giriş LOW, lOW olan giriş HIGH olarak dönüşür.
    }

    Normal durumda program ilk çalıştığında değer değişkeni HIGH durumunda olur ve ilk program gibi yazım yapılır ise LED yanar. Ancak doğal olarak LED’in yanması butona basıldığında olması beklenir. Bu nedenle deger değişkenine ! işareti konmuştur. Böylece değişkenin değeri LOW ise HIGH, HIGH ise LOW olarak dönüştürülür. Böylece butona basılmadığında led yanmaz.  ! işareti birçok programlama dilinde tersini yapmak için kullanılır. Örneğin eşit değildir ifadesi arduino’da( !=) olarak gösterilir.