ARDUİNO


                 http://www.flickr.com/photos/collinmel/2317520331/


                 Arduino Eğitimleri
                      Bölüm 3
           Programlama Dili Temelleri - II
13/11/12                Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                     1
Arduino Dili - II
                        Neler Göreceğiz?

    Fonksiyonlar
    Matematik İşlemler
    Gecikme / Zaman Fonksiyonları




13/11/12        Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                             2
Arduino Dili
                              Fonksiyonlar



                  ƒ(x)
     Girişler    Fonksiyon
                 Fonksiyon                    Çıktılar




13/11/12        Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                             3
Arduino Dili
                                 Fonksiyonlar
 Arduino programlarımızı tek bir fonksiyon (loop())
içerisinde yazabileceğimiz gibi onları küçük birimlere
de ayırabiliriz.
 Daha önce kullandığımız Delay() fonksiyonu parametre
alan ama değer döndürmeyen bir fonksiyondur.




13/11/12           Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                4
Arduino Dili
                              Fonksiyonlar

                      loop()
                     loop()


Fonksiyon_A()
Fonksiyon_A()   Fonksiyon_B()
                Fonksiyon_B()           Fonksiyon_C()
                                        Fonksiyon_C()




13/11/12        Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                             5
Arduino Dili
                               Fonksiyonlar

  Fonksiyonlar parametre almaları ve değer
 döndürmeleri zorunlu değildir.

  Değer döndürmeyen fonksiyonların dönüş
 değer tipi “void” dir.




13/11/12         Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                              6
Arduino Dili
                              Fonksiyonlar



 Fonksiyonlar parametre alıp almadıklarına veya
değer döndürüp döndürmemelerine göre
gruplanabilir:




13/11/12        Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                             7
Arduino Dili
                               Fonksiyonlar

  Parametre almayan ve dönüş değeri olmayan

  Parametre alan ve dönüş değeri olmayan

  Parametre almayan ve dönüş değeri olan

  Parametre alan ve dönüş değeri olan


13/11/12         Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                              8
Arduino Dili
                                   Fonksiyonlar
                           Dönüş değeri tipi


int ornekBirFonksiyon(int sayi1, int sayi2) {
  /* Parametre olarak verilen iki tam sayının
     toplamını döndüren fonksiyon */
  int sonuc;
  sonuc = sayi1 + sayi2;

    return sonuc;
}
                                               1. Parametre   2. Parametre



13/11/12            Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                 9
Arduino Dili
                                 Fonksiyonlar
                          Dönüş değeri yok (void)




   void ArduinoYazdir() {
     /* Seri çıkış üzerinden “Arduino” yazdıran
         fonksiyon
      */
     Serial.println(“Arduino”);
   }




13/11/12           Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                10
Arduino Dili
                                Fonksiyonlar

  Fonksiyonları tekrar edilen işlemler için
 kullanabiliriz.
 Fonksiyonlara verdiğimiz girişlere
 “parametre” denilir.
  Fonksiyonlar tanımlanırken hangi tip
 parametre alacakları belirtilir.



13/11/12          Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                               11
Fonksiyon Çağırma
   /*
        Seri haberleşme üzerinden “Arduino” yazdıran
   fonksiyon saniyede 1 çağırılıyor.
     */
   void setup() {
        Serial.begin(9600);
   }
   void loop() {
       ArduinoYazdir();          // Fonksiyon
   çağrısı
       delay(1000);              // Bir saniye bekle
     }




13/11/12            Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                 12
Arduino Dili
                               Fonksiyonlar
  Fonksiyonlara parametre iletmenin iki yolu vardır:
 Değerle çağırma ve Referansla çağırma
  Değerle çağırmada fonksiyona iletilen
 parametrelerle yapılan işlemler sonucu
 verilen parametrelerin değerlerinde değişim
 olmaz.



13/11/12         Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                              13
Arduino Dili
                      Fonksiyonlarda Değerle Çağırma

                           Dönüş değeri tipi


int ornekBirFonksiyon(int sayi1, int sayi2) {
  /* Parametre olarak verilen iki tam sayının
     toplamını döndüren fonksiyon */
  int sonuc;
  sonuc = sayi1 + sayi2;

    return sonuc;
}
                                               1. Parametre   2. Parametre



13/11/12            Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                 14
Arduino Dili
                                 Fonksiyonlar

  Referansla çağırmada fonksiyona iletilen
 parametrelerin bellek adresleri(referans)
 fonksiyona iletilir ve parametrelerin orijinal
 değerleri üzerinde işlem yapılır.




13/11/12           Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                15
Arduino Dili
                          Fonksiyonlarda Referansla
                                  Çağırma      referans

                           Dönüş değeri tipi void




