Categories
Arduino ile Programlama

Arduino Programlama ile Led Yakma ve Söndürme Devresi

Merhaba arkadaşlar,
Arduino programlama serimizde bir çok devre kuracak ve çeşitli uygulamalar geliştireceğiz. Arduino ve elektronik konusuna aşina değilseniz, programlama tecrübeniz yoksa veya daha önceden uğraşıp sonrasında ara verdiyseniz korkmayın. Tüm uygulamaları geliştirirken, adım adım açıklamaya özen gösterdik. Hazırsanız, hadi başlayalım!

Programlama öğrenirken, dilin temel özelliklerini kullanmak amacıyla geliştirilen ilk program genelde “Hello, World!” yani “Merhaba, Dünya!” programı olarak adlandırılır. Arduino dünyasında “Hello, World!” programı bir LED’i periyodik olarak yakıp söndürme uygulaması olarak düşünülebilir. Biz de ilk olarak bu uygulamayla yani led yakıp söndürme (İngilizce adıyla Led Blink) ile başlayacağız. Başlamadan önce kısaca not etmek isterim, eğitim setimizdeki uygulamaların benzerleri arduino’nun resmi sitesinde de bulunmaktadır, isterseniz oradaki içeriklere de buradan göz atabilirsiniz.

Led Blink devresi için gerekli malzemeler:

  • Arduino UNO
  • LED (Herhangi bir renk)
  • Direnç
  • Breadboard
  • Jumper kablosu

Eğer dilerseniz alttaki linkleri kullanarak yazının ilgili bölümüne atlayabilirsiniz.

İçindekiler

  1. Led
  2. Direnç
  3. Breadboard
  4. Arduino
  5. Devre Kurulumu
    1. Led’i Breadboard’a Yerleştirme
    2. Direnci Breadboard’a Yerleştirme
    3. Kablolama
  6. Program

Herşey bir LED yakarak başlıyor. Peki LED nedir ve ne anlama gelir?

LED Nedir?

LED, İngilizcede Light Emitting Diode kelimesinin baş harflerinden oluşan bir kısaltmadır. Türkçeye “Işık Yayan Diyot” olarak çevrilebilir. Yani led özel tipte bir diyottur. Diyotların en karakteristik özelliği tek yönde akım geçirmesidir. Elektronik devrelerde çok yaygın bir kullanım alanlarına sahiptir. Biz led’i standart ampullerde olduğu gibi ışık üretmek amacıyla kullanacağız.

Devrelerimizi kurarken genelde 5 mm’lik çeşitli renklerde ışık verebilen standart ledleri tercih edeceğiz. Led, devre şemasında alttaki gibi gösterilmektedir. Ancak tahmin edebileceğiniz üzere, gerçek hayatta led üçgen değildir 🙂 Piyasada satılan ledler çeşitlilik göstermektedir. Ancak basit olabilmesi adına biz resimdeki gibi standart 5 mm’lik ledler kullanarak devrelerimizi kuracağız. Led’in biri uzun diğer kısa iki adet bacağı bulunmaktadır. Hatırlarsanız led tek yönde akım iletiyor demiştik. Yani akım uzun olan bacaktan, kısa olana bacağa doğru akıyor diye düşünebilirsiniz.

devre elemanı standart 5mm led ve devre şemasında gösterimi
Led’in devre şemasında ve gerçekteki görünümü

Direnç Nedir?

Kuracağımız devrenin bir başka elemanı olan dirençten bahsedelim.

Direnç adından da anlaşılabileceği gibi, elektronik devrelerde akımı sınırlandırmak, belli bir seviyede gerilim voltajı elde etmek için kullanılır. Eğer direnç olmasaydı devre üzerinde akan akımı kontrol etmek çok zor veya hiç mümkün olmazdı.

Breadboard Nedir?

Herhangi bir devre tasarımı yaparken simülasyon ve test amaçlı çeşitli araçlar kullanılmaktadır. Bilgisayar ortamında kullanılan araçları bir kenara bırakacak olursak breadboard devre tasarımı esnasında sıklıkla kullanacağımız araçların başında gelmektedir. Eğer tasarım sonrasında gerekli testleri yapmadan devreyi lehimlersek bir hata çıkması veya sadece değişiklik yapmamız gereken durumlarda bile oldukça zorlanacağımız çok açık. Breadboard yatayda ve dikeyde birbirine bağlı kablolardan oluşan bir yapıya sahiptir.

Resimde de görebileceğiniz üzere yatayda gruplu kısımlar birbirine kısa devreyken (yani birbirine bağlı), breadboard’un dikeydeki kısımları da kendi aralarında kısa devre konumundadır (yani birbirine bağlı). Devre kurma aşamasında breadboard kullanımına yine değineceğiz.

