ARDUİNO TANITIM VE KODLAMA
facebook ile bağlan
00212 252 62 92

Hesabım

Üye Girişi / Üye Ol

facebook ile bağlan

 

Arduino'ya Giriş

 

Arduino, üzerinde bulundurduğu özel giriş ve çıkış portları yardımıyla, programcının yazdığı özel kodları fiziksel etkiye çeviren elektronik devre kartıdır. Yazılımsal ve donanımsal olarak tamamen açık kaynaklı ve özgür olmasından dolayı, isteyen herkes Arduino'nun gelişmesine katkı sağlayabilmektedir. Diğer programcılar tarafından hazırlanmış geniş kütüphaneler ve örnek projeler sayesinde Arduino, Dünya üzerinde en çok kullanılan elektronik devre kartlarındandır.

 

Arduino ile proje ve prototip hazırlama diğer mikroişlemcilere göre daha hızlı olmaktadır. Bu yüzden Arduino prototip hazırlamada ve elektronik programlamaya girişte yaygın olarak kullanılmaktadır.


       ARDUİNO UNO ile ilgili görsel sonucu  

 

     

 

 

 

                                              

  

 

 

                                                                                    

 

Not: Arduino seçimi yapılacak projeye göre seçilmektedir. Projede kullanılacak giriş çıkış pinleri, analog girişler, program/EEPROM hafızası gibi değişkenler kullanılacak Arduino türünü belirlemektedir. Genel amaçlı projelerde kullanmak için genellikle Arduino Uno veya Mega seçilmektedir. Arduino için ayrılan yerin az olduğu projelerde Arduino Nano kullanılmaktadır.

Eğitim sırasında Arduino UNO kullanılacaktır. Uygulamalarda yazılan kodların diğer Arduino türlerinde de çalışması için özen gösterilmiştir. Arduino IDE üzerinde yazılan Arduino kodları, yine bu yazılımla Arduino kartına yüklenecektir.

Arduino'nun resmi web sitesine ulaşmak için tıklayın.

 

Windows İçin Arduino Kurulumu

Arduino'yu kullanmaya başlayacağız. Bunun için öncelikle Arduino'nun USB kablosunu Arduino'ya bağlayın ve ardından bilgisayarınıza takın. Windows 7 ve üst sürümlerinde Arduino sürücüsü otomatik olarak yüklenecektir. Biraz bekledikten sonra Arduino bilgisayar tarafından tanınacaktır.

