Arduino Eğitim Kiti – Tüm Yıl İçin Arduino Müfredatı: Ders 5 Fonksiyonlar isterseniz sunu şeklinde alt taraftaki kutucuğu büyüterek takip edebilir, isterseniz de tüm sunu sayfalarının makale haline dönüştürülmüş versiyonu takip edebilirsiniz. İçerikler büyük oranda aynıdır. Sınıf ortamında kolaylık olması açısından sunu şeklinde de sunulmuştur.

Ders İçeriği:

Fonksiyonlar

Ders Kazanımları:

  • Fonksiyonların temel görevini tanımlar.
  • Loop ve Setup fonksiyonlarının işlevlerini tanımlar.

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 tanımlanması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.

Resim21

  • Ö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;

}

  • Bir önceki sayfada oluşturulan “sonuc” 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 kullanmak istediğiniz yerde;

int islemSonucu;

islemSonucu = toplama(2 + 3);

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


Setup Fonksiyonu:

Void Setup

  • Void setup bir fonksiyondur ve yeni Arduino IDE programında yeni açılan sayfalarda siz yazmadan karşınıza gelir. Bu fonksiyon karta elektrik verdiğimizde sadece bir sefer çalışır ve sırasını loop fonksiyonuna bırakır.
  • Arduino Uno üzerindeki reset butonuna basıldığı takdirde tekrar çalışabilir. Sadece bir defa çalıştığı için -adından da anlaşıldığı üzere- kartın kurulum bilgilerini barındırır. Bir defa çalışması istenen kodlar buraya yazılır.

Loop Fonksiyonu:

Void Loop

  • Setup fonksiyonun bir sefer çalışması ardından devamlı çalışan kısımdır. Bu kısımda devamlı olarak çalışmasını istediğimiz sensör ölçümü ve işlenmesi, veri alışverişi, pinin aktif ve pasif (1-0) durumu gibi kodlar içerir.

Fonksiyon Örnekleri:

Resim22

Void Setup Fonksiyonu Örneği:

void setup()

{

           // sadece bir defa çalışacak kurulum kodlarımızı yazıyoruz.

             // (pin mod, seri bağlantı başlangıcı gibi)   

pinMode(led, OUTPUT); // LED pinini çıkış pini olarak

                                                //ayarlıyoruz

}

NOT: Burada verilen örnek kodlar ileri sunumlarda detaylı bir şekilde anlatılacaktır.

Void Loop Fonksiyonu Örneği:

void loop()

{

digitalWrite(led, HIGH); // LEDin yanması

delay(1000); // bir saniye LED açık durumda bekler

digitalWrite(led, LOW); // LEDin sönmesi

delay(1000); // bir saniye beklemesi  

}

Buradaki kodlar güç kesilmediği takdirde sürekli olarak çalışacaktır. Program çalıştırıldığı takdirde LEDin sürekli olarak birer saniye aralıklarla yanıp söndüğü gözlenebilir.

NOT: Burada verilen örnek kodlar ileri sunumlarda detaylı bir şekilde anlatılacaktır.


Fonksiyon Örnekleri:

  • Ekrana Yazı Yazdırma Fonksiyonu

void EkranaYaz()

{

Serial.println(“Arduino Projem”);

}

Yukarıdaki kodlar arduino IDE programında yazıldığında, herhangi bir satıra “ EkranaYaz(); ” komutu eklenir. Program çalışırken komutun yazıldığı satıra gelindiğinde, EkranaYaz(); fonksiyonu program tarafından çağrılır. Fonksiyonun işlevi serial monitöre “Arduino Projem” yazmak olduğu için bu görev yerine getirilir.

  • Belli Bir Sayının Karesini Alma Fonksiyonu

int KareHesapla7()

{

return 7*7;

}

Yukarıdaki fonksiyon kodları arduino IDE programına yazılır. Programın herhangi bir yerinde fonksiyon KareHesapla7(); şeklinde çağrılır. Fonksiyonun çağrıldığı kısımda 7’nin karesi hesaplanır. Hesaplanmasının sebebi fonksiyonun işlevinin 7’nin karesini hesaplıyor olmasıdır.

  • Faktoriyel Alma Fonksiyonu

void FaktoriyelHesapla(int sayi)

{

int sonuc=1;

for(int i = sayi; i>0; i–)

{

sonuc = sonuc*i;

}

Serial.println(sonuc);

}

Yukarıda kodlar program içerisinde yazılır.“  FaktoriyelHesapla(3); ”  şeklinde fonksiyon çağrıldığı takdirde serial monitörde 6 sonucunu görülür.


Alıştırmalar (Öğrenciler için):

Aşağıdaki örneklerin fonksiyonlarını yazınız.

1.Serial ekrana tekrarlı bir şekilde “Merhaba Dünya” yazan fonksiyon.

2.İki sayının küpünü hesaplayan fonksiyon.

3.Ekrana arka arkaya 5 kez yıldız (*) yazan programda kullanılacak fonksiyon.

Alıştırma Cevapları:

1. Serial ekrana “Merhaba Dünya” yazan fonksiyon:

void ekranayaz()

{

Serial.println(“Merhaba Dünya”);

}

2. 3 sayısının küpünü hesaplayan programın fonksiyonu

int küphesapla()

{

return 3*3*3;

}

3. Ekrana arka arkaya yıldız(*) yazan program da kullanılacak fonksiyon.

int yaz()

{

Serial.println(“*”);

Serial.println(“*”);

Serial.println(“*”);

Serial.println(“*”);

Serial.println(“*”);

}

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz