C’deki veri türleri, değişkenlerin veya farklı tür fonksiyonlarınbildirilmesi için kullanılan kapsamlı bir sistemi ifade eder. Bir değişkenin tipi, bellekte ne kadar yer kapladığı ve depolanan bit modelinin nasıl yorumlanacağını belirlemektedir. Arduino sitesinden veri tipleri ile iligi daha fazla detay için buradaki linki tıklayabilirsiniz.
Aşağıdaki tablo Arduino programlama sırasında kullanacağınız tüm veri tiplerini mevcuttur.
void | boolean | char | unsigned char | byte | int | unsigned int | word |
long | unsigned long | short | float | double | array | string-char array | string-object |
void
void anahtar kelime yalnızca fonksiyon bildirimlerinde kullanılır. Bu fonksiyonun çağrıldığında geriye her hangi bir bilgi döndürmeyeceğini gösterir.
1 2 3 4 5 6 | void loop() { } |
boolean
Bir bool, iki değerden birini true veya false tutar. (Her bool değişkeni bir bayt bellek kaplar.)
Not: boolean Arduino tarafından tanımlanan bool için standart dışı bir takma addır. Bunun yerine, aynı tür standart bool kullanmanız önerilir.
1 2 3 4 | bool durum=false; //boolean durum=false; bool pin=true; |
char
Bir karakter saklamak için belleğin 1 baytını tutan bir veri türüdür. Karakter değerleri, aşağıdaki gibi tek tırnak içine yazılır: ‘A’ (çoklu karakterler için – dizeler için – çift tırnak kullanın: “ABC”).
Harf olarak yazılsa da ancak karakterler sayı olarak saklanır. ASCII şemasında özel kodlamayı görebilirsiniz. Bu, karakterin ASCII değerinin kullanıldığı karakterlerde aritmetik yapmanın mümkün olduğu anlamına gelir (örn. ‘A’ + 1, A büyük harfinin ASCII değeri 65 olduğu için işlem sonucu: 65+1 yani 66 olur). Karakterlerin sayılara nasıl çevrildiği hakkında daha fazla bilgi için Serial.println referansına bakabilirsiniz.
Char veri türü, -128 ile 127 arasındaki sayıların kodlandığı bir imzalı örnektir. İmzasız(unsigned) bir tek baytlık (8 bit) veri türü için bayt veri türünü kullanır.
1 2 3 4 | char myChar = 'A'; char myChar = 65; //ikiside aynı değeri tutar |
unsigned char
1 bayt bellek kaplayan işaretsiz bir veri türüdür. Bayt veri türü ile aynıdır.
unsigned char veri türü, 0 ile 255 arasındaki sayıları kodlar.
Arduino programlama stilinin tutarlılığı için bayt veri tipi tercih edilir.
1 2 3 | unsigned char myChar = 240; |
String
Metin Dizgileri iki şekilde gösterilebilir. 0019 sürümünden itibaren çekirdeğin bir parçası olan String veri tipini kullanabilir veya bir dizi char türünden bir String oluşturabilir ve null-sonlandırıcı ile kullanılır. Daha fazla bellek tasarrufu için String nesnesi hakkında daha fazla bilgi için sayfasına bakın.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | char* ornek[]={"bu bir yazi", "baska bir yazi", "yazi 3"}; char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'}; char Str6[15] = "arduino"; //Ayrıca String nesnesi ile aşağıdaki gibi de oluşturulabilir String stringOne = "Hello String"; // using a constant String String stringOne = String('a'); // converting a constant char into a String String stringTwo = String("This is a string"); // converting a constant string into a String object String stringOne = String(stringTwo + " with more"); // concatenating two strings String stringOne = String(13); // using a constant integer String stringOne = String(analogRead(0), DEC); // using an int and a base String stringOne = String(45, HEX); // using an int and a base (hexadecimal) String stringOne = String(255, BIN); // using an int and a base (binary) String stringOne = String(millis(), DEC); // using a long and a base String stringOne = String(5.698, 3); |
byte
Bir bayt,0-255 arasındaki 8 bit işaretsiz bir sayıları saklar.
int
Tamsayıları sayı depolamak için birincil veri tipidir.
Arduino Uno’da (ve diğer ATmega tabanlı anakartlarda) bir int, 16 bitlik (2 bayt) bir değer depolar. Bu, -32,768 ila 32,767 (minimum -2 ^ 15 değeri ve maksimum (2 ^ 15) – 1) değeri sağlar. Arduino Due ve SAMD tabanlı kartlarda (MKR1000 ve Sıfır gibi) bir int, 32 bit (4 bayt) değeri saklar. Bu, -2,147,483,648 ila 2,147,483,647 (en düşük -2 ^ 31 değeri ve maksimum (2 ^ 31) – 1) aralığını verir.
int, negatif sayıları (2’nin tamamlayıcı matematik) adlı bir teknikle saklar. Bazen “işaret” biti olarak adlandırılan en yüksek bit, sayıyı negatif bir sayı olarak işaretler. Bitlerin geri kalanı ters çevrilmiş ve 1 eklenmiştir.
1 2 3 4 | int ledPin = 13; int derece=75; |
unsigned int
Uno ve diğer ATMEGA tabanlı kartlarda, imzasız satırlar (işaretsiz tamsayılar), 2 baytlık bir değer depoladıkları için int ile aynıdır. Ancak negatif sayıları depolamak yerine, sadece pozitif değerler saklarlar ve 0 ile 65.535 arasında bir aralık elde ederler ((2 ^ 16) – 1).
Due, 0 ile 4,294,967,295 (2 ^ 32 – 1) arasında değişen 4 bayt (32 bit) değeri saklar.
1 2 3 | unsigned int ledPin = 13; |
word
Bir word, 16 bit işaretsiz bir sayıyı 0 ile 65535 arasında saklar. İmzasız bir int ile aynıdır.
1 2 3 | word w = 10000; |
long
long değişkenler, sayı depolama için genişletilmiş boyutlu değişkenlerdir ve -2 bit, 483,483,648’den 2,147,483,647’ye 32 bit (4 bayt) depolar.
Tamsayılarla matematik yapıyorsanız, sayılardan en az biri bir L tarafından takip edilmeli ve uzun olmalıdır.
1 2 3 | long isikHizi = 186000L; |
unsigned long
unsigned long değişkenler, sayı depolama için genişletilmiş boyutlu değişkenlerdir ve 32 bit (4 bayt) depolar. Standart long’un aksine, unsigned long negatif sayıları saklamamakta ve 0 ile 4.294.967.295 (2 – 32 – 1) arasındadır.
short
Bir short 16 bitlik veri tipidir.
Tüm Arduinolarda (ATMega ve ARM tabanlı) 16 bit (2 bayt) değerindedir. Bu, -32,768 ila 32,767 (minimum -2 ^ 15 değeri ve maksimum (2 ^ 15) – 1) değeri sağlar.
1 2 3 | short ledPin = 13 |
float
Ondalık noktası olan bir sayı sayılar için veri türüdür, . Kayan noktalı sayılar genellikle tam sayılardan daha fazla rakama sahip oldukları için analog ve sürekli değerlere yaklaşmak için kullanılır. Kayan noktalı sayılar, 3.4028235E + 38 ve -3.4028235E + 38 kadar düşük olabilir. Bunlar 32 bit (4 bayt) bilgi olarak saklanır.
Değiştirilebilir 6-7 ondalık basamak hassasiyeti vardır. Bunun anlamı, ondalık sayının sağındaki sayı değil, toplam rakam sayısıdır. Arduino’da bir çift (ör. 15 haneye kadar) kullanarak daha fazla hassasiyet elde edebileceğiniz diğer platformlardan farklı olarak, double, float ile aynı boyuttadır.
Kayan nokta sayıları kesin değerler değildir ve kıyaslandığında garip sonuçlar verebilir. Örneğin 6.0 / 3.0 sonucu 2.0 olmayabilir. Sayılar arasındaki farkın mutlak değerinin küçük bir sayıdan az olduğunu kontrol etmelisiniz.
Kayan nokta matematiği, hesaplamaların gerçekleştirilmesinde tamsayı matematikten çok daha yavaştır, bu nedenle, örneğin bir döngünün kritik bir zamanlama fonksiyonu için en yüksek hızda çalışması gerekiyorsa bundan kaçınılmalıdır. Programcılar genellikle, kayan nokta hesaplamalarını, hızı artırmak için tamsayı matematiğine dönüştürmek için bazı uzunluklara giderler.
1 2 3 4 5 6 7 8 9 10 11 12 | float myfloat; float sensorCalbrate = 1.117; int x; int y; float z; x = 1; y = x / 2; // y artık 0 değerindedir. z = (float)x / 2.0; // z artık .5 değerindedir. Ondalık için 2 yerine 2.0 şeklinde girilmelidir. (C kuralı) |
double
double kayan nokta sayısı Uno ve diğer ATMEGA tabanlı kartlarda, bu 4 bayt kaplar. Yani, bir kazanç olmadan float ile aynıdır.
Arduino Due’da, doublelar 8 bayt (64 bit) hassasiyete sahiptir.
1 2 3 | double sayi = 41.785 ; |
array
Dizi, bir index numarası ile erişilen değişkenler koleksiyonudur. Arduino’nun dayandığı C programlama dilinde diziler karmaşık olabilir, ancak Arduinoda dizileri kullamak nispeten basittir.
1 2 3 4 5 6 | int myInts[6]; int myPins[] = {2, 4, 8, 3, 6}; int mySensVals[6] = {2, 4, -8, 3, 2}; char message[6] = "hello"; |
Add Comment