Arduino'nun bilgisayar tarafından tanınıp tanınmadığını görmek için aygıt yöneticisinden kontrol edin ve Arduino'nun bağlı olduğu COM portunu not edin (Aygıt yöneticisi: Bilgisayarım'a sağ tıklayın -> Yönet -> Aygıt Yöneticisi).

 

                                

 

Eğer bilgisayarımız Arduino'yu otomatik olarak tanımadıysa, Arduino sürücüsü yüklemeliyiz. Bunun için yukarıda belirtildiği gibi aygıt yöneticisini bulunuz. Diğer aygıtlar kısmında Arduino'yu temsil eden kısma çift tıklayarak "Aygıt Özellikleri" penceresini açınız. Bu pencerenin sağ alt kısmındaki "Sürücüyü Güncelleştir" düğmesine tıklayın. "Sürücü yazılımı için bilgisayarımı tara" dedikten sonra "Gözat" düğmeyi yardımıyla Arduino sürücüsünü seçin ve ileri düğmesine tıklayarak yüklemeyi gerçekleştirin.   

Arduino sürücüleri Arduino modeline özgü olarak değişmektedir. Arduino'nun kendi sitesindenmodelinize göre sürücü bulabilirsiniz. 

                                    

 

Dikkat: Arduino sürücüsünü bilgisayarınıza yüklerken, yukarıdaki gibi bir hata mesajı çıkabilir. "Bu sürücü yazılımını yine de yükle" diyerek yükleme işlemine devam ediniz.

 

Yazılımı indirin

Arduino Bütünleşik Geliştirme Ortamı'nı (IDE) indirmek için Arduino sitesine gidip, bu IDE'nin güncel halini kurunuz. Yazılım kurulumunda özel olarak yapılması gereken bir ayar yoktur, normal bir program kurulumu gibidir. Hatasız bir şekilde kurulumu gerçekleştirdikten sonra IDE'yi açabilirsiniz.

                       

 

  • Tools menüsü: Buradan kullandığınız Arduino türünü ve Arduino'nun bağlı olduğu COM portunu seçiniz. Eğer Arduino'nun bağlı olduğu portu bilmiyorsanız, aygıt yöneticisinden bakabilirsiniz.

  • Program Compile: Bu düğmeyle yazdığınız programı kontrol edebilirsiniz. Eğer kodda hata varsa alttaki siyah bölümde turuncu yazıyla yaptığınız hata ve satırı yazacaktır. Hatırlatma: Bulunduğumuz satırın sayısı sol atta yazmaktadır.

  • Program Compile & Upload: Bu düğmeyle önce yazdığınız kod derlenir. Eğer kodda hata yok ise yazılan kod Arduino'nun anlayacağı dile çevrilir ve otomatik olarak Arduino'ya atılır. İşlem sırasında ilerleme çubuğundan işlem durumunu görebilirsiniz. Ayrıca programın atılma sürecinde, Arduino üzerinde bulunan Tx ve Rx LED'leri hızlı bir şekilde yanıp söner. Programı bir kere Arduino'ya atmanız yeterli olacaktır. Arduino'ya yeni program atmak istediğinizde eskisini silmenize gerek yoktur. Yine bu düğmeyle her zaman yeni kod atabilirsiniz.

  • Serial Monitor: Yeni pencere açan bu düğmeyle Arduino'dan yolladığınız verileri görebilirsiniz. İlerleyen konularda bu düğme sıklıkla kullanılacaktır.

  • Arduino ile ilgili bilmemiz gereken temel bilgileri öğrendik. Artık Arduino programlamaya başlayabiliriz.

  •  

    Linux İçin Arduino Kurulumu

  • Herhangi bir Linux dağıtımına Arduino Bütünleşik Geliştirme Ortamı'nın (IDE) kurulumu, diğer platformlara göre biraz daha uzun bir işlem. Öte yandan Arduino geliştiricilerinin önemli bir kısmı Linux kullandığından, yenilikler ilk olarak bu platforma geliyor. Bu nedenle de Arduino ile geliştirme yapacaklara Linux platformunu kullanmalarını salık veriyoruz.

    Bu eğitim içeriğimizde Ubuntu'nun 15.04 sürümünün üzerine Arduino IDE'sini nasıl kuracağımızı anlatacağız.

  •  

    Kurulum

    Ubuntu'nun Yazılım Merkezi'nde Arduino IDE'sinin 1.0.5 sürümü mevcut ancak biz sitesinden daha güncel olan sürümü kuracağız.

    İlk olarak Arduino'nun sitesine gidiyoruz ve yukarıdaki Download sekmesine tıklıyoruz:

  •               

  • Bu aşamada Arduino bize açık kaynak kodlu ve özgür projeye bağış yapıp yapmayacağımızı soracak.

                        

    Bağış yapmak için Contribute&Download, bağış yapmadan devam etmek içinse Just Download düğmesine tıklıyoruz. Yükleme işleminin başlamasıyla birlikte yaklaşık 90 MB'lık bir dosyayı bilgisayarımıza indiriyoruz.

    Son 5 yıl içinde alınmış bir bilgisayara sahipseniz, çok yüksek bir ihtimalle 64 bitlik bir işletim sistemi kullanıyorsunuzdur. Biz de bu nedenle Linux 64 bits yazan bağlantıda yer alan kurulum dosyasını bilgisayarımızdaki İndirilenler dizinine (İngilizce kurulumlarda Downloads) indirdik.

    Bu yazı yazıldığında Arduino IDE'sinin güncel sürümü 1.6.5'ti. Daha yeni bir sürümle karşılaşırsanız şaşırmayın, o sürümü indirin. Böylesi bir durumda, aşağıda yer alan komutlarda geçen dosya adının indirdiğiniz sürümle aynı olmasına dikkat etmenizde fayda var :).

    CTRL + ALT + T tuş üçlüsüyle terminali açıyor ve kurulum dosyasını /opt dizinine taşıyoruz.

    $ cd ~/İndirilenler $ tar -xf arduino-1.6.5-linux64.tar.xz $ sudo mv arduino-1.6.5 /opt

    Sistemimize Java geliştirme ortamını kuruyoruz.

    $ sudo apt-get install openjdk-7-jre

    "Ek bağımlılıkları da kurmak istiyor musunuz?" sorusuna Evet (e) diyerek devam ediyoruz.

    Bu aşamada elimizdeki Arduino'yu USB kabloyla bilgisayara bağlayacağız. USB yuvasına okuma ve yazma izni vermemiz gerekiyor.

    $ sudo chmod a+rw /dev/ttyACM0

    Terminalde dmesg yazıp çıktısına dikkatle bakalım:

    $ dmesg

    -- ilgili kısım --

    usb 1-2: new full-speed USB device number 6 using xhci_hcd
    [15619.872405] usb 1-2: New USB device found, idVendor=2341, idProduct=0036
    [15619.872408] usb 1-2: New USB device strings: Mfr=2, Product=1, SerialNumber=0
    [15619.872409] usb 1-2: Product: Arduino Leonardo
    [15619.872411] usb 1-2: Manufacturer: Arduino LLC
    [15619.872599] usb 1-2: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes
    [15619.893510] cdc_acm 1-2:1.0: ttyACM0: USB ACM device
    [15619.893694] usbcore: registered new interface driver cdc_acm
    [15619.893696] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

    Göreceğiniz üzere, sistemimize bir Arduino Leonardo kartı, /dev/ttyACM0 üzerinden bağlı.

    Sonradan kolaylık olması için masaüstümüzde bir kısayol oluşturalım:

    $ cd ~/Masaüstü/ $ ln -s /opt/arduino-1.6.5/arduino

    Geriye son bir iş daha kaldı.

    Ubuntu çalıştırılabilir dosyaları açmak yerine bir editörle açıyor. Bir dosyayı çalıştırabilmek için başlatıcıdan (Daha bilinen adıyla Dash) Dosyalar programını çağıralım. Üstteki Değiştir menüsünden "Tercihler"i seçelim. Davranış sekmesindeki "Açıldığında çalıştırılabilir metin dosyalarını çalıştır" seçeneğini işaretliyoruz.

    Arduino Bütünleşik Geliştirme Ortamı (IDE) artık emir ve komutalarınıza hazırdır!

                             

  •  

  •  

    Mac OS X İçin Arduino Kurulumu

  • Mac OS X'e Arduino Bütünleşik Geliştirme Ortamı'nı (IDE) kurmak için buradan indirme sayfasına gidelim.

    Karşımıza gelen sayfadan "Mac OS X 10.7 Lion or newer" düğmesine tıklayarak indirme işleminin ilk adımını atalım.

  •                               

    İndirme sayfasında karşımıza bağış ekranı gelecek. Eğer bağış yapmak istemiyorsanız "Just Download" seçeneğini seçerek kurulum dosyasının indirmesine başlıyoruz.

                              

    Dosya indikten sonra üzerine çift tıklıyoruz ve cihazınızın ilk kurulumu yapmasını sağlıyoruz. Ardından dosyanın bulunduğu yere Arduino simgesinin geldiğini göreceksiniz. IDE'niz kullanıma hazır.

                                         

    Kodlarınızı yazabileceğiniz editör aşağıdaki şekilde görünmeli. Arduino kartınızı bağladığınız zaman bilgisayarınız otomatik olarak kartı tanıyacak. Kolay gelsin!

                                         


  •  

    Arduino'nun Besleme Kaynakları

  • Arduino'nun çalışması için gerekli olan enerji, Arduino'nun farklı besleme girişlerinden sağlanabilmektedir. Arduino'nun farklı besleme girişleri kullanılırken, bu girişe uygulanacak maksimum gerilimin bilinmesi gerekir. Eğer girişe uygulanması gereken gerilimden fazla bir gerilim uygulanırsa, Arduino zarar görebilir.

             

     

    Arduino'nun USB ile beslenmesi

    Arduino'nun USB kablosunu bilgisayarınıza bağladığınızda, Arduino çalışması için gerekli enerjiyi bilgisayarınızdan almaktadır. Bu giriş, Arduino için gerekli enerjiyi sağlarken, aynı zamanda Arduino'nun bilgisayarla haberleşmesini, Arduino'ya yeni kod atılmasını da sağlar.

    Yukarıdaki görselde 1 numaralı giriş Arduino'nun USB girişidir. Görselde de görüldüğü gibi bu giriş, yazıcı kablosu olarak tarif edilen USB B girişidir. USB standartlarına uygun olarak tasarlanan bu girişe en fazla 5 Volt gerilim uygulanmalıdır. Eğer bu girişe 5 Volt üzeri bir gerilim uygulanırsa, Arduino zarar görebilir.

     

    Arduino'nun pille çalıştırılması

    Arduino harici besleme kaynaklarıyla da çalıştırılabilir. Bunun için Arduino üzerinde birbirine bağlı iki farklı giriş bulunmaktadır. Bu girişlerden ilki, yukarıdaki görselde 2 numara ile gösterilen jack girişidir. Bu girişe 7 ile 12 Volt (önerilen) arasındaki gerilimler uygulanabilir. Bu girişe bağlı regülatör (gerilim düzenleyicisi) ile girişe uygulanan gerilim, Arduino'nun çalışma gerilimine düşürülür.

    Arduino üzerinde bulunan 'Vin' pini, Arduino'nun jack girişine bağlı bir pindir. Bu pine uygulanan gerilim, Arduino'ya ulaşmadan önce bu pine bağlı regülatör yardımıyla Arduino için uygun gerilime düşürülür. 'Vin' girişine 7 ile 12 Volt arasındaki gerilimler uygulanmalıdır. Pilin artı (+) ucu 'Vin' pinine bağlandıktan sonra, pilin eksi (-) ucu Arduino'nun 'GND' yani toprak ucuna bağlanmalıdır. 'Vin' pini yukarıdaki görselde 3 numara ile gösterilmiştir.

    Eğer bu girişlere uygulanması gereken gerilimden fazla bir gerilim uygulanırsa, Arduino zarar görebilir.

     

    Arduino'nun 5 Volt pininden beslenmesi

    Arduino üzerinde bulunan 5 Volt pini de Arduino'yu beslemek için kullanılabilir. Arduino yaygın olarak bu pinden beslenmese bile, buraya 5 Volt gerilim uygulandığında, Arduino'nun çalıştığı görülmektedir. Bu pine 5 Volt geriliminden fazla bir gerilim uygulanması, Arduino'nun bozulmasına neden olacaktır. Pek tercih edilmese bile, eğer elinizde düzenli olarak 5 Volt gerilim veren bir kaynak varsa, kaynağın artı (+) ucunu Arduino'nun 5 Volt, eksi (-) ucunu da Arduino'nun 'GND' yani toprak pinine bağlayarak kullanabilirsiniz.

    Bu pin yukarıdaki görselde 4 numara olarak gösterilmiştir.

  •  

    Yazılıma Giriş

  • DEĞİŞKENLER 

  • Bir değeri veya karakteri daha sonra tekrardan kullanmak/değiştirmek için hafızada tutabilirsiniz. Bu değerler değişkenlerde tutulur. Hafızada tutacağınız değerin türüne göre değişken tanımlanması gerekir.

    Aşağıdaki tabloda, Arduino'da kullanılan değişken türlerini ve tutabilecekleri değerleri görebilirsiniz.

    Değişken

    Boyut

    Açıklama

    byte

    1 byte

    0 – 255 arası işaretsiz sayılar.

    boolean

    1 byte

    0 (FALSE) veya 1 (TRUE) değerini alır.

    char

    1 byte

    -128 ile 127 arasındaki değerleri alır. Tek bir karakterin saklanması için kullanılır.

    string

    1 byte

    Metin işlemleri için kullanılır (char dizisi)

    int

    2 byte

    İşaretli sayılar için -32.768 – 32.767
    İşaretsiz sayıları için 0 – 65,535

    long

    4 byte

    İşaretli sayılar için -2.147.483.648 – 2.147.483.647
    İşaretsiz sayılar için 0 – 4.294.967.295

    float

    4 byte

    İşaretli ondalıklı sayılar -3,4028235E – 3,4028235E

    double

    4 byte

    3,4028235E+38 ile -3,4028235E+38 arasında
    hassasiyeti yüksek kesirli sayılar barındırır

    Örneğin sayi adında bir değişken tanımlayalım. Bu değişkenin içerisine sadece tamsayılar yazılır. Bu değişkeni tanımlamak için aşağıdaki komut kullanılabilir.

    int sayi = 5;

    Bu satırda tamsayı tutabilen (integer) 'sayi' değişkeni oluşturulmuştur. Oluşturma esnasında 'sayi' değişkeninin değeri 5 olarak belirlenmiştir. Değişken, değer ataması yapmadan da oluşturulabilirdi.

    Eğer değişken bir fonksiyonun içerisinde oluşturulursa, sadece o fonksiyonun içerisinde geçerlidir. Bir başka deyişle fonksiyonun dışarısında o değişken kullanılamaz. Her yerde kullanılabilecek bir değişken tanımlanacaksa o değişken, tüm fonksiyonların dışında, programın başında oluşturulmalıdır. Bu değişkenlere 'global' adı verilir.

  •  

    Fonksiyonlar ve Koşul Yapıları

  •  

    Fonksiyonlar

    Bir görevi yerine getirmesi için yazdığınız kodları başka bir yerde de kullanmanız gerekirse, o kod satırlarını kopyalayıp yeni kodların arasına yapıştırmanız gerekir. Bu yöntemle programınız gereksiz olarak uzar. Ayrıca kopyaladığınız satırlarda yapacağınız en küçük bir değişimi bile, programın ilgili yerlerinde tek tek değiştirmeniz gerekir. Bu sorunu çözmek için fonksiyonlar kullanılır. Gerekli görev için yazılacak tek bir fonksiyon, istenen yerlerde kolayca kullanılabilir. Kullanıcı kendi fonksiyonlarını yazabileceği gibi, daha önce başkaları tarafından yazılmış fonksiyonları da kullanabilir.

    Fonksiyon yazarken, fonksiyonda kullanılacak değişkenlerin alınmasına ve fonksiyonda yapılacak işlem sonucunun hangi türde olacağına dikkat edilmelidir. Fonksiyonun türü, işlem sonucunda döndürülecek değişken ile aynı tipte olmalıdır. Eğer fonksiyon, hiçbir değer döndürmeyecekse fonksiyon 'void' türünde tanımlanmalıdır.

    Örneğin toplama işlemi yapan ve sonucu geri döndüren bir fonksiyon yazalım. Fonksiyon a ve b olmak üzere iki sayı almaktadır. Bunları toplayıp sonucu geri döndürmektedir.

    int toplama(int a, int b){
        int sonuc;
        sonuc = a + b;
        return sonuc;

    Burada oluşturulan sonuç değişkeni sadece fonksiyon içerisinde geçerlidir. Fonksiyonun görevi bittikten sonra sonuç değişkeni kaybolur. Bu fonksiyonu programınızın gerekli yerinde kullanmak isterseniz;

    int islemSonucu;
    islemSonucu = toplama(2 + 3);

    şeklinde fonksiyonu çağırmanız yeterli olacaktır.

     

    Koşul yapıları (if-else-elseif)

    Hemen hemen her yazılım dilinde bulunan temel kod yapılarından birisidir. Koşul yapıları ile bir durumun sonucu doğrultusunda yapılacak işi belirtebiliriz. Eğer bu durum istediğimiz gibi sonuçlanmadıysa da yapılacak görevi belirleyebiliriz. Örneğin; A değişkeni 1'e eşit ise A_fonk() , eğer 2'ye eşitse B_fonk() ve diğer koşullarda C_fonk() fonksiyonunu çağıralım.

    if( A == 1 ){
        A_fonk();
    }else if( A == 2){
        B_fonk();
    }else{
        C_fonk();
    }

    Fark ettiyseniz A'nın 1'e eşitlik durumunu  '==' ile kontrol ettik. Bu işaret aslında denklik anlamına gelmektedir. Bir sayının diğer sayıya eşitliğini kontrol ettiğimiz gibi, büyüklüğü küçüklüğünü de test edebiliriz.

    Koşul olarak kullanılabilen ifadeler:

    ==

    Denkse

    !=

    Denk değilse

    >

    Büyüktür

    <

    Küçüktür

    >=

    Büyük veya eşitse

    <=

    Küçük veya eşitse

    Koşul1 && Koşul 2

    ve

    Koşul1 || Koşul 2

    veya

  •  

  •  

    Döngüler

  • Yazılan kodlarda belirli satırların birden fazla tekrar edilmesi istenebilir. Böyle durumlarda döngü yapıları kullanılır. Döngü yapılarında, döngünün kaç kere tekrar edeceği dinamik olarak belirlenebilir. Hatta döngünün tekrarlaması bir koşula bağlanabilir.

    For döngüsü: İçerisinde tanımlanan değişkenin değeri, büyüklük koşulunu sağladığı sürece döngü devam eder. Her döngü turu tamamlandığında, yeni tura geçmeden önce değişkenin değeri bir arttırılır ve koşul test edilir. Eğer koşul hala geçerli ise döngü turu başlar. Koşulun geçerliliği bittiğinde döngü biter ve program kaldığı yerden devam eder.

    Örneğin 5 kere tekrar eden for döngüsü yazalım.

    for(int i =0; i < 5; i ++){
    /*
    Burası 5 kere okunacak
     program buraya her uğradığında i değeri bir arttırılacak
     i değeri 5'e ulaşana kadar döngü devam edecek
     i değeri 5 olduğu zaman döngü bitecek
    */
    }

    While döngüsü: While döngüsü genellikle bir koşula bağlanır. Eğer koşul doğru ise döngü devam eder. Koşul bozulduğunda döngü biter ve program kaldığı yerden devam eder. Örneğin while dışında 'h' değişkeni tanımlayalım. Bu değişkenin ilk değeri 5 olsun. Eğer 'h' değişkeni 100'den küçükse döngü devam etsin. Döngünün her turunda da 'h' değişkeninin değeri 2 katına çıksın.

    Dikkat: Her döngüde iki katına çıkan değişkenlerin bulunduğu kodlarda genellikle ilk değişken hatası yapılmaktadır. Değişkenin ilk değeri kesinlikle belirlenmeli ve çarpma işlemi olduğu için bu değer '0' olmamalıdır. Aksi durumda koşul sonsuza kadar doğru olur ve döngü hiçbir zaman sona ermez.

    int h = 5;
    while( h < 100){
    /*
    Burası h değişkeni 100den küçük olduğu sürece çalışacak
    */
    h = h * 2;
    /*
    Üst satırdaki h'ı iki katına çıkartma işlemi alttaki satırdaki gibi de tanımlanabilirdi
    h *= 2;
    Eğer h'ın değeri arttırılmazsa döngü koşulu doğru olduğu için döngü sonsuza kadar devam edecektir
    */
    }
  •  

  •  

    Temel Arduino Fonksiyonları

  • Fonksiyonların ne olduğunu daha önce öğrenmiştik. Arduino geliştiricileri tarafından yazılmış bazı hazır fonksiyonlar vardır. Bu fonksiyonların yardımıyla yapmak istediğimiz işlemleri daha kolay yapabiliriz. Bazı genel fonksiyonlar için herhangi bir kütüphaneye ihtiyaç yoktur. Daha özel görevler için yazılmış fonksiyonları kullanmak için, o fonksiyonun kütüphanesini dosyanıza eklemeniz gerekir.

     

    Kütüphane ekleme

    Yeni bir kütüphane eklemek için kütüphane dosyalarını Arduino programını kurduğunuz dizinin altında bulunan 'libraries' klasörüne taşıyın. Eğer bu sırada Arduino programı açıksa, taşıma işlemi bittikten sonra, kapatıp yeniden açın. Dosyanın en başında kütüphaneyi projenize ekleyin. Bunun için aşağıdaki kodu kullanabilirsiniz.

    #include <kutuphaneadi.h>

    Artık kütüphanenin içerisinde bulunan fonksiyonları kullanabilirsiniz.

     

    Setup ve Loop fonksiyonları

    Arduino projenizi ilk açtığınızda karşınıza iki fonksiyon çıkar. Bunlar setup ve loop fonksiyonlarıdır.

    Setup fonksiyonu, kod çalışmaya başladığında Arduino'nun ilk olarak okuduğu yerdir. Arduino bu kısmı okuduktan sonra diğer kısımları okumaya başlar. Bu kısım sadece bir kere okunur ve program esnasında yeniden okunmaz. Bu alanda, pinlerin çalışma modları gibi önemli ve bir kere yapılması yeterli olacak ayarlamalar yapılır.

    Loop fonksiyonu, setup fonksiyonu okunduktan sonra okunur. Bu bir ana fonksiyondur ve yapılmasını istediğiniz görevler buraya yazılır. Loop fonksiyonu, sonsuz döngü şeklindedir, yani buradaki görevler tamamlandığında, program tekrar başa dönerek işlemleri yeniden yapar. Bu döngü, Arduino çalıştığı sürece devam eder.

    Arduino programlamadan önce kodlarınız ilk başta aşağıdaki gibi olmalıdır.

     void setup(){
        /*
            Burası sadece bir kere çalışır
            Genel ayarlar buradan yapılır
        */
    }
    void loop(){
        /*
            Bu fonksiyon sonsuza kadar çalışır
            Arduino'nun yapması gereken işlemler buraya yazılır
        */
    }

     

    PinMode

    Arduino kartı üzerinde bulunan pinleri çıkış veya giriş olarak tanımlayabilirsiniz. Giriş olarak tanımlanmış pinler düğme gibi elemanlar için kullanılırken, çıkış olarak tanımlanmış pinler ise LED gibi elemanlar için kullanılır. Programın en başında (Setup içerisinde), kullanılacak pinler ayarlanmalıdır. Bunun için aşağıdaki kod kullanılır:

    pinMode(13,OUTPUT);

    Böylece 13. Pin çıkış olarak tanımlanır. Giriş olarak tanımlanması için OUTPUT yerine INPUT yazılması gerekir.

    DigitalWrite: Çıkış olarak tanımlanmış pinlerden enerji vermek için veya enerji vermeyi durdurmak için kullanılır. Örneğin:

    digitalWrite(13,HIGH);

    Böylece, daha önce çıkış olarak tanımlanmış 13 numaralı pinden enerji çıkışı sağlanır. Enerji çıkışı durdurulmak istenildiğinde HIGH yerine LOW yazılması yeterlidir.
    AnalogWrite: Seçilen pinde PWM sinyalinin üretilmesini sağlar. PWM sinyalinin görev zamanı (Duty cycle) fonksiyona verilen değer ile belirlenir. Örneğin bu pine bağlanan bir LED ışığının parlaklığı verilen PWM sinyali ile ayarlanabilir.

    analogWrite(LEDPin, 175);

    Seçilen pinlerde PWM desteği bulunmasına dikkat edilmelidir. Bu konu ilerleyen konularda daha detaylı olarak incelenecektir.

    DigitalRead: Daha önce giriş olarak tanımlanmış bir pinin girişindeki gerilimin yüksek (5 volta yakın) veya düşük (0 volta yakın) olduğu anlaşılır. Örneğin daha önceden giriş olarak tanımlanmış 13 nolu pindeki durumu daha önceden tanımlanmış 'durum' değişkenine yazdıralım

    durum = digitalRead(13);

    13 numaralı pindeki gerilim 5 volta yakın ise 'durum' değişkeni 1 (HIGH), 0 volta yakın ise 0 (LOW) olmuştur.

    AnalogRead: Bir önceki fonksiyon ile 13 numaralı pindeki gerilimin 5 veya 0 olmasını ölçtük. digitalRead fonksiyonu, 0 ve 5 volt arasındaki gerilimlerin tam değerini ölçemez. 0 ve 5 volt arasındaki gerilimin tam değerinin ölçülmesi için analogRead fonksiyonu kullanılmalıdır. Fakat bu fonksiyon, tüm pinler için kullanılamaz. Bu fonksiyonun kullanılabileceği özel pinler vardır. Bunlara analog pinler denir ve genellikle A harfi ile başlarlar: A0, A1, A2… gibi. Kullanılan Arduino türüne göre bu pinlerin sayısı değişiklik gösterir.

    Arduino Uno'da 6, Arduino Mega'da 16 tane analog giriş bulunur. Kullanılacak analog pin, öncelikle giriş olarak tanımlanmalıdır:

    pinMode(A0,INPUT)

    Örneğin A0'daki değeri 'analogDeger' değişkenine kaydedelim. A0'daki gerilim 10 bit olarak kaydedilecektir. Bu durumu ilerleyen bölümlerde daha detaylı olarak göreceğiz.

    analogDeger = AnalogRead(A0);

     

    Delay

    İki kod arasında bir süre beklenmesi istenirse, delay fonksiyonu kullanılır. Örneğin yanıp sönen lamba uygulaması yapılmak istenirse, lamba yakıp söndürme kodları arasında bekleme amacıyla delay fonksiyonu kullanılır. Delay fonksiyonunun içerisine yazılan değer milisaniye düzeyindedir. Bir saniyelik bir bekleme için fonksiyona 1000 değeri verilmelidir.

    Örneğin yarım saniyelik bir bekleme fonksiyonu yazalım;

    delay(500);

    Bu bölümde, Arduino projelerimizde kullanacağımız temel fonksiyonları öğrendik. Geri kalan fonksiyonları, ilerleyen konularda örneklerle inceleyeceğiz.


  •  

  • void setup()
    {
      pinMode(7, OUTPUT); /* 7 numaralı pini çıkış yaptık */
    }
     
    void loop()
    {
      digitalWrite(7,HIGH); /* 7 numaralı pine enerji verildi */
      delay(1000); /* 1000 milisaniye = 1 saniye bekleme */
      digitalWrite(7,LOW); /* 7 numaralı pindeki enerji kesildi */
      delay(1000); /* 1 saniye bekleme */
    }
  •  
  •  


    Temel Arduino Uygulamaları

  • Yeni bir programlama dili öğrendiğimizde ilk başta nasıl "Merhaba Dünya" yazıyorsak, Arduino programlamanın da giriş uygulaması LED (lamba) yakıp söndürmektir. Daha önce LED'in ne olduğundan bahsetmiştik. Şimdi de LED'in nasıl kullanıldığından bahsedelim. LED bilindiği gibi bir çeşit diyottur, akım sadece bir yönde akmaktadır. Bu yüzden LED'in devreye bağlanma yönü önemlidir.

     
                      

    LED'in yönünü iki şekilde anlayabiliriz. İlk yöntemimiz LED'in ayak uzunluklarıdır. LED'in iki ayağından uzun olanı + (anot), kısa olan – (katot) ucunu göstermektedir. Böylece Arduino'dan gelen kabloyu LED'in uzun ayağına, kısa ayağını da toprağa (GND) bağlayacağız. Bu yöntem ile anot ve katot uçlarını ayırmak kolay olsa da güvenilir değildir. Eğer LED daha önce kullanılmış ise ayak uzunlukları değiştirilmiş olabilir.

    Diğer ve daha güvenilir olan ikinci yöntemle LED'in anot ve katot uçlarını daha kolay anlayabiliriz. LED'in içine bakıldığında, arası açık bir köprü görülür. Bu köprünün kısa yolu + (anot), uzun yolu ise –  (katot) ucu göstermektedir.

    LED'in bağlantısının nasıl yapılacağını öğrendik. Fakat LED'i devreye doğrudan bağlama pek önerilen bir yöntem değildir.  LED'in bağlı olduğu hatta akımı azaltmak için direnç bağlanmalıdır. Genellikle 220 veya 330 ohm değerinde direnç bağlanır. Bu değerlerden daha büyük bir direnç hatta bağlanırsa, LED'in parlaklığı azalır.

    Bu uygulamayı yapmak için ihtiyacınız olan malzemeler:

    • 1 x Arduino

    • 1 x LED (rengi farketmez)

    • 1 x 220 ohm direnç (220 ile 10k arasında bir direnç de olur)

    • 1 x Breadboard

    Resimde görüldüğü gibi devrenizi kurunuz. Arduino'nun 7 numaralı pininden bir kablo yardımıyla çıkış alıp Breadboard üzerindeki dirence bağlayınız. Daha sonra direncin diğer ucunu LED'in + ucuna bağlayın. LED'in diğer ucunu ise Arduino'nun toprağına bağlayın. Aynı hat üzerindeki akım her yerde aynı olduğu için direncin LED'den önce veya sonra bağlanması önemli değildir.

    Arduino kodunu yazmaya başlayalım. Amacımız 1 saniye boyunca yanan ve sonra 1 saniye boyunca sönük kalan LED yapmaktır. Bunun için setup fonksiyonu içerisinde LED'in bağlı olduğu Arduino'nun 7. pinini çıkış olarak ayarlayacağız. Daha sonra loop fonksiyonu içerisine 1 saniye aralıklı LED yakma ve söndürme kodunu yazacağız. Loop fonksiyonu sürekli döngü halinde olduğu için bir kere LED yakma ve söndürme kodunu yazmamız yeterli olacaktır. 1 saniyelik bekleme için delay fonksiyonu kullanılmıştır.

                     


    void setup()
    {
      pinMode(7, OUTPUT); /* 7 numaralı pini çıkış yaptık */
    }
     
    void loop()
    {
      digitalWrite(7,HIGH); /* 7 numaralı pine enerji verildi */
      delay(1000); /* 1000 milisaniye = 1 saniye bekleme */
      digitalWrite(7,LOW); /* 7 numaralı pindeki enerji kesildi */
      delay(1000); /* 1 saniye bekleme */
    }
     

    Böylece Arduino'da yapılabilecek en temel işlerinden biri olan LED yakıp söndürmeyi öğrendik. Burada kullanılan fonksiyonlar çoğu projede de kullanılır. Örneğin LED yerine çıkış veren başka bir elektronik eleman (örn: buzzer) konulduğunda, aynı Arduino programı ile o eleman da çalışabilir. Kapsamlı projelerde LED genellikle Arduino'nun durumunu göstermek için kullanılır. Örneğin Arduino bir işlem yaparken kırmızı ışık yanık tutulursa, Arduino'nun o sürede meşgul olduğu kullanıcı tarafından anlaşılabilir. Aşağıdaki uygulama ile öğrendiklerimizi pekiştirelim:

  •  

    Kara Şimşek Uygulaması

  • Arduino ile LED nasıl yakılıp söndürüldüğünü öğrendiğimize göre, artık biraz daha karmaşık bir uygulama yapabiliriz. Bu uygulamamızda kara şimşek yani sırayla yanıp sönen LED'ler yapacağız. LED bağlantılarını resimdeki gibi yapabilirsiniz. Her LED'in bağlantısına ayrı ayrı 220 Ohm'luk dirençler koymayı unutmayın. LED'lerin Breadboard'a eşit uzaklıklarda takılması, projenin daha güzel görünmesini sağlayacaktır.

                       

    Bu uygulamayı yapmak için ihtiyacınız olan malzemeler:

    • 1 x Arduino

    • 8 x LED

    • 8 x 220 Ohm Direnç

    • 1 x Breadboard

    Kara şimşek programı iki şekilde yazılabilir. Birinci yöntemde her LED için ayrı bir değişken tanımlanmış olup, bütün LED'ler tek tek kontrol edilir. Bu yöntem kod kalabalığı yarattığı için pek tercih edilmemektedir. Bu yüzden projeyi daha profesyonelce olan ikinci yöntem ile yazacağız.

    İkinci yöntem için, LED'leri 2'den 9'a pinlere sırası ile takalım. Bu pinleri bir diziye kaydederek LED'leri daha kolay kontrol edeceğiz. Dizi kullanılmasının nedeni, program içerisinde for döngüsünün kullanılacak olmasıdır. Her bir for döngüsünde bir sonraki LED'e kolayca geçiş yapılabilir.

    Not: LED geçişlerinin daha yumuşak olması için her LED'in artı ve eksi pinlerine kondansatör konulabilir.


     

    const int LEDdizisi[] = {2,3,4,5,6,7,8,9};

    void setup () {     
     
      for(int i=0; i<8 ;i++)    
      { /* For dongusuyle LEDdizisi elemanlarina ulasiyoruz */
        pinMode(LEDdizisi[i], OUTPUT); /* LED pinleri cikis olarak ayarlandi */
      }

    }

    void loop() {                                                
      for(int i=0; i<8; i++){ /* Tum LEDleri sirayla 50 milisaniye yakip sonduruyoruz */
        digitalWrite(LEDdizisi[i],HIGH);      
        delay(50);                           
        digitalWrite(LEDdizisi[i],LOW);         
      }
     
      for(int j=7;j>-1; j--)
      { /* LEDleri geri yonde 50 milisaniye yakip sonduruyoruz */
        digitalWrite(LEDdizisi[j],HIGH);     
        delay(50);
        digitalWrite(LEDdizisi[j], LOW);
      }
    }
  •  

     

  •  

Düğme Kullanımı

 

  • Kullanıcıyla etkileşim halinde olan birçok projede düğme kullanılmaktadır. Düğme, arasında az bir boşluk bulunan iki tel gibi düşünülebilir. Kullanıcı düğmeye bastığında bu boşluk kapanır ve düğme iletken duruma geçer, üzerinden akım akar. Kullanıcı düğmedan elini çektiğinde devrenin eski konumuna dönmesi için, pull up ve pull down denilen direnç bağlantıları kullanılır. Pull up ve pull down direnç ismi değil, dirençlerin bağlanma şeklidir. Genellikle 10K ohm direnç kullanılır.

                                                    

    Pull Down Direnç: Düğmeye basıldığında gerilim kaynağıyla Arduino'nun girişi kısa devre olur. Elinizi düğmeden çektiğinizde hat üzerinde hâlâ enerji kalır. Bu enerji düğmeye basılmadığı durumunda bile Arduino'nun düğmeye basılmış gibi davranmasına neden olur. Bu enerjinin yok edilmesi için hat genellikle 10K ohm'luk bir direnç ile toprağa bağlanır. Bu dirence pull down direnç denir.

                                                     

    Pull Up Direnç: Düğmeye basılmadığı durumlarda Arduino'nun giriş pini 5 volt düzeyindedir. Düğmeye basıldığında akım, Arduino'nun giriş pini yerine doğrudan toprağa ulaşmaktadır. Böylece pull-down direnç sistemini tam tersi çalışmaktadır. Arduino düğmeye basıldığında 0, düğmeye basılmadığında 1 değerini görmektedir. Pull-up direnci kullanma amacımız ise, düğmeye basıldığında toprak ve besleme hattının direkt olarak kısa devre olmasını engellemektir. Pull-down dirençte olduğu gibi pull-up dirençlerde genellikle 10K ohm olur.

    Düğmelerin Arduino'ya nasıl bağlanacağını öğrendik. Resimde breadboard (Eskiden elektronikçiler buna gofret derlerdi) üzerine düğme ve LED devresi kurulmuştur. Siz de resimdeki devreyi kurabilirsiniz.

    Bu uygulamayı yapmak için ihtiyacınız olan malzemeler:

    • 1 x Arduino

    • 1 x düğme

    • 1 x 10K ohm direnç

    • 1 x LED

    • 1 x 220 ohm direnç

    • 1 x breadboard (gofret)

                   

    Bu devredeki düğmenin amacı LED'i kontrol etmek olacaktır. Kullanıcı düğmeye bastığında LED yanıyorsa sönecek, sönük ise de yanacaktır. Burada bilmemiz gereken bir diğer nokta ARK olaylarıdır. Düğmeye basıldığı anda oluşan atlamalardan dolayı Arduino çok kısa zamanda yüzlerce kere düğmeye basıldığını sanmaktadır. Bu istenmeyen durumdan kurtulmak için basıldığı anda Arduino'yu biraz bekleteceğiz (delay fonksiyonu ile). Böylece devremiz, düğmeye basıldığında oluşan istenmeyen dalgalanmalardan korunmuş olacaktır. Delay fonksiyonuna yazılan bekleme zamanı insanın fark edemeyeceği kadar kısa bir süredir.

    Düğmeye her basıldığında yeni bir işlem yapılmasını istiyoruz. Bunu sağlamak için düğmeye basıldığında yapılması gereken işlem yapıldıktan sonra, kişinin düğmeden elini çekmesi beklenmelidir. Eğer bunu yapmazsak kişi, düğmeye bastığında LED'i sürekli yanıp sönecektir. Bu işlem o kadar hızlı olacaktır ki insan gözü bunu algılayamaz.

    Düğmenin durumu digitalRead fonksiyonu ile kontrol edilecektir. Okunan düğme değeri 'dugmeDurumu' değişkenine yüklenecektir. Eğer düğmeye basılmışsa LED'in durumunu değiştireceğiz. LED'in düğmeye her basıldığında konumunun değişmesi için, LED durumu bir değişkene atanır ve LED'in eski durumuna göre LED farklı konuma getirilir.

     

  • ARDUİNO KODU:


  •  

    const int Dugme = 6; /* düğmenin bağlı olduğu pin */

  • const int LED =  5; /* LEDin bağlı olduğu pin */


    int dugmeDurumu = 0; /* düğmenin durumu */  

    int LEDDurumu = 0; /* birinci yöntem için LED durumu */


    void setup() {

      pinMode(LED, OUTPUT); /* LED pini çıkış olarak ayarlandı */

      pinMode(Dugme, INPUT); /* düğme pini giriş olarak ayarlandı */

    }


    void loop(){

      dugmeDurumu = digitalRead(Dugme); /* düğmenin durumu okundu ve değişkene aktarıldı */

      if(dugmeDurumu == HIGH) { /* düğmeye basılmış ise */    

        delay(10); /* dalgalanmalar için biraz bekleyelim */

        if(LEDDurumu == 0){ /* LED yanmıyorsa */

          digitalWrite(LED, HIGH); /* LEDi yak */

          LEDDurumu = 1;

        }else { /* LED yanıyorsa */

          digitalWrite(LED, LOW); /* LEDi sondur */

          LEDDurumu = 0;  

        }

            

        while(dugmeDurumu == HIGH){ /* düğmeye basili olduğu surece bekle */

          dugmeDurumu = digitalRead(Dugme); /* düğmenin durumunu kontrol et */

        }

        delay(10); /* dalgalanmalar için biraz bekleyelim */

      } 

    }

  •  


  •  

  • BU SAYFADAKİ BİLGİLER TAMAMEN BİLGİLENDİRME AMAÇLIDIR.TİCARİ KAZANÇ GÜDÜLMEMEKTEDİR.

  • KAYNAKLAR:GELECEĞİ YAZANLAR EKİBİ,ALİ IŞINGÖR,CANSU ULUDAĞ

 

Sayfayı Paylaşın
Pinterest Linkedin


United States of America