Breadboard

Arduino

Arduino açık kaynaklı donanım ve yazılımdan oluşan bir elektronik platformudur. Arduino ile Philips Hue benzeri aydınlatma objelerinden tutunda, sesle, hareketle kontrol edilebilen robotlar gibi çok çeşitli uygulamalar geliştirmek mümkündür. Internette, ve arduino’nun resmi sitesinde bu tip uygulamalara ait sayısız örnek bulabilmeniz mümkün.

Arduino platformu bahsettiğimiz gibi donanım ve yazılım olmak üzere iki ana bileşenden oluşur.

Arduino Yazılımı

Arduino programlarına “sketch” adı verilir. Bu programlar, arduino IDE (Integrated Development Environment) kullanılarak geliştirilir. IDE sayesinde, geliştirdiğimiz kodlar, arduino kartının anlayacağı formata çevrilerek, arduino’ya yüklenir.

Arduino Donanımı

Arduino donanımı yazdığımız programın çalıştığı kısımdır. Arduino donanımı, mikro işlemcileri ve çeşitli sensörleri üzerinde barındırmaktadır. Bu sensörleri kullanarak, gerçek dünya ile iletişim kurabilir ve geliştirdiğimiz programın çalışmasını sağlayabilir.

Arduino farklı amaçlar için çok çeşitli kartlar üretmiştir. Bu kartların tamamına resmi sitelerinden ulaşabilirsiniz. Arduino, açık kaynaklı olduğundan, oldukça fazla klon seçeneğide bulunmaktadır. Bu kartların, orjinal olandan neredeyse hiçbir farkı yoktur, ve tamamen aynı işi görmektedir.

Biz devrelerimizi kuruyorken, klon arduino uno r3 kartı ile çalışacağız. Arduino Uno, ATmega328P işlemcisini kullanmaktadır. Arduino UNO, 14 adet dijital giriş / çıkış pini , 6 adet analog girişi, 16 MHz kristali, USB bağlantısı, reset butonu gibi geliştirme yaparken ihtiyacınız olacak bir çok bileşeni barındırmaktadır. Bunun yanısıra, uzun yıllardır piyasada olduğundan, uno ile ilgili bir çok kaynak bulunabilmektedir.

Devre Kurulumu

Bu kadar teorik bilgi yeter. Hadi, devremizi kurmaya başlayalım.

Led’i Breadboard’a Yerleştirme

Breadboard’u yatay bir şekilde tutup resimdeki gibi led’i breadboard’a yerleştiriyoruz. Hatırlarsanız, breadboard yatayda aynı kablo gibi düşünülebileceğinden iki bacağın yatayda aynı sıraya gelmemesine özen göstermeliyiz.

arduino programlama ya hazırlanırken devreyi kurmanın ilk adımı.
Led’in breadboard’a yerleştirilmesi.
Direnç’i yerleştirme:

Led’i yerleştirdikten sonra direncin bir bacağını led’in olduğu sıraya diğer bacağını ise herhangi bir sıraya yerleştiriyoruz.

arduino programlama ya hazırlanırken devrenin ikinci adımı.
Direnç’in devreye eklenmesi
Arduino Bağlantıları

Su anda devremiz hazır diyebiliriz. Devremizin tek eksik kalan kısmı arduino bağlantılarını da alttaki gibi yapalım. Arduino’nun 10. Bacağını direnç’in açıkta kalan bacağına, arduino’nun GND bacağını ise LED’in kısa bacağının olduğu kısma bağlıyoruz.  Bağlantıları yaparken, resimdeki gibi jumper kablolarını kullanabilirsiniz.

arduino programlama ya hazırlanırken devrenin üçüncü adımı
Arduino’ya jumper kablolarıyla bağlantı
arduino programlama ya hazırlanırken devrenin son adımı

Devremizi kurduğumuza göre, arduino programlama ya başlayabiliriz.

Program

Programı geliştirmeye başlamadan önce, Arduino IDE’yi arduino’nun resmi sitesinden, indirelim. Arduino, web editörü seçeneğiniyle tamamen online geliştirme ortamını da sunuyor, ama biz indirerek geliştirmeyi tercih edeceğiz.

Arduino IDE’si Windows, Mac ve Linux uyumludur, dolayısyla bu işletim sistemlerinden herhangi birini kullanıyorsanız sorun yaşamayacaksınız. İndirme işlemi tamamlandıktan sonra, kullandığımız işletim sistemine göre kurulum işlemini tamamlayıp IDE’yi açalım.

