Arrduino Kullanarak Tek Buton ile Led Yakıp Söndürme Toggle On Off

Robotik ve Arduino Kodlama ve Proje Geliştirme

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.