
Arduino kullanarak tek buton ile led yakıp söndürme
Arduino ile tek buton kullanarak Led Yakıp Söndürme uygulaması için gereken malzemeler
- Arduino Uno
- Breadboard
- 220 Ohm Direnç
- 10 K direnç
- buton
- jumper kablolar (erkek-erkek)
Arduino ile bir Led i iki buton kullanarak yakıp söndürmek kolaydır. Ancak bu işlemi tek buton kullanarak yapabilmek için birkaç yöntemi bir arada kullanmak gerekmektedir.
Tek buton ile mevcut konumu değiştirme işlemi TOGGLE olarak ifade edilebilir ve programlamada sıklıkla kullanılır.
Ancak öncelikle devre hakkında bilgi verelim. Devremizde buton 7 nolu dijital girişe bağlanırken LED ise 13 nolu digital pine bağlanmıştır. Butona seri bağlı 10K ohmluk bir direnç görünmektedir. Direnç 5V gerilime bağlanmıştır. Buton ise dirence ve Arduinonun GND pinine seri bağlı bulunmaktadır. Bu bağlantı şekline PULL_UP direnç ile buton kullanma denmektedir. Ayrıntılı bilgiyi Bir Buton Bir Led uygulamasından öğrenebilirsiniz.

Bir Buton İle Led Kontrolü
ARDUİNO İLE TEK BUTON KULLANARAK LED YAKIP SÖNDÜRME
#define butonPin 7
#define ledPin 13
int deger;
int simdiki,onceki;
void setup() {
pinMode(butonPin, INPUT);
pinMode(ledPin, OUTPUT);
deger = LOW;
onceki = LOW;
}
void loop() {
simdiki = digitalRead(butonPin);
if (onceki == HIGH && simdiki == LOW)
{
deger = digitalRead(ledPin);
if (deger == HIGH)
{ digitalWrite(ledPin, LOW);
}
else {
digitalWrite(ledPin, HIGH);
}
}
onceki = simdiki;
}
Programımızda 7 buton pini, 13 ise Led pini olarak tanımlanmıştır. deger adındaki değişken ledin durumunu, simdiki adındadi değişken butondan gelen değeri saklamaktadır. onceki adındaki değişken ise butona basıldığı an ile loop döngüsünün bir önceki çevriminde butona basılıp basılmadığını değerini saklamaktadır.
Programın kritik noktası butona basıldığı ilk anda onceki ve simdiki adındaki degiskenlerin sadece bir kez farklı durumda kalmalarıdır ki
simdiki=LOW onceki=HIGH
if (onceki == HIGH && simdiki == LOW)
bu durumu kontrol etmektedir.
İf bloğundan çıkıldıktan sonra ise butonun simdiki durumu “önceki” adındaki değişkene aktarılmaktadır.
onceki = simdiki;
Yani onceki=LOW simdiki=LOW
ardık if bloğunun yeniden aktif olması mümkün olmayacaktır. Ancak butondan çekilip yeniden basılırsa if döngüsü çalışabilir.
deger = digitalRead(ledPin);
if (deger == HIGH)
{ digitalWrite(ledPin, LOW);
}
else {
digitalWrite(ledPin, HIGH);
}
Bloğu ise butona her basıldığında LED’in mevcut durumunu kontrol eder. deger değişkeninde LED in HIGH yada LOW olma durumu saklanır. Eğer deger==HIGH ise LED yanmaktadır ve söndürülmelidir. ELSE bloğunda ise LED sönüktür ve yakılmalıdır.
Programda düğmeye basılı tutulsa dahi konum değişmeyecektir çünkü program IF bloklarına bir daha giremez.
Son Yorumlar