Arduino ile Buton Kontrolü
Güncelleme 20/03/2020
Arduino programında const int veri tipinde butonun bağlı olduğu 12.pini butonPin olarak, LED’in bağlı olduğu 13.pini ledPin olarak isimlendirdik. Bundan böyle tüm program içerisinde butonPin etiketini 12.pin yerine, ledPin etiketini 13.pin yerine kullanmak istediğimizi söylüyoruz.
void loop() kısmında yazılan if……else komutları bir koşul söz konusu olduğunda kullanılır. Arduinoya butona basılırsa LED’i yak, basılmazsa söndür diyebilmek için bu komutlar kullanılır.
Devrede Pull-Down direnci kullanıldığından dolayı butona basılmadığı sürece Arduinonun 12.pini Lojik0(LOW) konumunda tutulur.
Butona basıldığı anda 12.pine enerji gider Lojik1(HIGH) olur. Arduino bunu digitalRead komutuyla algılar ve if şartı sağlanır, LED’in bağlı olduğu 13.pine digitalWrite komutuyla enerji gönderir. 13.pin Lojik1(HIGH) olur, LED yanar.
Butondan elinizi çektiğinizde Arduinonun buton bağlı olan 12.pinine enerji gitmez Lojik0(LOW) olur. İf şartı sağlanmadığından else’den sonraki komut çalıştırılır. digitalWrite komutuyla 13.pine bağlı olan LED’in enerjisi kesilir, Lojik0(LOW) olur ve LED söner. else komutuyla if ile belirtilen şart sağlanmadığında, başka bir durum söz konusu olduğunda yapılacak şey yazılır.
Bu uygulamada Pull-Down direnci kullanarak butonu bağladık. Yani butona basılmadığı sürece Arduinonun 12 nolu pini Lojik0 konumunda tutuluyor, butona basılınca 12 nolu pine Lojik1 bilgisi gidiyor. Pull-Up direnci kullanarak buton bağlantısını yaparsak Hem devre şemasında hem de Arduino programında küçük değişiklikler yapmamız gerekir.
Devre Şeması:
Arduino programında değişmesi gereken sadece if (butonDurumu == LOW) komutudur. Çünkü Pull-up direnci kullanarak yapılan buton bağlantısında butona basılmadığı sürece Arduinonun 12 nolu pini Lojik1 konumunda tutuluyor. Butona basılınca 12 nolu pine Lojik0 bilgisi gidiyor, bizde bunu if komutuyla sorguluyoruz.
Eğer 12 nolu pin Lojik0(LOW) olduysa butona basılmış demektir. LED’i yak, değilse butona basılmamıştır LED’i söndür.
Arduino Programı:
// Buton ile LED kontrolü. Buton pull-down dirençle bağlı const int butonPin = 12; // buton bağlanan pini isimlendir. const int LEDPin = 11; // LED bağlanan pini isimlendir. int butonDurumu; // butona basılıp basılmadığını okuduktan sonra kaydetmek için değişken tanımla. void setup() { pinMode(LEDPin, OUTPUT); // LED bağlanan pini çıkış olarak ayarla. pinMode(butonPin, INPUT); // buton bağlanan pini giriş olarak ayarla. } void loop() { butonDurumu = digitalRead(butonPin); // butona basılıp basılmağını okuyup sonucu butonDurumu değişkenine kaydet. if (butonDurumu == HIGH) { // butona basıldı mı? basıldıysa butonDurumu lojik1 olur. digitalWrite(LEDPin, HIGH); // butona basıldıysa LED'i yak. } else { // basılmadıysa! digitalWrite(LEDPin, LOW); // LED'i söndür. } }