Evveliyat: ##1, ##2, ##3, ##4


ISI ve sıcaklık ile ilgili kısımlara gelmiştik. Biraz açıklamasını da yaparak devam edelim.. // görsel

sicaklikOlc() fonksiyonu

C gibi temel dillerden geliyorsanız Arduino kodları sizin için çocuk oyuncağı olabilir. Hoş farklı dillerden geliyorsanız da çok zor değil hatta bi hayli basit ve net.

Arduino değişken tanımlama

Örneğin bir değişken tanımlarken
Php’de $x=15;
JavaScript’te var x=15;
Python’da x=15

şeklinde belirtiyoruz. Burada ise değişkenin kaç bit/byte’lık oluğuna göre türünü belirtiyoruz. Ya da metin/karakter olma durumunu da söylüyoruz: byte x=15;

Arduino fonksiyonlar

Benzer şekilde fonksiyon tanımlarken de sade ve net. Sadece ufak farklılıklar var.
Python’da def fx(): bişeyler yap..
JavaScript ve php’de function fx() { bişeyler yap.. }

şeklinde tanımlarken burada
void fx() { bişeyler yap.. }
ya da
byte fx(){ bişeyler yap.. }
olarak tanımlıyoruz. void fx() kullanımı, Return ile sonuç döndürmeyen fonksiyonlar için. Şayet fonksiyonumuz bir sonuç üretiyorsa bu durumda üretilecek verinin türünü belirtmemiz gerekiyor. Örneğin fonksiyonmuz byte tipinde bir sonuç döndürüyorsa
byte fx() { bişeyler yap.. return sonuc; } şeklinde tanımlama yapıyoruz. Fonksiyonumuza bir argüman gönderip, ona göre sonuç alıyorsak bunu da byte fx(a){ a.. do.. return } şeklinde kullanıyoruz.

En genel hali ile şöyle:

dönüşTipi funksiyonİsmi( argüman-lar ){
sonuçTipi sonuç;
bişeyler yap..
return sonuç;
}

Böyle çok havada kalıyor sanırım. Yukarıdaki tanımlamaları da kapsayan kısa bir örnek yapalım.

////////////////////////////
void yaz() {Serial.println("Merhaba"); }
// Bi şeyler yapıyor ama bize bir sonuç ile geri döndürmeyeceği için
// void fx(){} kullanıyoruz.

////////////////////////////

byte cevre() {
byte A=20;
byte B=40;
byte cevreuzunlugu = 2*(A+B);
return cevreuzunlugu; }
//return ile 255'ten küçük bir değer döndüreceği için
// byte fx(){} şeklinde kullanıyoruz

////////////////////////////

int alan() {
byte C=30;
byte D=50;
int kapladigiAlan = C*D;
return kapladigiAlan; }
//return ile 255'ten büyük bir değer döndüreceği için
// int fx(){} şeklinde kullanıyoruz

////////////////////////////

int y = 350;
byte x = 75;
void topla(){ int z = x+y; Serial.println(z); }
//return ile bir değer döndürMEyeceği için
// void fx(){} şeklinde kullanıyoruz

////////////////////////////

int p = 300;
byte j = 15;
int carp(int k, int m){
int sonuc;
sonuc = k * m;
return sonuc; }
//return ile 255'ten büyük 32768'den küçük bir değer döndüreceği için
// int fx(){} şeklinde kullanıyoruz
// dışarıdan bizim verdiğimiz değişkenleri kullanarak işlem yapması için
// int fx(int arguman1){} şeklinde kullanıyoruz

////////////////////////////

//tanımladığımız fonksiyonları iş başında görelim 😉

void setup() { Serial.begin(9600);
yaz();
byte ornekIKI = cevre(); Serial.println(ornekIKI);
int ornekUC = alan(); Serial.println(ornekUC);
topla();
int ornekBES = carp(p,j); Serial.println(ornekBES);
}
void loop() {}



 

Bu bilgiler ışığında AHMT’in kodlarına yeniden bakalım..Bu sefer bi tık daha sıcak gelebilir 😉

Sıcaklık Volt ve Sıcaklık değişkenlerimizin integer ve float (noktalı sayı) olduğunu, ayrıca hangi bacağa bağlantı yaptığımızı tanımladık.

Return ile bir sonuç döndürmeyeceği için fonksiyon oluştururken void sicaklikOlc(){} olarak kullandık.

Fonksiyonun içinde ise SicaklikPini’ne bağlı sensörden gelen değerleri okuduk (doğal olarak derece değil volt) sonra kaç voltun kaç santigrat dereceye denk geldiğini hesaplatıyoruz. Bu arada bu işlemin sağlıklı olabilmesi için void setup(){} içinde  kullanacağız.

Kodun ilerleyen kısımlarında, herhangi bir yerde LM35’ten gelen ortam sıcaklığının o andaki değeri lazım olduğunda şöyle demek yeterli olacak:

sicaklikOlc();