Arduino ile Yanıp Sönen (blink) Led programı

arduino_blink

Bu yazıda, Arduino üzerinde bulunan led in (işaretli yerdeki led), belirli aralıklarla yanıp sönmesini sağlayan programı yazacağız ve program satırlarının da bu arada ne anlama geldiğini açıklamaya çalışacağız. Lütfen yazıyı sonuna kadar okuyun, aşağı kısımlarda programın açıklamaları yer alacaktır.

Resimde görüldüğü gibi Arduino kartın 2 kenarında, boylu boyunca giriş / çıkış konnektörleri vardır. Bu konnektörler sayesinde Arduino’ya  analog ve dijital sensörler, shieldlar, motorlar v.s bağlanılabilir ve ayrıca bağlanılan sensör gibi elemanların güç beslemeleri power kısmındaki çıkış pinlerinden sağlanabilir. tabi bunları yaparken de çok dikkatli olmak gerekir, hem arduinoyu hem de kullanılan sensör v.b ekipmanları yakabilirsiniz.

Resimde görülen kırmızı daire içerisindeki ‘L’ etiketi ile belirtilen led, bu yazıda göreceğimiz programda kullanacağımız led dir. Yani bu program için Arduino ile devre kurmaya gerek kalmayacak. Programı yazıp, Arduinoya yükleyip çalıştırdığımızda ‘L’ isimli ledi gözlemleyip programımızın nasıl çalıştığını görebiliriz.

Ayrıca bu programı Arduino uygulama yazılımıdaki  resimde gösterildiği gibi de açabilrsiniz.

İsterseniz programı yazın, isterseniz de aşağıda görüldüğü gibi Arduino IDE uygulamasında programı hazır bir şekilde editörünüzde açabilirsiniz.

arduino_blink2

/*
Blink
LED i sürekli olarak 1 saniye yakar ve sonra 1 saniye söndürür.

Çoğu arduino üzerinde kontrol edebileceğiniz bir led bulunur. Uno ve Leonarda model Arduinolarda bu led 13 nolu pine bağlanmış bulunmaktadır. Eğer elinizdeki arduino da bu ledin hangi pine bağlandığını bilmiyorsanız http://arduino.cc sitesinden modele uygun dökümanı inceleyerek öğrenebilirsiniz.

( Scott Fitzgerald’ ın açıklamalarından çevrilmiştir.)

*/
// void setup() fonksiyonu Arduino’ya ilk enerji verdiğinizde yada reset butonuna //bastığınızda 1 kez çalışır. void kelimesi (fonksiyon tip belirteci), bu fonksiyonun //herhangi bir değer döndürmeyeceğini belirtir. bu konuları blogdaki C ile //programlama yazılarında bulabilirsiniz

void setup() {
//13 nolu dijitak pini çıkış olarak ayarlıyoruz, çünkü ‘L’ ledi buraya bağlı
pinMode(13, OUTPUT);
}

// void loop() fonksiyonu, Arduinoya enerji verdikten sonra çalışmaya başlar ve enerji //kesilene yada reset butonuna basılana kadar sonsuza dek çalışır.
void loop() {
digitalWrite(13, HIGH);   //LED i yak (HIGH 13 nolu pindeki voltaj seviyesi)
delay(1000);                       // 1 saniye (1000 milisaniye) bekle
digitalWrite(13, LOW);// LED i söndür (LOW 13 nolu pindeki voltaj seviyesi)
delay(1000);                       // 1 saniye (1000 milisaniye) bekle
}

Programımızı açtıktan hemen Arduino UNO muzun USB bağlantısını yapıp, programı arduinomuza yükleyebiliriz. program çalışmaya hazır haldedir. herhangi bir değişikliğe gerek yoktur.

Yüklemek için ise;

arduino_blink3

upload butonuna basmamız yeterli.

Eğer yüklemeyi başaı ile yaparsanız, yükleme sırasında aşağıdaki gibi görülecektir.

arduino_blink_upload

Eğer aşağıdaki gibi bir görüntü ile karşılaşırsanız, yükleme başarısız olmuş demektir. USB bağlantınızın doğru olduğunu kontrol edin yada USB COM port ayarlarını yeniden yapın.

arduino_blink_upload_hata

Programı doğru yüklediğinizi ve Arduinonunuzu çalıştırdığınızı varsayıyorum. Peki bu programda neler oluyor, bu yazılar ne?

/* ve */ işaretleri arasına yazılan yazılar program tarafından algılanmaz, yoksayılır. Programla ilgili çıklamalarınızı yazmak içn veya yazmış olduğunuz bir fonksiyonun ne işe yaradığını açıklayan yazılar yazmak için kullanılır. Bunun dışında hiçbir işe yaramaz, bu işaretler arasında kalan bölüme istediğinizi yazabilirsiniz. herhangi bir kural yoktur.

// işareti tek bir satır için açıklama yazmaya yarar, yukarıdakinden tek farkı, bu işareti gördükten sonra program satır sonuna kadar olan kısmı yoksayar. işleme tabi tutmaz.

void setup()  bu bir fonksiyondur, arduinoya ilk enerji verdiğimizde, yada reset tuşuna basıldığında 1 kez çalışır ve durur. arduino açık kladığı sürece resete basmadığımız zaman çalışmaz. bu fonksiyon içinde, Giriş/Çıkış prot ayarlamaları, Haberleşma ayarlamaları gibi ilk çalışma esnasında yapılacak olan ayarlamalar yapılır. Zaten adı üstünde setup.

Fonksiyonlar () işaretleri ile gösterilir. ( ) işaretleri içine değer döndüren fonksiyonlarda fonksiyonun elemanları yazılır.  setup() için böyle birşey sözkonusu değil.

void setup() {
fonksiyonun kodu bu kısma yazılır
}

{ işaretinden sonra kodu yazmaya başlarız ve } işareti ile de fonksiyonu bitirimiş oluruz.         { ve } işaretleri arsaında kalan kısımdaki kodlar, o fonksiyona aittir.

 

void loop() da bir fonksiyondur. Bu fonksiyon içine yazdığımız kodlar, Arduinonun enerjisi kesilene kadar, reset tuşuna basılana kadar veya Arduinoya yeni bir program yükleyene kadar durmadan çalışır. Programda sürekli olarak tekrarlayacağımız adımları bu kısma yazarız.

digitalWrite(13, HIGH);        bir deyimdir. digitalWrite komutu (aslında o da bir fonksiyondur ama şimdilik komut diyelim) ile 13 nolu pini HIGH (5v) yapıyoruz ve o pine bağlı olan elemana 5v gönderiyoruz. Böyle de düşünülebilir.

; işareti deyimin bittiğini ve bu şekli ile işleme tabi tutulableceğini söylüyoruz aslında. En çok yapılan hatalardan bir tanesi de deyimin sonuna ; işareti koymayı unutmaktır. Hata ararken bunu da göz önünde bulundurabiliriz. Bazen çok basit hataları farketmek uzun zaman alabilir, özellikle de daha karmaşık kodlar yazmaya başlayınca.

delay(1000);   bir deyimdir. Bu noktaya geldiğimizde 1 saniye bekleyenmesi gerektiğini söyler. Arduino çalışıyorken, kodun bu kısmına geldiğinde 1saniye boyunca çakılı kalır, donar ve hiçbir iş yapmaz 1 saniye (1000 milisaniye) geçtikten sonra tekrar çalışmaya başlar. Bu komutta süre milisaniye cinsinden belirtilir. İsterseniz Bu süreleri sırası ile 300 veya 500 veya 200 ile değiştirerek, ledin yanıp sönme süresindeki değişiklikleri gözlemleyebilirsiniz. süreyi değiştiridikçe daha hızlı veya daha yavaş yanmaya başladığını göreceksiniz. Süreyi her değiştirdiğinizde, programı da her defasında Arduinoya yeniden yüklemeyi unutmayın.

Bu arada delay() komutunu kullanmak her zaman iyi değildir. aslında nadir olarak kullanılır, bunun yerine değişik formüller geliştirilmiştir. Çünkü delay komutu işletilirken Arduino başka hiçbir iş yapmaz. delay süresinin geçmesini bekler. Peki biz, hem programımızın belirli süreler beklemesini ama aynı zamanda da başka işler yapmasını istiyorsak ne olacak? programımızda kullanacağımız gecikmeler için Delay() komutu dışında başka ne kullanabiliriz? Onları da ilerleyen bölümlerde yazacağız inşaallah.

Şimdilik bu kadar, umarım faydalı olur.

Yorum bırakın