Buton İle Led Yakmak Arduino

Buton ile led yakmak Arduino çalışmalarında başlangıç noktasıdır. Led yakmak basit bir projeymiş gibi görünse de en temel bilgiyi içerir. Arduino butonla led yakmak çok farklı yöntemlerde gerçekleştirilebilir. 1 buton 3 led ve 2 buton 1 led gibi farklı sayılarda buton ve ledler ile proje yapılabilir.

Biz bir ledi yaktığımız da aslında çok büyük bir eşiği geçmiş oluyoruz. İlk projemizde buton ile led yakma yaptığımızda bir ledi yakabiliyorsak eğer bir röleyi de kontrol edebiliriz. Bir motoru veya bir robotu da kontrol etmemiz mümkün.

Eğer led nedir hakkında ayrıntılı bilgi öğrenmek istiyorsanız bağlantının üzerine tıklayıp led nedir makalesini okuyabilirsiniz. Bu makale led hakkında kısa ve özet bilgi içerir. Okumak oldukça faydalı olur. Led her ne kadar basit bir devre elemanı olarak görünse de onunda kendine has özellikleri bulunmaktadır.

Buton İle Led Yakmak Hadi Başlayalım

Arduino buton ile led yakma konusunda dikkat edilmesi gereken ilk husus ledin gerekenden fazla akım çekmemesini sağlamaktır. Arduino pinleri 5V gerilim sağlar. Kullandığımız ledler maximum 30 mA’ e kadar akım çekebilmektedir. Bu değer ledin kalitesine göre de değişiklik gösterir.

Ledi direnç kullanmadan arduino üzerine direk bağlarsak led yanar. Eğer doğru bir şekilde Arduino buton ile led yakmak istiyorsak bir direnç kullanmamız şart. Kullanılan direnç değeri 220 ila 330 ohm arasında değişiklik gösterebilir. Bu aralıkta değerler kullanmak lede hiç bir zarar vermez.

Led bağlantısı bittiğine göre buton bağlantısını anlatabiliriz. Buton bağlantısı yaparken de projemizin veya butonun daha düzgün çalışması için pull-up ve pull-down dirençleri kullanılmalıdır. Aksi taktirde Arduino butonla led yakma projemiz düzgün çalışmaz.

Arduino üzerinden ledlere giden pinleri dijital pinlerden seçebiliriz. Eklemekte fayda var analog pinleri de daha önce dijital pin gibi kullanabileceğimizi ifade etmiştik. Dilerseniz Arduino üzerindeki analog pinleri de kullanabilirsiniz. Lede giden pin çıkış pini olarak atanmalı butona bağlanan pin ise giriş olarak aranmalıdır.

Burada gösterilen devre şemaları Arduino Uno kartı üzerinden anlatılmıştır. Bu uygulamaların hepsini diğer arduino modellerinde de yapablirsiniz.(Mega, Nano ve Arduino Mini gibi)

6 Farklı Arduino Buton İle Led Yakma Kodu

Farklı sayıda buton ve ledler kullanarak örnek kodlar paylaşıyor olacağız. Butonları farklı yöntemler ile kullanıp led yakacağız. Örneğin Arduino butona basınca led yansın çekince sönsün gibi. Arduino üzerinde 13. pine bağlı bir led bulunmaktadır. Dilerseniz projemizde bu ledi de kullanabiliriz.

Ledi yakmak için yapmamız gereken tek şey 13. pine HIGH çıkışı vermek. Normal bir led bağlamış gibi düşünebilirsiniz. Arduino üzerindeki led tabi ki SMD bir leddir.

Devreler incelendiğinde pull-down dirençleri gözlemlenecektir. Anrduinonun kendi içerisinde pull-up dirençleri dahili olarak bulunur. Yani pull-up kullanıp hiç direnç de bağlamayabilirdik. Ben her denediğimde dahili pull-up dirençlerinden verim alamıyorum. Bu sebeple kendim harici pull-up vaya pull-down dirençleri kullanmayı tercih ediyorum.

Dikkat edilmesi gereken bir durum vardır. Ledi bağladınız ve kodunuzu yüklediğinizi varsayalım. Butona bastığınızda led anlık olarak yanıp sönebilir veya istediğiniz gibi çalışmayabilir. Eğer yazılan kod ve devrede sorun olmadığından eminseniz bunun nedeni breadboardın kalitesiz olmasındandır.

Kullanılan jumper kablolar ve led bacakları düzgün şekilde bord üzerindeki metallere temas etmezse ark yapar. Oluşan ark devrede parazite neden olur. Butona bastığımızda saçma sapan hareketler yapıyorsa nedeni budur. Bunun çözümü kabloları biraz yerlerinden oynatırsanız çözülür. Ama emin olun tekrar bozulacaktır.

