Arduino’da dijital pinlerin nasıl giriş-çıkış olarak kullanılacağını anlatacağız.

Giriş pinlerine bağlı butona tıklayarak LED yakıp söndürme uygulaması yapacağız.

Devremizde kullanılan malzemeler:

  • Arduino UNO
  • LED
  • Buton
  • Direnç (220 Ohm)
  • Direnç (10K)

Devrede LED’in artı ucu Arduino’nun 8 nolu pinine bağlı. Eksi ucunda ise 220 ohm değerinde direnç var. Direncin diğer ucu GND’ye bağlı. Butonumuz ise 5 nolu pine bağlı. Butona bağlı direncin neden bağlandığını yazı içerisinde açıklayacağız.

Arduino’da pinler giriş (INPUT) veya çıkış(OUTPUT) olarak ayarlanabilir. Bu yazımızda bu modların kullanımında bahsedeceğiz. Yazımıza başlamadan önce Arduino’daki analog pinlerin de dijital giriş-çıkış olarak kullanılabileceğini hatırlatalım.

Pinlerin Tanımlanması

Arduino yazılımında pinlerin numaralarını doğrudan kullanabiliriz. Ama pinlere isim vermek yazılımın kullanımını ve okunabilirliğini kolaylaştıracağından pinlere isim vermek bize yardımcı olacaktır. Çalıştırmak istediğimiz devrede bir adet buton ve bir adet LED olduğu için pin isimlerini ledPini ve butonPini olarak vermemiz kullanışlı olur. Tanımlama şu şekilde yapılır:

Buton numaraları sayı olduğu için isimleri de integer tipinde tanımlanmalıdır. Pine vermek istediğimiz ismin başına  int  yazmamız değişkeni integer yani sayı tipinde tanımlamamızı sağlayacaktır. Peşinden eşittir işerate ile pin numarasını yazmamız gerekir. Yukarıda yazdığımız kodlarla 5 nolu pini butonPini isminde, 8 nolu pini ise ledPini isminde tanımladık. Bundan sonra yazılımın herhangi bir yerinde butonPini yazdığımızda 5 nolu pinle, ledPini yazdığımızda ise 8 nolu pinle işlem yapmış olacağız. Buton tanımlamalarını  setup() bloğunun üst kısmına yazman kullanışlı olacaktır.

Pinlerin Giriş Olarak Ayarlanması

Arduino’da pinler varsayılan olarak giriş olarak ayarlanmıştır. Yani bir pini giriş olarak kullanmak istiyorsanız hiçbir ayar yapmanıza gerek yok. Hatırlatmamız gereken bir kodu da şudur: Eğer bir pini giriş olarak ayarladıysanız ama pine hiçbir şey bağlamadıysanız giriş pininin değeri çevresel gürültü gibi etkenlerden etkilenerek değer değiştirecektir.

Arduino’da bir pini giriş olarak ayarlamak için pini INPUT moduna almalısınız. Bunu yapmak için setup() bloğu içinde şunu yazmak gerekir (setup() bloğu yazılımdaki ayar kodlarının yazıldığı bölümdür. Devreye enerji verildiğinde sadece 1 kere çalışacak kodlar buraya yazılır) :

Bizim yapacağımız devrede buton 5 nolu pine bağlandığı için şu kodu yazacağız:

Butonumuzun olduğu pini  butonPini  isminde tanımladığımız için aşağıdaki kodu kullanabiliriz:

Bir pini giriş olarak ayarladıysanız bu pine bir pull-up direnci bağlamanız yararınıza olacaktır. Giriş pinine bir direnç bağlayı bu direnci +5V’a bağlamanız pull-up olmasını sağlayacaktır. İsteyen +5V’a bağlamak yerine GND(Ground)’ye de bağlayabilir. Bu bağlantıya da pull-down bağlantı denir. Aşağıda pull-up ve pull-down bağlantı şekilleri gösterilmektedir.

Resimlerden de anlaşılacağı gibi pull-up bağlantıda butona basılmadığında giriş pininde HIGH (5V) değeri, basıldığında ise LOW (0V) değeri okunacaktır. Pull-down bağlantıda ise durum tam tersidir. Yani butona basılmadığında giriş pininde LOW(0V) değeri, basıldığında ise HIGH(5V) değeri okunacaktır. 10K değerinde bir direnç Pull-up ve pull-down direnci olarak kullanmak için yeterlidir.

Bir pini giriş olarak ayarladığınızda direnç bağlamadan da pull-up özelliğini kullanmak mümkündür. Bunun için INPUT_PULLUP moduna almak yeterlidir. Gerekli kod şöyledir:

Bu kodu yazdığınızda belirttiğiniz pin hem giriş olarak ayarlanmış oluyor hem de Arduino’nun pin girişindeki dahili pull-up direnci aktif oluyor. Çoğu arduino kartlarında bu pull-up direncinin değeri 20K’dır. INPUT_PULLUP modunu kullandığınızda pine bağlayacağınız buton veya sensörün diğer ucunu yukarıdaki pull-up bağlantı örneğinde olduğu gibi GND’ye bağlamanız gerekmektedir. Böylece butona basıldığında LOW, basılmadığında HIGH değeri okunacaktır.

NOT: 13 nolu pini giriş pini olarak kullanmak bazı sorunlara yol açabilir. Çünkü Arduino üzerinde bu pine bir LED ve bir direnç lehimlenmiştir. Bu yüzden giriş pini olarak ayarlandığında sağlıklı değerler okumak zorlaşacaktır. Eğer ille de 13 nolu pini giriş olarak ayarlamanız gerekiyorsa INPUT moduna alıp pull-down direnci bağlayın.

