Arduino ile Buton Kullanımı

Merhaba bu yazı dizimizde, buton kullanımına bakacağız, başlıkta Arduino ile yazmış olsakta; devrelerde, mikroişlemcilerde hatta dilediğiniz her yerde aynı yöntemle kullanabilirsiniz. Direnç bağlama yöntemi ile isimlendirilien pull-up ve pull-down etkinliği 10k ohmluk direnç ile gerçekleştirilir. Direnç kullanılmayan buton kullanımlarında ise butona basıldıktan sonra, hatta kalan enerji butona basılmasa bile basılıyormuş gibi davranır, direnç kullanarak bu enerji sönümlenir, bu iki yönteme ek olarak Arduino’nun dahili pull-up fonksiyonunuda işleyeceğiz.

pull down pull up, Arduino ile Buton Kullanımı

Pull Down Direnç

Düğmeye basıldığında gerilim kaynağıyla Arduino’nun girişi kısa devre olur. Elinizi düğmeden çektiğinizde hat üzerinde hâlâ enerji kalır. Bu enerji düğmeye basılmadığı durumunda bile Arduino’nun düğmeye basılmış gibi davranmasına neden olur. Bu enerjinin yok edilmesi için hat genellikle 10K ohm’luk bir direnç ile toprağa bağlanır. Bu dirence pull down direnç denir.

Pull-Up Direnç

Düğmeye basılmadığı durumlarda Arduino’nun giriş pini 5 volt düzeyindedir. Düğmeye basıldığında akım, Arduino’nun giriş pini yerine doğrudan toprağa ulaşmaktadır. Böylece pull-down direnç sistemini tam tersi çalışmaktadır. Arduino düğmeye basıldığında 0, düğmeye basılmadığında 1 değerini görmektedir. Pull-up direnci kullanma amacımız ise, düğmeye basıldığında toprak ve besleme hattının direkt olarak kısa devre olmasını engellemektir. Pull-down dirençte olduğu gibi pull-up dirençlerde genellikle 10K ohm olur.

Arduino Dahili Pull-Up Direnci

Bu fonksiyonu kullanmak için pinMode() fonksiyonunda INPUT_PULLUP kullanmamız gerekiyor, Arduino ve AVR çiplerin de 20k ohm ve 50k ohm arasında pull-up direnci bulunur, bu sayede direnç kullanmadan aynı işlemi yapabiliriz.

pull down pull up, Arduino ile Buton Kullanımı

Arduino Dahili Pull-Up Kodu

const int butonpin = 4;

const int ledPin = 8;

int butdurumu = 0;

void setup()

{

    pinMode(ledPin, OUTPUT);

    pinMode(butonPin, INPUT_PULLUP);

}

void loop()

{

    butdurumu = digitalRead(butonpin); //buton basma kontrolü

    if (butdurumu == LOW) //butona basılırsa

    {

        digitalWrite(ledPin, HIGH); //LED AÇIK

        delay(3000); //3 saniye bekle

        digitalWrite(ledPin, LOW); //LED KAPALI

    }

}