void degerleriTopla(int sayi1, int sayi2, int &toplam) {
  /* Parametre olarak verilen iki tam sayının
     toplamını döndüren fonksiyon */
    toplam = sayi1 + sayi2;
}


                                             1. Parametre



13/11/12            Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                 16
Arduino Dili
                         Gecikme ve Zaman
                           Fonksiyonları
  Gecikme fonksiyonu delay()’i daha önce görmüştük.

  delay(ms_gecikme)  ms gecikme

  delayMicroseconds(us_gecikme)  us
 gecikme gibi



13/11/12        Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                             17
Arduino Dili
                           Gecikme ve Zaman
                             Fonksiyonları
  millis() fonksiyonu Arduino’nun çalışmasından
 itibaren geçen süreyi ms cinsinden döndürür.

   Ortalama 50 günde bir sıfırlanır.

 Dönüş değeri yüksek bir değer olabileceğinden
 “unsigned long” tipi kullanılmalıdır.


13/11/12          Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                               18
Arduino Dili
                      Matematik Fonksiyonlar
  Temel matematik işlemleri matematik
 operatörleriyle gerçekleştirebiliyoruz.
  Karekök alma, trigonometrik hesaplamalar
 gibi işlemler için matematik kütüphanesi
 fonksiyonlarını kullanabiliriz.




13/11/12         Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                              19
Arduino Dili
                  Matematik Operatörler
           Operatör          İşlem
              +          TOPLAMA
              -          ÇIKARMA
              *          ÇARPMA
              /          BÖLME
              %          KALAN
              =          ATAMA
13/11/12     Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                          20
Arduino Dili
                    Matematik Fonksiyonlar
    Fonksiyon        Parametre                   İşlem
     Pow(x,n)   x: Sayı                Üs alma
                n: Üs değeri
      Sqrt(x)   x: sayi                Karekök alma
      Abs(x)    x: sayi                Mutlak Değer
       sin(x)   x: açı (radyan)        Sinüs
      cos(x)    x: açı (radyan)        Kosinüs
      tan(x)    x: açı (radyan)        Tanjant

13/11/12        Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                             21
Arduino Dili
                              Matematik Fonksiyonlar
              Fonksiyon             Parametre                  Sonuç
a = min(x,y)                   x: Sayi-1              İki sayının en küçüğü
                               y: Sayi-2
a = max(x,y)                   x: Sayi-1              İki sayının en büyüğü
                               y: Sayi-2
a = constrain(x,min,max)       x: sayı                İki değer arasına sınırlama

a = floor(x)                   x: ondalık sayı        En küçük tam sayıya
                                                      yuvarlama
a = ceil(x)                    x: ondalık sayı        En büyük tam sayıya
                                                      yuvarlama


   13/11/12                Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri
                                                        22

