Arduino Buton ile Led Yakma Uygulaması

Arduino mikrokontrolcüsü ile bu yazımda buton kullanarak LED yakma uygulaması yapacağız. Buton kullanarak devreye bağlayacağımız LED’ in ne zaman yanıp ne zaman söneceğine karar veren bir devre tasarlayacağız. Öncelikle buton elemanının ne olduğundan ve çalışma prensibinden başlayalım.

Buton Çalışma Prensibi

Buton üzerine kuvvet uygulandığında mekanik anahtarlama yapabilen bir elektrik elemanıdır. Her gerilim seviyesine uygun buton kullanıldığı gibi elektronik devrelerde de buton kullanımı söz konudur. Elektronik devrelerde genellikle kullanılan butonlar 2, 4 veya 5 bacaklıdır. Yaygın olarak 4 bacaklı butonlar kullanılır. 5 bacaklı olan butonlarda 5. bacak ground bacağı iken 2 bacaklı butonlarda sadece birbirine temas ettirilecek olan bacaklar mevcuttur.


Yandaki resimde açık şeması verilen buton normalde açık buton olarak bilinir. Butona basıldığında normalde açık olan buton kapalı konumuna gelerek kapalı devre oluşturur ve devre tamamlanır.


Kullanılacak Malzemeler

  • 1 adet Arduino UNO
  • 1 adet breadboard
  • 1 adet LED
  • 2 adet 220 ohm direnç
  • 5 adet erkek-erkek jumper
  • 1 adet push button buton

Devre Şemasının Oluşturulması

Bu projede mikrokontrolcü olarak Arduino UNO geliştirme kartını kullanacağız. Dijital pini olan farklı bir Arduino modeli de kullanılabilir.

Arduino ile buton kullanarak LED yakabilmek için öncelikle butondan veri okunmalıdır. Bu durumda önce arduino mikrokontrolcüsü ile buton arasındaki bağlantıyı yapalım. Bu projede 4 bacaklı bir push button kullanacağız. 4 bacaklı bu butonlarda 1 – 4 numaralı bacaklar ve 2 – 3 numaralı bacaklar birbirine bağlıdır.

Butondan gelen veri Arduino tarafından okunmalı ve istenilen durum sağlandığında Arduino dijital pinleri aracılığıyla LED’ in anotunun bağlı olduğu dijital pin lojik – 1 (HIGH) durumuna getirilmelidir. Buton bağlantılarında dikkat edilmesi gereken en önemli husus butonun ground bacağına 1 adet direnç bağlanarak elektriksel gürültüden dolayı butonun iletime girmesini engellemektir. Bu direnç sayesinde buton sadece basılı olduğu zamanlarda iletime girecek basılı oladığı durumlarda iletime girmeyecektir.



Yukarıdaki devre şemasında da görüldüğü üzere Arduino ile buton kullanarak LED yakma uygulamasını breadboard üzerinde çalıştırabiliriz. Şimdi yukarıdaki devrenin istediğimiz gibi çalışabilmesi için gerekli kodları yazıp Arduino kartımıza kendi IDEsi aracılığıyla yüklemeliyiz.

Yazacağımız kodlar bizim oluşturacağımız devre senaryosuna göre farklılık gösterebilir. Hangi durumlarda LED’ in yanmasını ve sönmesini istiyorsak o duruma göre kodları yazmalıyız.

Butona Basıldığında Yanan Led Devresi için Kodlar

Dijital pinlere bağlı LED’ i OUTPUT olarak tanımlayarak yanması ve yine dijital pinlere bağlı butonu INPUT olarak tanımlayarak Arduino tarafından okunması sağlanmalıdır. Aşağıdaki kodlarda 6 numaralı pin LED için OUTPUT, 7 numaralı pin buton için INPUT olarak tanımlanmıştır. Kod yazılırken değişiklik yapılması esnasında zorluk yaşanmaması için de led ve butonun bağlı olduğu pinler “led” ve “buton” isimli sabitlere atanmıştır.

#define led 6
#define buton 7

int buton_durumu = 0;

void setup()
{
  pinMode(led, OUTPUT);
  pinMode(buton, INPUT);
}

void loop()
{
  buton_durumu = digitalRead(buton);
  
  if (buton_durumu == 1)
    digitalWrite(led, HIGH);
  else
    digitalWrite(led, LOW);
}

Yukarıdaki kod Arduino UNO kartına yüklediğinde 7 numaralı pine bağlı push buttona her basıldığında 8 numaralı pine direnç ile bağlı olan LED’ in yandığı gözlemlenir.

Butona Her Basıldığında LED Durumunun Değiştiği Devre İçin Kodlar

Butona her basıldığında LED’ in durumunun değişebilmesi için yazacağımız kodda basit bir kontrol algoritması oluşturulabilir. Bu sayede butona her basıldığında kontrol değişkeninin değeri ve sırasıyla LED durumu değiştirilebilir.

#define led 6
#define buton 7

int buton_durumu = 0;
int kontrol = 0;

void setup()
{
  pinMode(led, OUTPUT);
  pinMode(buton, INPUT);
}

void loop()
{
  buton_durumu = digitalRead(buton);

  if (buton_durumu == 1)
    kontrol = (kontrol == 1) ? 0 : 1;

  if (kontrol == 1)
    digitalWrite(led, HIGH);
  else
    digitalWrite(led, LOW);
}

Yukarıdaki kod Arduino UNO kartına yüklediğinde 7 numaralı pine bağlı push buttona her basıldığında 8 numaralı pine direnç ile bağlı olan LED’ in durumunu değiştiği ve elimizi butondan çektiğimizde LED durumunun değişmediği gözlemlenir. Bu kod sayesinde butona basıldığında LED yanar ve butondan elimizi çektiğimizde LED hala yanmaya devam eder. LED’ in sönebilmesi için tekrar butona basılması gerekir. kontrol değişkeninin 1 ve 0 değerleri arasında geçiş yapması bu devre senaryasu için oldukça önemlidir. Bu sayede butona her basıldığında kontrol değişkeninin durumu değişecek ve bu durumda da LED’ in yanıp yanmaması değişecektir.

Yorum bölümünden tüm sorularınızı bana iletebilirsiniz.

Çalışmalarınızda başarılar dilerim.

Hamit Can Dinç.

3 Comments

  1. Merhabalar

    Anlatımınız oldukça akılda kalıcı olmuş. Çok teşekkür ederim. Özellikle de görsellere bayıldım. Devre görsellerini hangi programla yaptınız öğrenebilir miyim?

    Teşekkürler

  2. Hocam çalışmanız için çok teşekkür ederim, ben daha çok yeni bunu öğrenmeye çalışıyorum
    programınızı tinkercad de çalıştırdım,buton çalışırken biraz tereddütlü çalışıyor pul-up bağlantıda direç 1Kohm kullandım bundan dolayımı acaba?
    Birde void loop döngüsünde (kontrol = (kontrol == 1) ? 0 : 1;) ? işareti ne anlama geliyor.
    Öğrenebilirmiyim.
    Selamlar

Erhan için bir cevap yazınCancel Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


The reCAPTCHA verification period has expired. Please reload the page.