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ı
int
, void
).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
- Fonksiyon İsimlendirme: İsimler fonksiyonun ne yaptığını açıkça ifade etmeli (
ledKontrol
,ortalamaHesapla
gibi). - Parametre Türleri: Parametrelerin doğru veri türünde olduğundan emin olun.
- Return Kullanımı: Geri döndürülmesi gereken bir değer varsa
return
kullanmayı unutmayın. - void Fonksiyonlar: Eğer geri döndürme gerekmiyorsa
void
kullanabilirsiniz.
Arduino’da Fonksiyon Kullanım Özeti
void
Fonksiyonvoid ledYak()
int topla(int a, int b)
void ledKontrol(int pin, int durum)
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);
}
Bu Gönderiye Yorum Yapılmamış