2 Nisan 2020

Arduino Programlamaya Giriş

Arduino, hobi elektroniği başta olmak üzere elektronik tabanlı projelerde sık kullanılan bir mikrokontrolcüdür. Üzerinde giriş ve çıkış portları bulunan ve bünyesinde barındırdığı mikroişlemciye yazılan kodun yaptırılmasına olanak sağlayan bir geliştirme kartıdır. Fiziksel programlama platformu olarak da tanımlanabilir.

Wiring tabanlı bir programlama dili ile kodlanmaktadır. Arduino kodlanırken kullanılan dilin genel syntax yapısı C / C++ programlama dillerine oldukça benzemektedir. Dili yazdığımız IDE ortamı ise Java dilinde yazılmıştır. Sürekli güncellenmektedir.

Arduino İtalya merkezli Etkileşim Tasarım Enstitüsü İvrea ( Interaction Design Institute Ivrea ) tarafından tasarlandı ve açık kaynak olarak sunuldu. Bu durum Arduino geliştirme kartının dünyanın her noktasından geliştirilmesine olanak sağlamıştır. Aynı zamanda açık kaynak olarak paylaşılması “Arduino Klon” kartlarının çıkmasına da sebep olmuştur. Dolar kuru üzerinden satışa sunulan kart bazı ülkelerin satış politikalarından dolayı kullanıcıya standart ücretinden daha pahalıya ulaşabildiğinden bazı firmalar Çin menşeili olarak Arduino kartını üretip satabilmektedir. Bu kartlara Arduino klon denmektedir. Elektronik kart tasarımına ilgili bir bireyseniz siz de kendi Arduino kartınızı paylaşılan kaynaklardan yararlanarak kendiniz tasarlayabilirsiniz.

Yukarıdaki resimde Atmega 328 tabanlı Arduino Uno geliştirme kartının pinleri mevcuttur. Bu resim “pinout diyagramı” olarak da bilinir.

Yapılan projede kullanılan mikrodenetleyicinin bünyesinde barındırması gereken dahili özelliklere göre ihtiyaçlar doğrultusunda Arduino seçimi yapılabilir. Arduino resmi websitesinde yayınlanan Arduino modelleri arasından istenilen özelliklere sahip bir geliştirme kartı seçilebilir. Kartta kullanılan işlemci, pin çeşitliliği ve sayısı, çalışma frekansı gibi etkenler kart seçiminde dikkat edilmesi gereken etkenler arasında yer alabilir.

Aşağıda bazı Arduino modelleri mevcuttur. Bu modeller ile ilgili detayı bilgiyi Arduino resmi websitesinde bulabilirsiniz.


Yandaki resimde Arduino UNO kartının 3. versiyonu mevcuttur. Ürünü kendi websitesinde detaylı inceleyebilirsiniz.

Ürün linki: https://store.arduino.cc/usa/arduino-uno-rev3


Yandaki resimde Arduino NANO kartı mevcuttur. Ürünü kendi websitesinde detaylı inceleyebilirsiniz.

Ürün linki: https://store.arduino.cc/usa/arduino-nano


Arduino Yardımcı Elemanları

Arduino ile proje yaparken bazı elemanlara ihtiyaç duyulabilir. Bu elemanlar hobi elektroniği ile uğraşan her insanın malzeme çantasında bulunması gereken malzemelerdir. Nam-ı diğer breadboard ve jumper. 🙂


Breadboard üzerindeki birbirine seri pinler sayesinde çalışma tahtası görevi görür. + ve – güç pinleri kendi içinde birbirine seri iken iç tarafta kalan pinler ise 5′ erli olacak şekilde birbirine seridir. Bu sayede devrenin ihtiyacına göre bağlantı senaryoları oluşturulabilmektedir.


Elektronik malzemelerin pin bağlantılarını yapabilmek için kullanılan jumper kablolar bağlantı uçlarının işlevine göre erkek-erkek, dişi-dişi ve dişi-erkek olmak üzere 3 farklı kategoride isimlendirilir.

Arduino İçin IDE Platformu

Arduino, Wiring tabanlı C / C++ syntax yapısına benzer yapıda bir dil ile kodlanmaktadır. Kodlanırken kullanılan IDE platformu Arduino resmi websitesinde mevcuttur. IDE platformunun kullanımı oldukça basittir. Dikkat etmeniz gereken en önemli husus Arduino geliştirme kartının bağlı olduğu port ile IDE port ayarlarında yazan pport numarasının aynı olmasıdır. Aksi takdirde kartınıza yazdığınız kodu atamayabilirsiniz. Bu yüzden bilgisayar üzerinde kartın takılı olduğu USB portunu IDE üzerinden seçmek gerekebilir.

Arduino kodlayabilmek için gerekli olan IDE platformunu indirebilmek için Arduino resmi web sayfasındaki Software >>> Downloads sekmelerini izlemelisiniz. Çıkan sayfada bilgisayarınıza en uygun IDE platformunu indirebilirsiniz.

Arduino Programlamanın Genel Syntax Yapısı

Arduino programlanırken iki temel fonskiyon bloğu mevcuttur. Bunlar setup ve loop fonksiyonlarıdır. Setup fonskiyon bloğunda program boyunca kullanılacak olan pinlerin giriş (input) veya çıkış (output) pini olup olmadıkları tanımlanır. Loop fonskiyon bloğunda ise program boyunca yapılacak tüm işlemler yazılır. Sonsuz bir döngü içerisinde bu işlemler gerçekleşir.

void setup() {
  // bir kez çalıştırılmak üzere kurulum kodları yazılır
}

void loop() {
  // tekrar tekrar çalıştırmak için ana kodlar yazılır
}

Pinler giriş veya çıkış olarak tanımlanırken pinMode komutu kullanılır. Bu komut sayesinde derleyiciye hangi pini çıkış hangi pini giriş olarak atadığımız bildirilir.

void setup{
    //setup fonksiyonunun kodları
    
    pinMode(7, INPUT);
    //7 numaralı giriş pini
    
    pinMode(8, OUTPUT);
    //8 numaralı çıkış pini
}

void loop{
    //loop fonksiyonunun kodları
}

setup bloğu içerisinde sadece dijital pinler INPUT ve OUTPUT olarak tanımlanmaktadır.

4 Temel Fonskiyon

Arduino ile devrelerimizin temel işlevlerinin yerine getirilebilmesi için analog ve dijital verilerin mikroişlemci tarafınan okunması ve işlendikten sonra Arduino pinlerine bağlı çevre birimlere analog veya dijital olmak çıktı verilmelidir. Bu işlemleri yerine getiren 4 adet fonksiyon mevcuttur.

KomutAnlamı
analogRead()Analog verileri girdi olarak okur.
analogWrite()Analog verileri çıktı olarak verir.
digitalRead()Dijital verileri girdi olarak okur.
digitalWrite()Dijital verileri çıktı olarak verir.

Analog veriler ölçülendirilirken okuma işlemindeki bit miktarının büyüklüğü kadar referans değer baz alınarak ifade edilir. Örneğin 8 bitlik analog veri okunurken 2^8 = 256 olduğundan ve 0 da dahil edildiğinden 0-253 arasında okuma işlemi gerçekleştirilir. 8 bitlik analog bir veri 0 ile 253 arasında almış olduğu sayısal değer ile ifade edillir ve işleme sokulur.

Dijital veriler ise 1 ve 0 değerlerinden oluşmaktadır. Lojik-1 için devrenin 5V vermeli iken lojik-0 için devre 0V vermelidir. lojik-1 değeri HIGH ile ifade edilirken lojik-0 değeri LOW ile ifade edilmektedir.

Arduino programlamadaki fonskiyonların genel çalışma mantığını en iyi anlamanın yolu bolca örnek devre tasarlamaktır. İlerleyen Arduino yazılarımda örnek devreler tasarlayıp detaylı bir şekilde yazıya dökeceğim.

Yorum bölümünden tüm sorularınızı bana iletebilirsiniz.

Çalışmalarınızda başarılar dilerim.

Hamit Can Dinç.

Share

Hamit Can Dinç

Yıldız Teknik Üniversitesinde Elektrik Mühendisliği öğrencisi. Araştırma ve geliştirme odaklı projelerde yer almayı sever.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir