Arduino Veri Tipleri, AHMT derece() fonksiyonu

Evvel zaman içinde, kalbur saman içinde: ##1, ##2, ##3##4, ##5


Arduino fonksiyonlarını kullanırken, ne zaman Void ne zaman Byte ya da Int kullandığımıza bakmıştık. Olayın mantığı açısından Byte ve Int örnekleri kafi sanırım. Ama yine de yanlış anlaşılma olmaması için sadece bunlarla kısıtlı olmadığını belirtelim. Aşağıdaki veri tiplerinin hepsi kullanılabilir. Yeri gelmişken kimin ne olduğuna değinelim.

Arduino Veri Tipleri

bool  // Evet Hayır Doğru Yanlış HIGH LOW tanımları için  kullanılır

boolean // standart değildir ve bool ile aynı işlevi görür

byte // 8 adet 0/1’den oluşur. Yani 1 Byte. Sayı olarak 0-255 arası değerler için  kullanılır

char // tahmin edilenin aksine özünde -127 ve +127 aralığındaki sayılara karşılık gelir. char x = 65 tanımı ASCII tablosunda A olarak tanımlandığı için A’ya denk olur.  Harf işlemleri için kullanılır.

String  // Metin kelime/cümle tanımları için kullanılır. Sayılar için kullanıldığında ASCII metin görünümünü verir. String() fonksiyonu ile karıştırmamak gerekir.

int // en az 16 adet 0/1’den oluşur. Yani 2 Byte. -32,768 ila 32,767 arasındaki değerler için kullanılır. AMA! Bu standart değildir. İşletim sistemi ya da İşlemci’ye göre farklılık arz edebilir. Örneğin Arduino Due için INT demek 32bit/4byte demek olduğu için -2,147,483,648 ila 2,147,483,647 arası değerleri taşıyabilir.

int16_t // yukarıdaki sorunu çözmek ve cihaz değişikliklerinde sorun yaşamamak için “tam olarak 16 bit” manasında kullanılır.

long // en az 32 adet bitten oluşur. Yani 4 Byte. -2,147,483,648 ila 2,147,483,647 değerler için kullanılır. Standart olmama durumu yine vardır.

int32_t // tam olarak 32 bitten oluşur.

float // ondalıklı sayılar için kullanılır. Örn: 12.34 ya da 56.78E+4 gibi..

double // AtMega işlemcili (AVR dili kullanan) kartlar için Float ile aynı işlevi görür

short // Arduinolar için int ile aynı işlevi görürür

unsigned char // Eksiden başlamak yerine 0’dan başlar. Dolayısıyla char -127 ila +127 arasında iken, işaretsiz unsigned char 0-255 arası değer alabilir.

unsigned int // benzer şekilde eksiden (-32,768) başlamak yerine Sıfırdan başladığı için 65,535’e kadar değer alabilir

unsigned long // 0 – 4,294,967,295 arası değer alabilir.

void // değer döndürmeyen fonksiyonlar için kullanılır

word // 0 – 65,535 arası değer alır, unsigned int ile aynı işlevi görür.


https://www.arduino.cc/reference/en/#variables


byte derece() { } fonksiyonu

Daha önce sıcaklık ölçmek için fonksiyon yazmıştık.

Görüldüğü üzere void fx(){} olarak kullanmışız. Yani; Evet sıcaklık pinine gelen voltaj değerlerini okuyup bunun kaç dereceye denk geldiğini hesaplatıyoruz ancak fonksiyonu kullandığımızda elimize “eşittir şu” diyecek şekilde bir değer sunmuyor bize.

Bunun olabilmesi için yukarıdaki veri tiplerini de göz önünde bulundurarak, fonksiyonumuzu şu şekilde tanımlayabiliriz:

neredeyse aynı. Sadece küçük ama önemli nüanslar var:

* byte fx(){} olarak kullandık, bize sunacağı değer 0-255 arasında olacağı için. (int ya da long da kullanabilirdik ama oda sıcaklığı için 255 zaten hayli yeterli)

* return derece; var, hesapladığı değeri bize sunması/döndürmesi için

* başta değerleri sıfırlıyoruz. Her fonksiyon için şart değil elbet ancak biz sıkça kullanacağımız için, önceki ölçüm değeri ile karışıklık olmaması için sıfırlayalım, kafamız rahat olsun 😉

 

Leave a Comment

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