Arduino Programlama Dili – Veri Tipleri (2)

4
9936
Okunma

Arduino veri Tipleri

Arduino Veri Tipleri


float (ondalık sayılar)

Arduino veri Tipleri. Kayan nokta sayıları için veri türü, ondalık sayılar.(örneğin 2.56)
Ondalıklı sayılar tamsayılara göre daha yüksek çözünürlüğe sahip olduklarından, analog ve sürekli değerlerde kullanılırlar. (Sıcaklık değerini 25 yerine 25.56 gibi vermek istediğimizde) 3.4028235E + 38 kadar büyük ve -3.4028235E + 38 kadar düşük olabilir.
32 bit (4 bayt) bilgi olarak saklanırlar.

float sadece 6-7 ondalık basamak hassaslığa sahiptir. Bu, ondalık noktanın sağındaki sayı değil, toplam basamak sayısı anlamına gelir. Arduino’da bir çift (örneğin, 15 basamaklı) kullanarak daha fazla hassasiyet elde edebileceğiniz diğer platformların aksine, çift, float ile aynı boyuttadır.

Ondalık sayı numaraları tam değildir ve karşılaştırıldığında garip sonuçlar doğurabilir.

Örneğin, 6.0 / 3.0  2.0’a eşit olmayabilir. Bunun yerine rakamlar arasındaki farkın mutlak değerinin küçük bir rakamın altında olduğunu kontrol etmelisiniz.

Kayan nokta matematik de hesaplamalarda tamsayı matematikten çok daha yavaştır, bu nedenle örneğin bir döngünün kritik bir zamanlama işlevi için en yüksek hızda çalışması gerekiyorsa kaçınılmalıdır.

Programcılar genellikle hızı artırmak için kayan nokta hesaplamalarını tam sayı matemata dönüştürmek için bazı uzunluklara gider.float matematik işlemi yaparsanız, bir ondalık basamak eklemeniz gerekir; aksi takdirde bir int olarak ele alınacaktır.

Ayrıntılar için Kayan Nokta Sabitleri Sayfasına bakan.

float degisken1;                   //  
float sensorKalibret = 1.117;      //

Örnek;

int x;                // x int olarak tanımlandı.
int y;                // y int olarak tanımlandı.
float z;              // z float olarak tanımlandı.

x = 1;                // x'e bir olarak atandı.
y = x / 2;            // x'i 2'ye böldük ama y int olduğundan sonuç 0
z = x / 2.0;          // x'i 2.0 ile böldük ve z de float olduğu için 0.5

double (ondalık sayılar)

Uno ve diğer ATMEGA tabanlı kartlarda bu 4 bayt kaplar. Yani, double uygulama tam olarak float ile aynıdır, kesin olarak bir kazanç elde edilmemektedir. Fakat Arduino Due’da çiftler 8 bayt (64 bit) hassaslığa sahiptir.

string (char array – karakter dizisi)

char veri türünden olan karakterler toplamıdır.

  char Str1[15];
  char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
  char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
  char Str4[ ] = "arduino";
  char Str5[8] = "arduino";
  char Str6[15] = "arduino";
  • Bir dizi karakteri Str1’de olduğu gibi başlatmadan tanımladık.
  • Bir dizi char (bir ekstra char ile) bildirin ve derleyici, gerekli null karakteri Str2’de olduğu gibi ekleyecektir
  • Str3 Boş karakteri açıkça ekleyin,
  • Str4’ü tırnak işaretleri içinde bir dize sabiti ile başlat; dize sabitine uyacak şekilde boyutlandırır.
  • Diziyi açık bir boyut ve dize sabitiyle başlatın, Str5
  • Diziyi başlatır, daha büyük bir dize, Str6 için ekstra alan bırakır

Genellikle, dizeler boş bir karakterle sonlandırılır (ASCII kodu 0).

