Arduino

Arduino ile Fonksiyon Yazımı ve Kullanımı

Aykut AKMAN 8 ay önce Yorumlar (0) 5 Dakika Okuma
Arduino ile Fonksiyon Yazımı ve Kullanımı
E-Posta : 584 0

Arduino projelerinde fonksiyonlar, belirli bir görevi yerine getiren ve tekrar tekrar kullanılabilir kod bloklarıdır. Fonksiyonlar sayesinde kodunuzu modüler, okunabilir ve bakımı kolay hale getirebilirsiniz.

Fonksiyonların Avantajları

  • Tekrar Kullanılabilirlik: Aynı işlemi birden fazla yerde yazmak yerine bir kez yazıp birçok yerde kullanabilirsiniz.
  • Kodun Okunabilirliği: Fonksiyonlar, karmaşık projeleri daha kolay anlaşılır hale getirir.
  • Hata Ayıklama Kolaylığı: Hataları izole ederek daha kolay çözebilirsiniz.

Fonksiyonların Yapısı

Bir fonksiyonun temel yapısı şu şekildedir:

veri_tipi fonksiyon_adi(parametreler) {
    // Fonksiyonun gerçekleştireceği işlemler
    return değer;
}

Fonksiyonun Elemanları

Eleman
Açıklama
veri_tipi
Fonksiyonun döndürdüğü değerin türüdür (örneğin, int, void).
fonksiyon_adi
Fonksiyonun adı. Fonksiyonu çağırmak için bu adı kullanırsınız.
parametreler
Fonksiyona gönderilen değerler. Gerekliyse tanımlanır.
return
Fonksiyonun döndürdüğü değeri ifade eder. void ise gerekmez.

Arduino’da Fonksiyon Çeşitleri

1. Geri Değer Döndürmeyen Fonksiyonlar (void)

Bu fonksiyonlar, bir işlem yapar ancak değer döndürmez.

Örnek:

void ledYak() {
    digitalWrite(13, HIGH); // LED'i yak
    delay(1000);
    digitalWrite(13, LOW);  // LED'i söndür
    delay(1000);
}

2. Geri Değer Döndüren Fonksiyonlar

Bu fonksiyonlar, bir işlem yaptıktan sonra bir değer döndürür.

Örnek:

int topla(int a, int b) {
    return a + b;
}
Kullanım:
int sonuc = topla(5, 3); // sonuc: 8
Serial.println(sonuc);

Fonksiyonların Kullanımı

1. Basit Fonksiyon: LED Yak-Söndür

void ledKontrol(int pin, int durum) {
    digitalWrite(pin, durum);
}

void setup() {
    pinMode(13, OUTPUT);
    ledKontrol(13, HIGH); // LED'i yak
    delay(1000);
    ledKontrol(13, LOW);  // LED'i söndür
    delay(1000);
}

void loop() {
    // Döngü içinde işlem yapılmaz
}

2. Parametre Alan ve Değer Döndüren Fonksiyon: Ortalama Hesaplama

float ortalama(float a, float b, float c) {
    return (a + b + c) / 3.0;
}

void setup() {
    Serial.begin(9600);
    float sonuc = ortalama(10, 20, 30);
    Serial.print("Ortalama: ");
    Serial.println(sonuc);
}

void loop() {
    // Döngüde işlem yapılmaz
}

3. Çok Amaçlı Fonksiyon: Trafik Lambası Kontrolü

void trafikLambasi(int kirmizi, int sari, int yesil) {
    digitalWrite(kirmizi, HIGH);
    delay(1000);
    digitalWrite(kirmizi, LOW);

    digitalWrite(sari, HIGH);
    delay(1000);
    digitalWrite(sari, LOW);

    digitalWrite(yesil, HIGH);
    delay(1000);
    digitalWrite(yesil, LOW);
}

void setup() {
    pinMode(13, OUTPUT);
    pinMode(12, OUTPUT);
    pinMode(11, OUTPUT);
}

void loop() {
    trafikLambasi(13, 12, 11);
}

Fonksiyonlarla Çalışırken Dikkat Edilecekler

  1. Fonksiyon İsimlendirme: İsimler fonksiyonun ne yaptığını açıkça ifade etmeli (ledKontrol, ortalamaHesapla gibi).
  2. Parametre Türleri: Parametrelerin doğru veri türünde olduğundan emin olun.
  3. Return Kullanımı: Geri döndürülmesi gereken bir değer varsa return kullanmayı unutmayın.
  4. void Fonksiyonlar: Eğer geri döndürme gerekmiyorsa void kullanabilirsiniz.

Arduino’da Fonksiyon Kullanım Özeti

