Arduino Push Buton İle Led Yakma Devresi

Merhaba Arkadaşlar. Bu sefer yine basit bir kullanım yazısı ile karşınızdayız. Bu devre ile elektronik kartlarda çok kullanılan push buton kullanımını öğreniyor olacağız. Bu devreye başlarken bir konuya açıklık getirmemiz gerekiyor. Öncelikle bu devrede neden bir direnç ile “kısa devre” benzeri bir bağlantı yaptık ondan bahsetmek istiyorum.

Push butonun ikinci bacağı (arduino pinine gelen çıkış bacağı diyebiliriz) üzerine bir de paralel olarak bir dirençli GND bağlantısı yaptık. Bu bağlantının amacı, butona bastıktan ve çektikten sonra butonun o bacağında kalan statik elektriği (veya parazitte diyebiliriz) topraklamak. Direnç kullanmamızın sebebi ise butona basıldığında bütün akımın GND’ye doğrudan giderek kısa devre yapmasını engellemek.

Özellikle bu konudan bahsetmek istedim. Sonrasında bu devreyi kullanarak ve geliştirerek ardunio üzerinden her türlü buton ile haberleşme ve işlem yaptırma becerisini kodunuzu geliştirerek siz de sağlayabilirsiniz. Elbette daha ilerleyen zamanda arduino ile yapacağımız kompleks projelerde de bu butona ve farklı işlevlerine yer veriyor olacağız.

Şimdi isterseniz devre elemanlarımızı kısaca tanımaya geçelim.

  • Arduino Uno kartı
  • 1 adet Led
  • 1 adet Push buton
  • 1 adet 330ohm direnç
  • 6 adet dişi > erkek jumper kablo

Devre şemamızı da aşağıdaki şekilde oluşturabiliriz. Dilerseniz siz bunu bir board üzerinde de yapabilirsiniz.

Evet aslında devremizin şeması bu kadar basit. Ancak burada bağlantılara kesinlikle dikkat etmemiz gerekiyor. Aksi taktirde kısa devre, vs… olması kaçınılmaz olacaktır. Devremizdeki direncin sebebini de yukarıda anlattığımız üzere kullanmamazlık etmeyelim.

Bu işlem için herhangi bir kütüphaneye ihtiyacımız yok. Sadece dijital okuma ve yazma fonksiyonlarını kullanarak devremizi takip edeceğiz. Şimdi öncelikle pinlerimizi tanımlayarak başlayalım.

int ledPin = 8;
int inPin = 2;
int val = 0;

Ve Setup fonksiyonumuza geçelim ve giriş ve çıkış pinlerimizi tanımlayalım.

void setup() {
  pinMode(inPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

Veee sıra geldi loop kısmına. Yani kodumuzun asıl çalışacağı ve yorumlamayı asıl yapacağımız kısıma.

void loop(){

  val = digitalRead(inPin);
  
  if (val == 1)
  {
    digitalWrite(ledPin, HIGH);
    delay(1000);
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }
}

Burada gördüğünüz üzere inPin (buton) değişkenimizden gelen değeri okuduk ve eğer “1” ise yani sinyal geldi ise digitalWrite() fonksiyonunu başlatarak ledPin olarak belirlediğimiz sekizinci pinimize sinyal gönderdik ve hemen altında bu sinyali 1000 milisaniye yani tam 1 saniye tuttuk. Ardından tekrar loop() devam ederken kodumuz tekrar okumada tekrar bir basma görmediği için bu sefer “else” kısmına giriş yaparak çıkış gerilimini keserek ledimizi söndürdü.

Bu işlemin sonunda oluşturduğumuz devrede, butona basılı tuttuğumuz sürece yanık duran ve bıraktığımızda da maksimum 1 saniye içerisinde sönen bir push buton ile kontrol edilen led devresi yapmış olduk.

Push Buton İle Led Yakma Devresi Kodunun Tamamı

int ledPin = 8;
int inPin = 2;
int val = 0;

void setup() {
  pinMode(inPin, INPUT);
  pinMode(ledPin, OUTPUT);
}

void loop(){

  val = digitalRead(inPin);
  
  if (val == 1)
  {
    digitalWrite(ledPin, HIGH);
    delay(1000);
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }
}
Arduino İle Sıralı Led Yakma Devresi

Burada basit bir led kullanım örneği göreceğiz. Öncelikle komponentlerimize geçelim isterseniz.

  • Arduino Uno veya en az 5 girişli arduino kartı
  • 5 adet led
  • 10 adet dişi > erkek jumper kablo

Şemamız aşağıdaki gibi

Gördüğünüz gibi ledlerin tüm GND (-) bacakları ortaklaşıp tek bir GND çıkışına giriyor. Onun dışındaki tüm bacaklar sırasıyla 2-3-4-5-6 girişlerine giriyor. Böylece artık arduinodaki dijital çıkışlar ile ledlerimizi tetiklemiş olacağız.

Şimdi değişkenlerimize ve tanımlarımıza gelelim.

int led_kirmizi = 2;
int led_mavi = 3;
int led_yesil = 4;
int led_sari = 5;
int led_beyaz = 6;

int hareket_hizi_ms = 1000;

Setup kısmında ise dijital çıkışlarımızı tanımlayalım ve arduinomuza bunu bildirelim.

void setup() {

  pinMode(led_kirmizi, OUTPUT);
  pinMode(led_mavi, OUTPUT);
  pinMode(led_yesil, OUTPUT);
  pinMode(led_sari, OUTPUT);
  pinMode(led_beyaz, OUTPUT);
  
}

Bundan sonra işlem sadece loop kısmını yazmaya geldi.

void loop() {

  digitalWrite(led_kirmizi, HIGH);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, HIGH);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, HIGH);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, HIGH);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, HIGH);
  delay(hareket_hizi_ms);
}

İşte bu şekilde artık belirttiğimiz gibi 1000 ms yani 1 saniye ara ile sıralı olarak bir ledimiz yanacak ve 1 saniye sonra o sönüp hemen yanındaki şeklinde devam edecek.

Arduino İle Led Kullanımı ve Sıralı Led Yakma Devresi Kodları Tamamı

int led_kirmizi = 2;
int led_mavi = 3;
int led_yesil = 4;
int led_sari = 5;
int led_beyaz = 6;

int hareket_hizi_ms = 1000;

void setup() {

  pinMode(led_kirmizi, OUTPUT);
  pinMode(led_mavi, OUTPUT);
  pinMode(led_yesil, OUTPUT);
  pinMode(led_sari, OUTPUT);
  pinMode(led_beyaz, OUTPUT);
  
}

void loop() {

  digitalWrite(led_kirmizi, HIGH);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, HIGH);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, HIGH);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, HIGH);
  digitalWrite(led_beyaz, LOW);
  delay(hareket_hizi_ms);

  digitalWrite(led_kirmizi, LOW);
  digitalWrite(led_mavi, LOW);
  digitalWrite(led_yesil, LOW);
  digitalWrite(led_sari, LOW);
  digitalWrite(led_beyaz, HIGH);
  delay(hareket_hizi_ms);
}