Arduino eğitimleri 4 - arduino programlama dili - 2

  • 1.
    ARDUİNO http://www.flickr.com/photos/collinmel/2317520331/ Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri - II 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 1
  • 2.
    Arduino Dili -II Neler Göreceğiz?  Fonksiyonlar  Matematik İşlemler  Gecikme / Zaman Fonksiyonları 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 2
  • 3.
    Arduino Dili Fonksiyonlar ƒ(x) Girişler Fonksiyon Fonksiyon Çıktılar 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 3
  • 4.
    Arduino Dili Fonksiyonlar  Arduino programlarımızı tek bir fonksiyon (loop()) içerisinde yazabileceğimiz gibi onları küçük birimlere de ayırabiliriz.  Daha önce kullandığımız Delay() fonksiyonu parametre alan ama değer döndürmeyen bir fonksiyondur. 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 4
  • 5.
    Arduino Dili Fonksiyonlar loop() loop() Fonksiyon_A() Fonksiyon_A() Fonksiyon_B() Fonksiyon_B() Fonksiyon_C() Fonksiyon_C() 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 5
  • 6.
    Arduino Dili Fonksiyonlar  Fonksiyonlar parametre almaları ve değer döndürmeleri zorunlu değildir.  Değer döndürmeyen fonksiyonların dönüş değer tipi “void” dir. 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 6
  • 7.
    Arduino Dili Fonksiyonlar  Fonksiyonlar parametre alıp almadıklarına veya değer döndürüp döndürmemelerine göre gruplanabilir: 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 7
  • 8.
    Arduino Dili Fonksiyonlar  Parametre almayan ve dönüş değeri olmayan  Parametre alan ve dönüş değeri olmayan  Parametre almayan ve dönüş değeri olan  Parametre alan ve dönüş değeri olan 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 8
  • 9.
    Arduino Dili Fonksiyonlar Dönüş değeri tipi int ornekBirFonksiyon(int sayi1, int sayi2) { /* Parametre olarak verilen iki tam sayının toplamını döndüren fonksiyon */ int sonuc; sonuc = sayi1 + sayi2; return sonuc; } 1. Parametre 2. Parametre 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 9
  • 10.
    Arduino Dili Fonksiyonlar Dönüş değeri yok (void) void ArduinoYazdir() { /* Seri çıkış üzerinden “Arduino” yazdıran fonksiyon */ Serial.println(“Arduino”); } 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 10
  • 11.
    Arduino Dili Fonksiyonlar  Fonksiyonları tekrar edilen işlemler için kullanabiliriz. Fonksiyonlara verdiğimiz girişlere “parametre” denilir.  Fonksiyonlar tanımlanırken hangi tip parametre alacakları belirtilir. 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 11
  • 12.
    Fonksiyon Çağırma /* Seri haberleşme üzerinden “Arduino” yazdıran fonksiyon saniyede 1 çağırılıyor. */ void setup() { Serial.begin(9600); } void loop() { ArduinoYazdir(); // Fonksiyon çağrısı delay(1000); // Bir saniye bekle } 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 12
  • 13.
    Arduino Dili Fonksiyonlar  Fonksiyonlara parametre iletmenin iki yolu vardır: Değerle çağırma ve Referansla çağırma  Değerle çağırmada fonksiyona iletilen parametrelerle yapılan işlemler sonucu verilen parametrelerin değerlerinde değişim olmaz. 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 13
  • 14.
    Arduino Dili Fonksiyonlarda Değerle Çağırma Dönüş değeri tipi int ornekBirFonksiyon(int sayi1, int sayi2) { /* Parametre olarak verilen iki tam sayının toplamını döndüren fonksiyon */ int sonuc; sonuc = sayi1 + sayi2; return sonuc; } 1. Parametre 2. Parametre 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 14
  • 15.
    Arduino Dili Fonksiyonlar  Referansla çağırmada fonksiyona iletilen parametrelerin bellek adresleri(referans) fonksiyona iletilir ve parametrelerin orijinal değerleri üzerinde işlem yapılır. 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 15
  • 16.
    Arduino Dili Fonksiyonlarda Referansla Çağırma referans Dönüş değeri tipi void void degerleriTopla(int sayi1, int sayi2, int &toplam) { /* Parametre olarak verilen iki tam sayının toplamını döndüren fonksiyon */ toplam = sayi1 + sayi2; } 1. Parametre 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 16
  • 17.
    Arduino Dili Gecikme ve Zaman Fonksiyonları  Gecikme fonksiyonu delay()’i daha önce görmüştük.  delay(ms_gecikme)  ms gecikme  delayMicroseconds(us_gecikme)  us gecikme gibi 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 17
  • 18.
    Arduino Dili Gecikme ve Zaman Fonksiyonları  millis() fonksiyonu Arduino’nun çalışmasından itibaren geçen süreyi ms cinsinden döndürür.  Ortalama 50 günde bir sıfırlanır. Dönüş değeri yüksek bir değer olabileceğinden “unsigned long” tipi kullanılmalıdır. 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 18
  • 19.
    Arduino Dili Matematik Fonksiyonlar  Temel matematik işlemleri matematik operatörleriyle gerçekleştirebiliyoruz.  Karekök alma, trigonometrik hesaplamalar gibi işlemler için matematik kütüphanesi fonksiyonlarını kullanabiliriz. 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 19
  • 20.
    Arduino Dili Matematik Operatörler Operatör İşlem + TOPLAMA - ÇIKARMA * ÇARPMA / BÖLME % KALAN = ATAMA 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 20
  • 21.
    Arduino Dili Matematik Fonksiyonlar Fonksiyon Parametre İşlem Pow(x,n) x: Sayı Üs alma n: Üs değeri Sqrt(x) x: sayi Karekök alma Abs(x) x: sayi Mutlak Değer sin(x) x: açı (radyan) Sinüs cos(x) x: açı (radyan) Kosinüs tan(x) x: açı (radyan) Tanjant 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 21
  • 22.
    Arduino Dili Matematik Fonksiyonlar Fonksiyon Parametre Sonuç a = min(x,y) x: Sayi-1 İki sayının en küçüğü y: Sayi-2 a = max(x,y) x: Sayi-1 İki sayının en büyüğü y: Sayi-2 a = constrain(x,min,max) x: sayı İki değer arasına sınırlama a = floor(x) x: ondalık sayı En küçük tam sayıya yuvarlama a = ceil(x) x: ondalık sayı En büyük tam sayıya yuvarlama 13/11/12 Coşkun TAŞDEMİR - Çizgi-Tagem Arduino Eğitimleri 22