IDE açıldıktan sonra, ilk sketch’i yani programımızı geliştirebiliriz.

Öncelikle Arduino’nun 10’uncu pin’ini lede bağladığımıza göre bu pin’i çıkış olarak tanımlayalım. “Çıkış” demek bu pin’den gelen 5V sinyali sayesinde led’i yakabileceğiz. Burada devreyi kurarken, 10’uncu pin’i devrede sinyal pini olarak sectiğimiz için bu şekilde yapıyoruz. Dilerseniz başka herhangi bir dijital çıkış pin’ini de seçip, devreyi ona göre kurup, çıkış olarak tanımlayabilirsiniz.

arduino programlama
void setup ()

Çıkış tanımlama işini programın setup() kısmında yapıyoruz. Bu kısımda yapılan tanımlamalar ana program (döngü) kısmı çalışmadan önce tek sefer yapılacak ve geçerli olacaktır diye düşünebilirsiniz. Gördüğünüz gibi, pinMode(10,OUTPUT) yazarak 10.pin’i çıkış olarak tanımladık. Tekrar hatırlatalım, bu tanımlamayı yapmamızdaki amaç, bu pin’den 5V’luk sinyali gönderebilmek.

void loop()

Arduino programlarken, yazdığımız kod satır satır işlenmektedir. Devremizdeki led’in hiç durmadan yanıp sönmesini istediğimizden, programın loop (kelime anlamı döngü) kısmında kodumuzu yazmaktayız. Bu sayede, program en son kodu olan 1000ms (1 sn) bekledikten sonra tekrar başa dönerek led’i tekrar yakacak ve sırasıyla 1000ms (1 sn) gecikme vererek söndürecektir. Gördüğünüz üzere, dışarıdan bir müdahalede bulunulmadıkça program çalışmaya devam edecek ve led yanıp sönecektir.

Led Blink (blink’in kelime anlamı göz kırpma) arduino programı, adından da anlaşılabileceği üzere, uygulama çalıştığı sürece sürekli olarak yanıp sönen bir veya birden fazla led’den oluşabilir. Mantıksal açıdan bakacak olursak, belirli bir gecikme ile gönderilecek mantıksal 1 ve 0 sinyali bizim programımız için yeterli olacaktır. Burada bir konuya açıklık getirelim; 10’uncu pin’den göndereceğimiz 5V sinyali mantıksal 1’e ve 0V sinyali ise mantıksal 0’a denk gelecektir.

Peki bu 1 ve 0 ‘ları Nasıl Gönderiyoruz?

Mantıksal “1” sinyalini (5V)gönderme kısmını, digitalWrite(10, HIGH) ile, mantıksal “0” sinyalini (0V) gönderme kısmını ise digitalWrite(10, LOW) kodu ile elde edebiliriz. Tahmin edebileceğiniz gibi, led 5V’luk sinyali aldığında ışık verirken, 0V’ta ise ışık vermeyecektir. Ancak bu iki işlem arasında bir gecikme koymazsak bu geçiş çok hızlı olacağından gözümüzün bunu farketmesi çok zor olacaktır. Bu sebeple iki geçiş arasına 1 sn (1000ms) gecikmeyi delay(1000) komutu ile koymaktayız. Burada 1 sn tamamen rastgele seçilmiş bir değerdir, ve bu değeri düşürürseniz led daha hızlı yanıp sönerken, yükselttiğinizde ise daha yavaş yanıp sönecektir.

Eğer mantıksal olarak devrenin çalışmasını özetlemek istersek şöyle bir seri elde ederiz: 1,1000ms,0,1000ms,1,1000ms, 0,1000ms,…,1,1000ms,0,1000ms .aynı şekilde, elektriksel olarak ise 5V,1000ms,0V,1000ms, 5V, 1000ms,0V,1000ms,…,5V,1000ms,0V,1000ms olarak gösterilebilir.

1 saniye arayla yanıp sönen led devresi

Bu yazımızda, arduino ile bir led’i yakıp söndürme devresini adım adım kurarak, kodlamasını gerçekleştirdik. Arduino, programlama açısından oldukça kolay olmasının yanı sıra, gelişmiş özellikleri sayesinde çok çeşitli uygulamalar geliştirmemize imkan sağlamaktadır. Eğer herhangi bir soru veya öneriniz varsa, lütfen info@duinolabs.com adresine gönderin, 24 saat içinde cevaplayalım. Bir sonraki yazımızda görüşmek üzere, hoşçakalın!

Leave a Reply

Your email address will not be published. Required fields are marked *