Fonksiyon Türü
Açıklama
Örnek Kullanım
void Fonksiyon
Değer döndürmez, sadece işlem yapar.
void ledYak()
Geri Değer Döndüren
İşlem yapar ve bir değer döndürür.
int topla(int a, int b)
Parametreli Fonksiyon
Parametre alarak işlem yapar.
void ledKontrol(int pin, int durum)
Parametresiz Fonksiyon
Parametre almaz, sabit işlemler yapar.
void ledYak()

Arduino’da fonksiyonlar, projelerinizi daha düzenli ve okunabilir hale getirmenin önemli bir yoludur. Parametreler ve geri döndürme değerleriyle çalışan fonksiyonları öğrenmek, projelerinizi daha profesyonel hale getirir. Yukarıdaki örnekleri ve tablodaki bilgileri kullanarak projelerinize kolayca fonksiyon ekleyebilirsiniz.

Sıkça Sorulan Sorular

Arduino'da fonksiyon, belirli bir görevi yerine getiren ve tekrar tekrar kullanılabilen bir kod bloğudur. Fonksiyonlar sayesinde kodunuzu daha modüler, okunabilir ve bakımı kolay hale getirebilirsiniz.

void fonksiyonlar, bir işlem yapar ancak hiçbir değer döndürmez. Örneğin, bir LED'i yakıp söndürmek için kullanılan bir fonksiyon void olabilir:

void ledYak() {
    digitalWrite(13, HIGH);
    delay(1000);
    digitalWrite(13, LOW);
    delay(1000);
}

Geri değer döndüren fonksiyonlar, bir işlem yaptıktan sonra bir değer döndürür. Örneğin, iki sayıyı toplayıp sonucu döndüren bir fonksiyon şu şekilde olabilir:

int topla(int a, int b) {
    return a + b;
}

Bir fonksiyonu çağırmak için, fonksiyonun adını ve gerekli parametreleri kullanabilirsiniz. Örneğin:

ledKontrol(13, HIGH); // Pin 13'teki LED'i yakar

Parametreli fonksiyonlar: Parametre alır ve bu parametrelerle işlem yapar.
Örnek:

void ledKontrol(int pin, int durum) {
    digitalWrite(pin, durum);
}

Parametresiz fonksiyonlar: Herhangi bir parametre almaz, genelde sabit işlemleri yürütür.
Örnek:


void ledYak() {
    digitalWrite(13, HIGH);
} 

return, bir fonksiyonun geri döndürmesi gereken değeri ifade eder. Eğer fonksiyon bir değer döndürmeyecekse void kullanılır. Örneğin:

float ortalama(float a, float b) {
    return (a + b) / 2.0;
}

Bu fonksiyon, iki sayının ortalamasını döndürür.

Evet, bir fonksiyonda birden fazla return kullanılabilir ancak bir return çalıştığında fonksiyonun geri kalan kısmı çalışmaz. Örneğin:

int kontrolEt(int deger) {
    if (deger > 10) return 1;
    return 0;
}

Evet, fonksiyonların dönüş türü ihtiyacınıza göre int, float, char gibi herhangi bir veri türü olabilir. Örneğin, bir sensörün ölçtüğü sıcaklığı döndüren bir fonksiyon:

float sicaklikOku() {
    return analogRead(A0) * 0.48828125; // ADC'den sıcaklık okuma
}

Evet, bir fonksiyon içinde başka bir fonksiyonu çağırabilirsiniz. Örneğin:

void loop() {
    int toplam = topla(5, 10);
    Serial.println(toplam);
}

Evet, setup() ve loop() Arduino'nun ana fonksiyonlarıdır:

  • setup(): Programın başında bir kez çalışır.
  • loop(): Program çalıştığı sürece sürekli olarak tekrar eder.

Arduino’da fonksiyonların alabileceği parametre sayısında bir sınır yoktur ancak çok fazla parametre kullanmak kodunuzu karmaşık hale getirebilir. Kodunuzu modüler tutmaya çalışmalısınız.

Trafik lambası kontrolü için her LED'e bir pin atanarak şu şekilde bir fonksiyon yazılabilir:

void trafikLambasi(int kirmizi, int sari, int yesil) {
    digitalWrite(kirmizi, HIGH);
    delay(1000);
    digitalWrite(kirmizi, LOW);

    digitalWrite(sari, HIGH);
    delay(1000);
    digitalWrite(sari, LOW);

    digitalWrite(yesil, HIGH);
    delay(1000);
    digitalWrite(yesil, LOW);
}
Aykut AKMAN

Aykut AKMAN

Bilişim Öğretmeni

Bu Gönderiye Yorum Yapılmamış

Yorum Yap

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

Diğer Yazılar

Arduino ile RGB LED Uygulaması

Aykut AKMAN 8 ay önce