Fonksiyonlar İçine Değişken Atama (Arduino Programlama - C/C++ dersleri 3)

Merhaba arkadaşlar bu yazımda daha önce oluşturduğumuz fonksiyonları biraz daha özelleştireceğiz ve parantez içine bir şeyler ekleyip eklediğimiz şeylere göre farklı sonuçlar elde edeceğiz. Tanım biraz karışık gelmiş olabilir farkındayım ama kodlar içindeki açıklamalar size yardımcı olacaktır.


İlk olarak daha önce burada örneğini yaptığımız led uygulamasının basit halini yapacağız sizde Arduinoya ısınmak için bu örneği aşağıdaki yöntemle yaparsanız sizin için çok iyi olur. Takıldığınız yer olursa yorum olarak sormaktan çekinmeyin.

İlk örnekte devre kurmamıza gerek yok direk Arduino kartımızda bulunan ledi kullanacağız.

 
// arduonik.blogspot.com
// Bu örnekte Arduino kartımızda dahili bulunan ve 13. pine bağlı led kullanacağız
int led = 13;  // pinimize "led" adını veriyoruz


void ac_kapa(int bekleme){ //daha sonra "ac_kapa" adında bir fonksiyon oluşturuyoruz ama daha önceki parantez içinin aksine burada bekleme adında bir int değişken var
// fonksiyonu kullanırken bu değişken yerine istediğimiz değeri yazarsak sadece bu fonksiyon içinde kullanılan bekleme değişkenleri yazdığımız değeri alacak
    digitalWrite(led, HIGH);   // ilk başta ledimizi açık duruma getiriyoruz
  delay(bekleme);               // ve bekleme değişkeni kadar bekliyoruz
  digitalWrite(led, LOW);    // ardından ledi kapatiyoruz
  delay(bekleme);            // ve led kapalıyken bekleme değişkeninin değeri kadar bekliyoruz
}  // fonksiyonu kapatmayı unutmayın :)
//kendi fonksiyonumuzdan sonra Setup fonksiyonunu oluşturuyoru
void setup() {

  pinMode(led, OUTPUT);  //led olarak adlandırdığımız 13 nolu pini çıkış pini olarak ayarlıyoruz
}

// Daha sonrada loop fonksiyonuna geçiyoruz
void loop() {
ac_kapa(500);             // ac_kapa fonksiyonunu çalıştırıyoruz ve bekleme değişkenini 500 yapıyoruz yani her iki delay da 500 ms olacak
}

Şimdi bu kodu biraz daha geliştirip açık kalma ve kapalı kalma sürelerini farklı farklı olarak kullanalım

// arduonik.blogspot.com
// Bu örnekte Arduino kartımızda dahili bulunan ve 13. pine bağlı led kullanacağız
int led = 13;  // pinimize "led" adını veriyoruz


void ac_kapa(int bekleme_acik,int bekleme_kapali){ //daha sonra "ac_kapa" adında bir fonksiyon oluşturuyoruz ama daha önceki parantez içinin aksine burada 
//bekleme_acik ve bekleme_kapali adında iki int değişken ekliyoruz
// fonksiyonu kullanırken bu değişkenler yerine istediğimiz değeri yazarsak  bu fonksiyon içinde kullanılan bekleme_acik ve bekleme_kapali değişkenleri yazdığımız değerleri alacak
    digitalWrite(led, HIGH);   // ilk başta ledimizi açık duruma getiriyoruz
  delay(bekleme_acik);               // ve bekleme_acik değişkeni kadar bekliyoruz
  digitalWrite(led, LOW);    // ardından ledi kapatiyoruz
  delay(bekleme_kapali);            // ve led kapalıyken bekleme_kapali değişkeninin değeri kadar bekliyoruz
}  // fonksiyonu kapatmayı unutmayın :)
//kendi fonksiyonumuzdan sonra Setup fonksiyonunu oluşturuyoru
void setup() {

  pinMode(led, OUTPUT);  //led olarak adlandırdığımız 13 nolu pini çıkış pini olarak ayarlıyoruz
}

// Daha sonrada loop fonksiyonuna geçiyoruz
void loop() {
ac_kapa(500,250);             // ac_kapa fonksiyonunu çalıştırıyoruz ve bekleme_acik değişkenini 500, bekleme_kapalı değişkenini 250 yapıyoruz yani her iki delay da farklı olacak
}

Daha öncede dediğim gibi blogta ki örneklerden Trafik Lambası örneğinin devresini kurup kendi yazdığınız foknsiyon ile fonksiyon içine yazılan rengi yakacak bir kod yazmak size bir şeyler katacaktır. Takıldığınız yeri  yorumda sorabilirsiniz.

2 yorum:

  1. Öncelikle biraz geç cevap verdiğim için kusura bakmayın. Sorduğunuzu tam anlamadım ama http://arduonik.blogspot.com.tr/2015/05/fonksiyonlar-ve-void-setup-void-loop.html linkinde ki gibi istediğiniz kadar fonksiyon oluşturup main fonksiyonu içinde http://arduonik.blogspot.com.tr/2015/05/if-else-yaps-arduino-programlama-cc.html linkinde ki gibi if else yapısı kullanarak hangi şartta hangi işin yapılacağını belirleyebilirsiniz.Yada direk if else içine ne yapmak istiyorsanız yazabilirsiniz. Eğer yanlış anlamışsam biraz daha açık olarak mümkünse örnekle sorabilirseniz daha iyi olur.

    YanıtlaSil