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 I2C Modülü Kullanımı

Merhaba Arkadaşlar. Bu yazıda sizlere 16×2 LCD ekrandan çıkan yaklaşık 10-12 kabloyu aslında 4 basit kabloya indirecek bir devre kartından bahsetmek istiyorum. Bu devrenin adı i2c (i kare c).

I2C Ne İşe Yarar?

Aslında bu sorunun cevabı basit. LCD ekranımız için gerekli olan 16 adet çıkışı kendi üzerindeki kontrol entegresi ve devresi ile sadece 4 adete indirerek, gelen sinyali kendisi yorumlar ve yine 16 pin ile haberleşecek şekilde LCD ekranımıza gönderir.

I2C Kartı Görseli

İşte aslında bu kadar basit bir kart. Ancak elbette içeriği o kadar da basit olmasa gerek. Peki bu I2C kartı nasıl bağlanıyor? Nasıl veri gönderiliyor?

İsterseniz bu sorunun cevabına örnek bir bağlantı şeması ve devamında oraya yazı göndereceğimiz bir ekran ile yanıt veriyor olalım.

Arduino – I2C Bağlantı Şeması

Gördüğünüz üzere pin bağlantılarımız görseldeki gibi;

  • SCL => Analog 4 Pinine (A4)
  • SDA => Analog 5 Pinine (A5)
  • VCC => +5V Pinine
  • GND => GND Pinine

Bu şekilde bağlantılarımızı yaptıktan sonra gelelim kodumuza ve ekrana iki satır olarak yazdıracağımız “Merhaba Dunya” koduna. Bir kodu ilk defa çalıştırıyorsak “Merhaba Dünya” adettendir bilen bilir. 🙂

Arduino – I2C Ekranına Yazı Yazdırma Kodları

Öncelikle her zaman olduğu gibi kütüphanelerimizi ekleyerek başlayalım. Burada “FaBoLCD_PCF8574” kütüphanesini kullanarak I2C’nin ekrana yazı yazdırmasını sağlıyor olacağız. Öncelikle Kütüphanemizi tanımlıyoruz. (Kütüphaneyi yazının en sonundaki linkten indirebilirsiniz.)

#include <virtuabotixRTC.h>

Şimdi de gelelim değişkenlerimizi tanımlamaya.

FaBoLCD_PCF8574 lcd;

Evet işlem bu kadar basit aslında. LCD değişkenimizi tanımladık ve şimdi sıra setup fonksiyonumuzda. Burada da aslında tek satırda I2C ekranımızın ölçülerini veriyor olacağız.

void setup(void) {
  lcd.begin(16, 2);
}

Şimdi de sıra geldi son loop() fonksiyonumuzda işlemlerimizi yapmaya ve tabii ki sonlandırmaya.

void loop(void) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Merhaba");

  lcd.setCursor(1, 0);
  lcd.print("Dunya");

  delay(5000); //Burada 5 saniye bekliyoruz ki ekran sürekli pır pır etmesin diye...
}

İşte işlemimiz bu kadar basit. Zaten I2C’nin asıl kullanıdığı port olan A4 ve A5 portu kendi kütüphanesinde kayıtlı olduğundan ekstra pinleri göstermemize gerek kalmadı.

İşte bu şekilde projemize enerji verip yüklemeyi tamamladıktan sonra ekranda yazının belirdiğiniz görüyor olacaksınız.

Arduino I2C Örnek Kullanımı Kodları – Tamamı

#include <virtuabotixRTC.h>

FaBoLCD_PCF8574 lcd;

void setup(void) {
  lcd.begin(16, 2);
}

void loop(void) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Merhaba");

  lcd.setCursor(1, 0);
  lcd.print("Dunya");

  delay(5000); //Burada 5 saniye bekliyoruz ki ekran sürekli pır pır etmesin diye...
}

FaBo_212_LCD_PCF8574 Kütüphanesini indirmek için tıklayın.