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 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.
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
}
}
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.