Arduino programlamada (ve genel olarak C++'da) fonksiyonlar, kodunuzu düzenlemenin, tekrar kullanılabilir hale getirmenin ve programın karmaşıklığını azaltmanın temel taşlarından biridir. Fonksiyon, ana programda sırası gelip çağrılır ve ardından fonksiyon içine gidilir. Fonksiyon içerisinde belirli bir görevi yerine getirdikten sonra ana programa geri döner. Bu görevi yerine getirdikten sonra bir değer döndürebilir (geri dönüş değeri) veya döndürmeyebilir (void).


veriTipi fonksiyonAdi(parametreTipi parametreAdi, ...) 

{

  // Fonksiyonun yapacağı işlemler

  return deger;     // (Sadece veriTipi void değilse)

}


veriTipi (Geri Dönüş Tipi): Fonksiyonun görevi bittikten sonra döndüreceği değerin tipini belirtir (örneğin int, float, char, bool vb.). Eğer fonksiyon herhangi bir değer döndürmeyecekse, bu kısma void yazılır.

fonksiyonAdi : Fonksiyonu çağırmak için kullanacağınız benzersiz isim.

parametreTipi parametreAdi (Parametreler): Fonksiyonun çalışması için dışarıdan alacağı bilgilere parametre denir. Her parametre için tipini ve adını belirtmelisiniz. Birden fazla parametre varsa virgülle ayrılırlar. Fonksiyon hiç parametre almıyorsa parantezlerin içi boş kalır (()).

{ ... } (Fonksiyon Gövdesi): Fonksiyonun asıl işini yapan kod bloğudur.

return deger; : Fonksiyonun geri dönüş değeri varsa, return anahtar kelimesiyle bu değeri döndürür. void tipli fonksiyonlarda return kullanılmaz veya return; şeklinde kullanılabilir ancak genelde gereksizdir. return komutu aynı zamanda fonksiyonun yürütülmesini sonlandırır.


Fonksiyon Türleri ve Örnekleri:

1. Parametre Almayan ve Değer Döndürmeyen Fonksiyonlar (void fonksiyonlar)

Arduino'daki setup() ve loop() fonksiyonları bu türdendir. Genellikle bir şeyi kontrol etmek, bir şeyi yazdırmak veya bir eylem gerçekleştirmek için kullanılırlar.


void setup() 

{

  Serial.begin(9600);

  selamVer(); // selamVer fonksiyonunu çağırıyoruz

}


void loop() 

{

      // loop içinde tekrar tekrar çağrılabilir

      selamVer();

      delay(1000);    //1000 milisaniye bekle.

}


void selamVer() 

{

  Serial.println("Merhaba Arduino!");

}


2. Parametre Alan ve Değer Döndürmeyen Fonksiyonlar

Fonksiyona dışarıdan bilgi göndermenizi sağlar, ancak fonksiyonun kendisi bir sonuç döndürmez.

const int ledPin = 13;

void setup() 

{

      pinMode(ledPin, OUTPUT);

}


void loop() 

{

      ledYakSon(500);     // LED'i 500ms yakıp söndür

      ledYakSon(100);     // LED'i 100ms yakıp söndür (daha hızlı)

}


void ledYakSon(int sure)     // sure adında bir parametre alıyor

  digitalWrite(ledPin, HIGH);

  delay(sure);

  digitalWrite(ledPin, LOW);

  delay(sure);

}


3. Parametre Almayan ve Değer Döndüren Fonksiyonlar

Fonksiyon belirli bir hesaplama yapar veya bir durumu kontrol eder ve bu sonucun bir değerini geri döndürür.


void setup() 

{

      Serial.begin(9600);

}


void loop() 

{

      int okunanDeger = butonDurumuOku();     // butonDurumuOku() fonksiyonunu çağır ve değeri int okunanDeger değişkenine ata.

      Serial.print("Okunan değer: ");

      Serial.println(okunanDeger);

      delay(100);    //100 milisaniye bekle.

}


int butonDurumuOku() 

{

      int durum = analogRead(A0);     // A0 pinindeki değeri oku.

      return durum;     // Okunan değeri döndürüyoruz.

}


4. Parametre Alan ve Değer Döndüren Fonksiyonlar

Bu tür fonksiyonlar en esnek olanlardır. Dışarıdan bilgi alır, bu bilgilerle işlem yapar ve bir sonuç döndürür.


void setup() 

{

      Serial.begin(9600);

}


void loop() 

{

      int toplam = toplama(5, 7);     // toplama fonksiyonunu çağır

      Serial.print("Toplam: ");

      Serial.println(toplam);     // Çıktı: Toplam: 12


      float ort = ortalamaHesapla(10.5, 20.0, 30.5);

      Serial.print("Ortalama: ");

      Serial.println(ort);     // Çıktı: Ortalama: 20.33


      delay(2000);    //200 milisaniye bekle.

}


int toplama(int sayi1, int sayi2) 

      int sonuc = sayi1 + sayi2;

      return sonuc;     // Toplamı döndürüyor

}


float ortalamaHesapla(float a, float b, float c) 

{

      float ort = (a + b + c) / 3.0;

      return ort;

}


Neden Fonksiyon Kullanmalıyız?

Kod Tekrarını Azaltma (Don't Repeat Yourself - DRY): Aynı kod parçasını programın farklı yerlerinde tekrar tekrar yazmak yerine, bu kodu bir fonksiyona koyup istediğiniz zaman çağırabilirsiniz. Bu, kodunuzu daha kısa ve yönetilebilir yapar.

Okunabilirlik ve Anlaşılırlık: Karmaşık bir programı daha küçük, yönetilebilir parçalara ayırarak kodun okunabilirliğini artırır. Her fonksiyon belirli bir işi yaptığı için, kodun ne yaptığını anlamak daha kolaylaşır.

Bakım Kolaylığı: Bir hatayı düzeltmek veya bir özelliği değiştirmek istediğinizde, sadece ilgili fonksiyonu düzenlemeniz yeterli olur. Bu, programın genelini etkileme riskini azaltır.

Hata Ayıklama Kolaylığı: Fonksiyonlar, kodunuzu mantıksal birimlere ayırdığı için, bir hata oluştuğunda hatanın hangi fonksiyonda olduğunu belirlemek daha kolaydır.

Modülerlik: Programınızı modüler hale getirmenizi sağlar. Her fonksiyon ayrı bir modül gibi düşünülebilir.



_____________________________________________________________________________________________________________________________________________________________


0 comments:

Yorum Gönder

Toplam Sayfa Görüntüleme Sayısı

Seri İletişim Protokolleri

Sensörlerin Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com