06
Oca
2020

Arduino ile push buton kullanımı

Push buton; normalde yalıtkan durumda olan, basıldığı zaman iletken duruma geçen ve bırakıldığında tekrar yalıtkan duruma geçen devre elemanıdır. Genellikle 4 bacaklı olarak satılır ancak 2 bacaklı olan versiyonu da mevcuttur.

Malzemeler

  • 1 adet Arduino
  • 1 adet push button
  • 1 adet 10K direnç

Bağlantı Şeması

Push butonun soldaki iki bacağı kendi aralarında, sağdaki iki bacağı da kendi aralarında kısa devre halindedir. Butona basıldığı anda tüm bacaklar kısa devre durumuna geçer. Burada, Arduino’ nun 5V çıkışına butonun sol bacaklarından birisi bağlanmıştır. Butonun sağ bacağı da hem Arduino kartının 7 numaralı I/O pinine, hem de 10K direnç ile Arduino’ nun GND pinine bağlanmıştır.

Kaynak kod

int buttonPin = 7; // Butonun bağlı olduğu pinin numarasını bir değişkene ata
void setup() {
  pinMode(buttonPin, INPUT); // // Butonun bağlı olduğu pini GİRİŞ pini olarak ata
}

void loop() {
  if (digitalRead(buttonPin)==HIGH) // Pinden HIGH değeri okunduysa butona basılmıştır
  {
    digitalWrite(13, HIGH);  // Arduino üzerindeki ledi yak
  }
  else  // Pinden HIGH değeri okunmadıysa butona basılmamıştır
  {
    digitalWrite(13, LOW); // Arduino üzerindeki ledi kapat
  }
}

Arduino kartının üzerinde 13 numaralı I/O pinine varsayılan olarak tanımlanmış bir led bulunur. Bu sayede projeye ekstra bir led bağlamadan; digitalWrite(13, HIGH); komutunu kullanarak Arduino kartının üzerindeki ledi yakıp, digitalWrite(13, LOW);  komutu ile de bu ledi kapatabiliriz.

Döngü (loop) fonksiyonu içindeki if-else yapısı ile 7 numaralı pinden okunan değer HIGH ise 13 numaralı pine HIGH yazılmakta yani led yakılmakta, LOW ise LOW yazılmakta yani led kapatılmaktadır.

Neden direnç kullanıyoruz?

Butonun sağ bacağı hem Arduino’ nun 7 numaralı I/O pinine, hem de GND ye direnç kullanmadan bağlı olsaydı; akım, direncin daha düşük olduğu yolu tercih edeceği için GND tarafına yönelecek ve 7 numaralı pinden okunan gerilim kararsız bir değer (0-5V arasında belirsiz bir değer) olacaktı. Bunu engellemek için devreye pull-down direnci ekleyerek devreyi kararlı bir hale getirmiş olduk. Bu devrede pull down direncinin temel çalışma mantığı aşağıdaki şekildeki gibidir.