Pinlerin Çıkış Olarak Ayarlanması

Bir pini çıkış olarak ayarlamak için OUTPUT moduna almanız gerekir. Bunu yapmak için setup() bloğu içine şu kod yazılmalıdır :

Bizim devremizde LED 8 nolu pine bağlandığı için şu kodu yazacağız:

Daha önce LED’in bağlandığı pini  ledPini  isminde tanımladığımız için kodu şu şekilde kullanabiliriz:

Bir pin çıkış olarak ayarlandığında 40 mA’e kadar bir çıkış akımı verebilir. Bu akım LED yakmak için yeterlidir (Seri direnç bağlamayı unutmayın. Yoksa LED bozulacaktır. Biz devrede 220 ohm direnç kullandık. 5V için 220 ohm direnç bağlama gerekir.). Fakat çoğu röleyi sürmek veya motor çalıştırmak için yeterli değildir. Bunun için başka devre elemanları kullanılır. Yüksek akım gerektiren bir cihazı Ardıino pini ile direkt sürmeye kalkarsanız pini veya Arduino’nun çipini yakabilirsiniz. Bu yüzden çıkış pinlerine 470 Ohm veya 1K değerinde direnç bağlamak faydalı olacaktır.

Butona Basılıp Basılmadığının Kontrolü

Ayarları  setup()  bloğu içine yazmıştık. setup() bloğu enerji verildiğinde sadece 1 kere çalışıyordu. Yazılımımızın asıl kodlarını  loop()  bloğu içine yazacağız. Bu blok devrede enerji olduğu süre boyunca aynı kodların tekrar tekrar çalışmasına yarar.

Buton pinindeki değeri okumak için aşağıdaki kod yazılmalıdır:

Önce butonDurum isminde bir değişken tanımlıyoruz. Sonra da digitalRead() komutu ile de butonun bağlandığı pinin değerini okuyoruz. Okuduğumuz bu değeri butonDurum değişkeninin içine yüklüyoruz. Butona basıldıysa butonDurum değişkeninin değeri LOW, basılmadıysa HIGH oluyor.

Butona basılıp basılmadığını anlamak için  if  komutunu kullanmamız gerekiyor. Komutun genel kullanımı şu şekildedir:

Bizim kontrol edeceğimiz durum butona basılıp basılmadığı olacak. Butonun bağlandığı pinin durumunu kontrol etmemiz gerekiyor. Burada dikkat etmemiz gereken şey, yukarıda pinlerin giriş olarak ayarlanması bölümünde anlattığımız pull-up ve pull-down bağlantı şekli. Pull-up bağlantı yaptığımız pinde butona basılınca LOW değerini okuruz. Pull-down bağlantı yaptığımız pinde ise butona basınca HIGH değeri görülür.

Biz devremizde pull-up bağlantı yaptığımız için kodumuzun şu şekilde olması lazım:

Şimdi ise butona basılmadığında çalışacak kodların yazılacağı bölümü ayarlayalım. Bunun için  if  komutunun altına  else komutu eklememiz gerekiyor. else  komutu  if  komutu ile kontrol edilen durum gerçekleşmediğinde çalışacak kısmı belirler. Yazımı şu şekildedir:

Çıkış Pinine Gerilim Verilmesi ve Gerilimin Kesilmesi

LED bağladığımız 8 nolu pine gerilim vermek yani LED’i yakmak için şu komut kullanılır:

LED’in bağlı olduğu pini  ledPini olarak tanımladığımız için komutu şu şekilde kullanabiliriz:

 

LED bağladığımız pindeki gerilimi kesmek için ise:

veya

komutlarını kullanabiliriz.

Görüldüğü gibi,  digitalWrite  komutundan sonra parantez içine LED’in bağlandığı pini ve LED’in olmasını istediğimiz durumu yazıyoruz. HIGH durumunda LED yanıyor, LOW durumunda ise sönüyor.

Yazılımın Son Hali

Kodlarımızı birleştirecek olursak;

Artık devre ve yazılımımız tamamlandı. Yazılımı yükleyip devrenizi test edebilirsiniz.

Faydalı bir yazı olduğu ümidiyle diğer yazımızda görüşmek üzere…


Benzer Yazılar

Arduino Dersleri – Pwm Yapma

PWM (Pulse Width Modulation) Darbe Genişlik Modülasyonu manasına gelir. Basit olarak anlatmak gerekirse bir LED'in parlaklığını veya bir motorum dönüş hızını PWM ile ayarlayabiliriz.

PicBasic Pro – BUTTON Komutu

PicBasic Pro'da kullanılan Button komutunun ne işe yaradığını ve nasıl kullanıldığını anlatmaya çalışacağım. Button komutu Pic'in herhangi bir pinine bağladığımız butona basılıp basılmadığını kontrol etmemzi ve gerekli komutları çalıştırmamızı sağlayan komuttur.

Arduino Dersleri – Led Yakma

Bu dersimizde Arduino ile ilk uygulamamızı yapacağız. LED yakmak Arduino programının örnek kodları arasında yer alır. LED yakma örneği basit ama programın çalışma mantığını anlamak açısından önemli bir örnektir. 

Arduino Dersleri – Arduino Nedir?

Arduino , kolay donanım ve yazılım kullanımına sahip bir açık kaynak elektronik platformdur. 


Facebookta Paylas