Deneme amaçlı yapıyorsanız sorun yok ancak bu bir proje ve düzgün çalışması lazımsa en temiz çözüm lehimlemek olur. Bord üzerinde denemesini yaptıktan ve çalıştığından emin olursak lehimleme ile parazit sorunu çözülür.

Arduino 1 Buton 1 Led

Bu kısımdaki projelerde 1 push buton ve 1 adette led kullanılmıştır. 2 farklı led projesi ve devre şemasını paylaştım. İşin mantığını kavrarsak istediğimiz tüm kombinasyonlarda led yakıp söndürebiliriz. Benim paylaştığım Arduino buton ile led yakmak kodları umarım işin mantığını kavramanıza faydalı olur. Devre şeması ile işe başlayalım.

Devrede butona boğlanan direnç 10k, lede bağlanan direnç ise 220 ohm değerindedir. Lede bağlanan direnç seri olarak bağlanır. Push butona bağlanan direnç pull-down görevini üstlenir. Böylece butonumuz düzgün çalışır. Şimdi led yakıp söndürme kodlarına geçelim.

 

int buton1=2 ;
int led1=4 ;
boolean durum=true ;
void setup() 
{
  pinMode(led1,OUTPUT) ;
  pinMode(buton1,INPUT) ;
}
void loop() 
{
  if(digitalRead(buton1)==HIGH && durum==true)
  {
    while(digitalRead(buton1)==HIGH)
    {
      if(digitalRead(buton1)==LOW)
      break ;
    }
    digitalWrite(led1,HIGH) ;
    durum=false ;
  }
  if(digitalRead(buton1)==HIGH && durum==false)
  {
    while(digitalRead(buton1)==HIGH)
    {
      if(digitalRead(buton1)==LOW)
      break ;
    }
    digitalWrite(led1,LOW) ;
    durum=true ;
  }
}

Gerekli devre kurulup Arduinoya yukarıdaki kod yüklendiğinde kod şu şekilde çalışır. 1 kez basınca led yanar 1 kez basınca led söner. Boolean veri tipinde bir değişken yardumı ile bu kodu gerçekleştiriyoruz. Boolean veri tipi sadece 2 değer alır true ve false.

Buradaki mantığı uzun uzun anlatsam dahi faydalı olmaz. Siz kendiniz inceleyerek bulabilirsiniz. İpucu vermek gerekirse çaprazlama mantığı ile 1 buton kullanıp 1 ledi yakma ve söndürme yaptık. Diğer 1 buton 1 led projesi kodları ise şu şekilde:

int buton1=2 ;
int led1=4 ;
void setup() 
{
  pinMode(led1,OUTPUT) ;
  pinMode(buton1,INPUT) ;
  Serial.begin(9600) ;
}

void loop() 
{
  if(digitalRead(buton1)==HIGH)
  {
    Serial.println("basildi") ;
    digitalWrite(led1,HIGH) ;
  }
    if(digitalRead(buton1)==LOW)
  {
    digitalWrite(led1,LOW) ;
  }
}

Devre şeması baştaki şema ile aynıdır. Bu led yakma kodu bir önceki koda oranla biraz daha basit. Bu kodu yüklediğimizde butona basılı tutulduğunda led yanar. Çekildiğinde söner. Basılı tutulan süre boyunca yanık kalır. Çekince de söner. Bu şekilde basit bir led yakma projesi.

Arduino 1 Buton 3 Led

Bu projede 1 buton ve 3 led kullanılmıştır. 1 buton kullanarak 3 ledi kontrol edeceğiz. 2 farklı proje paylaşılmıştır. Devre şemasını 1 kez bağlandıktan sonra sadece yazılım kısmında değişiklik yaparak ledleri farklı şekillerde yakacağız. Önce devremizi oluşturalım.

Push butona bağlanan direnç 10k pull-down direnci giğer dirençler gerilim bölücü 220 ohm dirençler. Şimdi kodları paylaşalım.

int buton1=2 ;
int led1=4 ;
int led2=5 ;
int led3=6 ;
boolean durum=true ;
void setup() 
{
  pinMode(led1,OUTPUT) ;
  pinMode(led2,OUTPUT) ;
  pinMode(led3,OUTPUT) ;
  pinMode(buton1,INPUT) ;
}
void loop() 
{
  if(digitalRead(buton1)==HIGH && durum==true)
  {
    while(digitalRead(buton1)==HIGH)
    {
      if(digitalRead(buton1)==LOW)
      break ;
    }
    digitalWrite(led1,HIGH) ;
    digitalWrite(led2,HIGH) ;
    digitalWrite(led3,HIGH) ;
    durum=false ;
  }
  if(digitalRead(buton1)==HIGH && durum==false)
  {
    while(digitalRead(buton1)==HIGH)
    {
      if(digitalRead(buton1)==LOW)
      break ;
    }
    digitalWrite(led1,LOW) ;
    digitalWrite(led2,LOW) ;
    digitalWrite(led3,LOW) ;
    durum=true ;
  }
}