Bu, işlevlerin (Serial.print() gibi) bir dizenin sonunun nerede olduğunu söylemesine izin verir. Aksi takdirde, aslında dizenin bir parçası olmayan daha sonraki bellek baytlarını okumaya devam edeceklerdi.

Bu nedenle, “arduino” yalnızca yedi olmasına rağmen, Str2 ve Str5’in sekiz karakter olması gerekir – son konum otomatik olarak boş bir karakterle doldurulur.

Str4, otomatik olarak sekiz karaktere, birincisi fazladan boşa boyutlandırılacaktır.
Str3’te açıkça null karakterini (‘\ 0’ olarak) dahil ettik.

String (objeler)

String sınıfının bir örneğini oluşturur. Aşağıdakiler de dahil olmak üzere farklı veri türlerinden Strings oluşturan çoklu sürümler vardır (örneğin, karakter dizileri olarak biçimlendirir):

  • Çift ​​tırnak içinde sabit karakter dizisi (örneğin bir char dizisi)
  • Tek tırnak içinde tek bir sabit karakter
  • String nesnesinin başka bir örneği
  • Sabit bir tamsayı veya uzun bir tamsayı
  • Belirli bir taban kullanılarak sabit bir tamsayı veya uzun bir tam sayı
  • Bir tamsayı veya uzun bir tamsayı değişkeni
  • Belirtilen bir taban kullanılarak bir tamsayı veya uzun bir tamsayı değişkeni
  • Belirli bir ondalık sayı kullanarak bir kayan nokta veya çift

Bir dizeden bir dizi oluşturmak, bu sayının ASCII temsilini içeren bir dizeyle sonuçlanır. Varsayılan temel on, yani:

“String thisString = String(13);” size “13” dizesini verir. Bununla birlikte, diğer üsleri kullanabilirsiniz. Örneğin,

“String thisString = String(13, HEX);”  Ondalık ondalık değerinin onaltılık gösterimi olan “D” dizesini verir. Ya da ikiliyi tercih ederseniz,

“String thisString = String(13, BIN);” size 13’ün ikili temsili olan “1101” dizesini verir.

Sözdizimi
String(val)
String(val, base)
String(val, decimalPlaces)

Parametreler
val : String olarak biçimlendirilecek bir değişken – İzin verilen veri türleri: string, char, bayt, int, long, unsigned int, unsigned long, float, double
base (isteğe bağlı): bir integral değeri decimalPlaces biçimlendirileceği decimalPlaces ( yalnızca val float veya double ise ): istenen ondalık basamaklar.

Diziler (Array)

Diziler genelde fazla kod yazmaktan kaçınılırken kullanılır ve kullanımı oldukça fayda sağlar. Ne yönden fayda sağlar diyecek olursanız fazla kod yazmanızı önler.

Örnegin 4 farklı değeri saklamamız gerektiğinde ;

int deger1;
int deger2;
int deger3;
int deger4;
int degerler[4]; // 4 tane int değeri tanımlamak yerine tek seferde dizide tanımladık.
// başka örnekler;
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "hello";

İlgili Örnekler:
Arduino Yerleşik(Temel) Örnekler:
8. Strings (Diziler)

Veri Tablosu:

Veri Tablosu

Dönüşümler

char() , byte() , int() , word() , long() , float(),

komutları parantez içine aldıkları herhangi bir veriyi çevirmemiz için kullanılır.


NOT: Buradaki bilgiler arduino.cc sitesinden Türkçeye çevrilmiştir.
Türkçe çevirinin tüm hakları saklıdır.
Bu web sayfası sadece link olarak paylaşılabilir.
Sayfada herhangi bir hata, öneri ve yorumlarınız için iletişim kurmanızı bekleriz.


4 YORUMLAR

  1. Diğer Yorumu gördüm yazma gereği hissettim, gayet açıklayıcı olmuş, diğer arkadaş neye göre çeviriyi beğenmemiş anlam veremedim. çok teşekkür ederim elinize emeğinize sağlık

CEVAP VER

Please enter your comment!
Please enter your name here

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.