Bu kod butona 1 kez basılınca 3 ledin birden yanmasını tektar basılınca ise 3 ledin birden sönmesini sağlar. 1 ledli uygulamadan tek farkı açıkçası 3 led olması. Bir diğer 3 ledli proje:

int buton1=2 ;
int led1=4 ;
int led2=5 ;
int led3=6 ;
void setup() 
{
  pinMode(led1,OUTPUT) ;
  pinMode(led2,OUTPUT) ;
  pinMode(led3,OUTPUT) ;
  pinMode(buton1,INPUT) ;
}
void loop() 
{
  if(digitalRead(buton1)==HIGH)
  {
    while(digitalRead(buton1)==HIGH)
    {
      if(digitalRead(buton1)==LOW)
      break ;
    }
    digitalWrite(led1,HIGH) ;
    delay(1000) ;
    digitalWrite(led1,LOW) ;
    digitalWrite(led2,HIGH) ;
    delay(1000) ;
    digitalWrite(led2,LOW) ;
    digitalWrite(led3,HIGH) ;
    delay(1000) ;
    digitalWrite(led3,LOW) ;
  }
}

Burada da 3 led sırası ile yanıp sönmektedir. Birinci led yanar 1 saniye sonra söner ve aynı anda 2 yanar. Sonra 2 söner ve aynı anda 3 yanar. Sonrasında 3 de söner ve program burada çalışmayı durdurur. Eğer butona tekrar basılırsa aynı işlem devam eder.

Arduino 1 Buton 2 Led

1 buton ve 2 led kullanılarak proje gerçekleştirilmiştir. Devre şeması:

int buton1=2 ;
int led1=4 ;
int led2=5 ;
boolean durum=true;
void setup() 
{
  pinMode(led1,OUTPUT) ;
  pinMode(led2,OUTPUT) ;
  pinMode(buton1,INPUT) ;
}
void loop() 
{
  if(digitalRead(buton1)==HIGH && durum==true)
  {
    while(digitalRead(buton1)==HIGH)
    {
      if(digitalRead(buton1)==LOW)
      break ;
    }
    digitalWrite(led1,HIGH) ;
    digitalWrite(led2,HIGH) ;
    durum=false;
  }
  if(digitalRead(buton1)==HIGH && durum==false)
  {
    while(digitalRead(buton1)==HIGH)
    {
      if(digitalRead(buton1)==LOW)
      break ;
    }
    digitalWrite(led1,LOW) ;
    digitalWrite(led2,LOW) ;
    durum=true ;
  }
}

Bu kod 2 ledi yakıp söndürmeye yarar. 2 led butona basılınca ikisi birden yanar. Butona basılınca ikisi birden söner.

Arduino 2 Buton 1 Led

2 buton 1 led kullanılarak proje oluşturulmuştur. Devre şeması incelendiğinde pull-down dirençleri ve ledden geçirilen akımı düşüren direnç görülmektedir. Devre şeması:

int buton1=2 ;
int buton2=3 ;
int led1=4 ;
void setup() 
{
  pinMode(led1,OUTPUT) ;
  pinMode(buton1,INPUT) ;
  pinMode(buton2,INPUT) ;
}
void loop() 
{
  if(digitalRead(buton1)==HIGH)
  {
    while(digitalRead(buton1)==HIGH)
    {
      if(digitalRead(buton1)==LOW)
      break ;
    }
    digitalWrite(led1,HIGH) ;
  }
  if(digitalRead(buton2)==HIGH)
  {
    while(digitalRead(buton2)==HIGH)
    {
      if(digitalRead(buton2)==LOW)
      break ;
    }
    digitalWrite(led1,LOW) ;
  }
}

Bu led projesinde de Buton1′ e basıldığında led yanar Buton2′ ye basıldığında led söner. Tek butonlu tek ledli devremizde benzer bir uygulama yapmıştık. Orada tek ledle aç kapa yapabiliyorduk. Burada ise aynı işlemi 2 led kullanarak gerçekleştirdik. Yani bu kısımda donanımdan zarar etmiş olduk. Fazladan 1 push buton daha kullanmak zorunda kaldık.

Yazılımsal olarak bir çok projede geliştirmeler yapılabilir. Bu geliştirmeler zaman ve para kaynını önleyebilir. Bunları yapabilmek için tecrübe sağlayarak kendimizi yazılımda geliştirmemiz gerekiyor.

Bir cevap yazın

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