Haberler

Arduino Veri Türleri ile Başlarken

Arduino veri türleri. Arduino’yu programlarken önemli bir rol oynarlar. Bir bilgisayar olan Arduino, veri iletiminin nasıl yapıldığını bilmez veya umursamaz (veri aldığı şekli bilmez veya umursamaz).

Veri türleri olmadan, o değişkene ayrılan bellek miktarını belirleyemezsiniz ve değişkende hangi tür verilerin saklanabileceğini belirlemek, değişkenin veri türünü önemli kılar.

Bir veri türü, bir değişkenin tuttuğu değeri ve üzerinde gerçekleştirebileceğimiz işlemleri tanımlayan bir sınıflandırma olarak tanımlanabilir. Değişkenlerin yanı sıra, döndürdükleri değerlere bağlı olarak fonksiyonların da veri türleri vardır.

Bu eğitimde, Arduino’nuzu programlarken kullanacağınız farklı veri türlerini öğreneceksiniz. Veri türleri şunlardır:

  • void
  • boolean
  • char
  • Unsigned char
  • byte
  • int
  • Unsigned int
  • Word
  • Long
  • Unsigned long
  • short
  • float
  • double

Bu eğitim ARRAY’LERİ, işaretçileri veya dizeleri kapsamayacaktır çünkü bunlar daha özel ve daha fazla temel kavram içerir.

Daha fazla uzatmadan, ilk veri türümüze, void‘a geçelim.


void

void, yalnızca fonksiyonlar tanımlanırken kullanılır. Fonksiyonun çağrıldığında hiçbir değer döndürmemesi beklendiğini belirtmek için kullanılır.

Setup ve Loop fonksiyonlarının void türünde olduğunu ve herhangi bir bilgi döndürmediğini belirtmek önemlidir.

Örnek void kodu

void setup()
{
    Serial.begin(9600);
}
void loop()

boolean

Bir boolean, ya true ya da false olan iki boolean değerinden birini tutar. boolean, Arduino tarafından tanımlanan bool için standart dışı bir tür takma adıdır.

Bu Arduino veri türü 8 bit / 1 byte bellek kullanır.

Örnek boolean kodu

int LEDpin = 5;       // LED pin 5'te
int switchPin = 13;   // 13'te anlık anahtar, diğer tarafı toprakla bağlı

boolean running = false;

void setup()
{
  pinMode(LEDpin, OUTPUT);
  pinMode(switchPin, INPUT);
  digitalWrite(switchPin, HIGH);      // pullup direncini aç
}

void loop()
{
  if (digitalRead(switchPin) == LOW)
  {  // anahtar basılı - pullup normalde pini yüksek tutar
    delay(100);                        // anahtarı debounce etmek için gecikme
    running = !running;                // running değişkenini değiştir
    digitalWrite(LEDpin, running);      // LED ile göster
  }
}

char

char, karakterin kısaltmasıdır ve bir karakter değerini (A, B, C) saklamak için kullanılan bir veri türüdür. Birden fazla karakter başlatıldığında, tek tırnak içinde yazılır (örneğin, ‘A’), ancak dizeler çift tırnak kullanır (örneğin, ”ABC”)

Karakterler sayılar olarak saklanır. Belirli kodlama için, aşağıda gösterilen ASCII Tablosuna başvurabilirsiniz.

Karakterler sayılar olarak saklandığı için, ASCII değerini kullanarak üzerinde aritmetik işlemler yapabilirsiniz. char veri türü, -128 ile 127 arasındaki sayıları kodlar.

Bu Arduino veri türü en az 8 bit bellek kullanır. Karakterleri saklamak için char kullanmanız önerilir.

Örnek char kodu

char myChar = 'A';
char myChar = 65; // her ikisi de eşdeğerdir

Unsigned char

unsigned char veri türü, 0 ile 255 arasındaki sayıları kodlar.

Bu Arduino veri türü, byte veri türü ile benzer olan 8 bit / 1 byte bellek kullanır. Arduino programlama stilinin netliği ve tutarlılığı için, unsigned bir byte veri türü olarak byte veri türü önerilir.

Örnek Unsigned char kodu

unsigned char myChar = 240;

byte

Unsigned char veri türüne benzer şekilde, byte 0-255 aralığında 8 bitlik unsigned bir sayıyı kodlar.

Örnek byte kodu

byte m = 25 ;//byte türünde bir değişkenin tanımı ve 25 ile başlatılması

int

int, tam sayı anlamına gelir ve Arduino’da en yaygın kullanılan veri türlerinden biridir. Sayıları saklamak için birincil veri türünüzdür.

int boyutunun karttan karta değiştiğini unutmayın. Örneğin, ATmega tabanlı Arduino kartlarında (Uno, Mega ve Nano gibi) bir int 2 byte bellek kullanır ve -32,768 ile +32,767 aralığına sahiptir. Ancak Due ve SAMD tabanlı kartlarda (örneğin, MKR1000, Zero) int 4 byte bellek kullanır ve -2,147,483,648 ile +2,147,483,647 aralığına sahiptir.

Örnek int kodu

int countUp = 0; // 'countUp' adında bir tam sayı değişkeni oluşturur

Unsigned int

Unsigned int, 2 byte değer saklama açısından int ile benzerdir. Ancak, negatif sayıları saklamak yerine yalnızca 0 ile +65,535 arasındaki pozitif değerleri saklar.

Unsigned int boyutu da int gibi karttan karta değişir; ATmega tabanlı Arduino kartları 2 byte değer saklarken, Due ve SAMD tabanlı kartlar 4 byte (32-bit) değer saklar ve 0 ile 4,294,967,295 aralığına sahiptir.

Unsigned int ile int arasındaki ana fark, en yüksek bitin/işaret bitinin nasıl yorumlandığıdır. int türünde (ki bu işaretlidir), en yüksek bit “1” ise, sayı negatif bir sayı olarak yorumlanır ve diğer 15 bit ile birlikte yorumlanır.

Örnek unsigned int kodu

unsigned int ledPin = 13;

Word

Word veri türü, önceki unsigned int veri türüne çok benzer. ATmega tabanlı Arduino kartlarında, bir word 16 bitlik unsigned bir sayıyı 2 byte değer ile saklar ve 0 ile +65535 aralığındadır. Due ve SAMD tabanlı kartlar için ise 32 bitlik unsigned bir sayıyı 4 byte değer ile saklar.

Örnek Word kodu

word w = 10000;

Long

Long değişkenleri, sayı saklamak için genişletilmiş boyutlu değişkenlerdir. Long değişkenleri, -2,147,483,648 ile +2,147,483,647 aralığında 4 byte (32 bit) bellek kullanır.

Örnek Long kodu

long speedOfLight = 186000L; // Long türünde bir değişkenin tanımı ve 186000 ile başlatılması

Unsigned long

Long veri türüne benzer şekilde, unsigned long değişkenleri sayı saklamak için genişletilmiş boyutlu değişkenlerdir ve 4 byte (32 bit) bellek kullanır. Ancak, standart Long’ların aksine, unsigned long’lar negatif sayıları saklamaz. 0 ile +4,294,967,295 aralığına sahiptirler.

Örnek Unsigned long kodu

unsigned long time;

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("Zaman: ");
  time = millis();
  // program başladığından beri geçen zamanı yazdırır
  Serial.println(time);
  // büyük miktarda veri göndermemek için bir saniye bekle
  delay(1000);
}

short

Short veri türü, 16 bitlik bir değeri saklar ve Tüm Arduino’larda 2 byte bellek kullanır. -32,768 ile +32,767 aralığına sahiptir.

Örnek short kodu

short ledPin = 13

float

Float, ondalık sayıları saklayabildiği için en önemli Arduino veri türlerinden biridir. Bu veri türü, ondalık noktası olan sayılar için kullanılır.

Ondalık sayılar, genellikle analog ve sürekli değerleri yaklaşık olarak temsil etmek için kullanılır çünkü tam sayılara göre daha yüksek çözünürlük sunarlar.

Bu veri türü 32 bit / 4 byte bellek kullanır ve -3.4028235E+38 ile +3.4028235E+38 aralığına sahiptir.

Örnek float kodu

float myfloat;
float sensorCalbrate = 1.117;

int x;
int y;
float z;

x = 1;
y = x / 2;          // y şimdi 0 içeriyor, int'ler kesirleri tutamaz
z = (float)x / 2.0; // z şimdi .5 içeriyor (2.0 kullanmalısınız, 2 değil)

double

Bu veri türü, çift hassasiyetli bir kayan nokta sayısıdır. ATmega tabanlı Arduino kartlarında (Uno, Mega ve Nano gibi) çift hassasiyetli kayan nokta sayısı 4 byte (32 bit) yer kaplar. Yani, çift uygulaması tam olarak float ile aynıdır, hassasiyette bir kazanç yoktur.

Ancak, Due ve SAMD tabanlı kartlarda (örneğin, MKR1000, Zero) çift 8 byte (64-bit) hassasiyete sahiptir.

Örnek double kodu

double num = 45.352 ;// double türünde bir değişkenin tanımı ve 45.352 ile başlatılması

Arduino’nuzu programlarken hangi veri türünü seçmelisiniz?

Genel olarak, seçtiğiniz veri türü programlama sırasında çok büyük bir sorun değildir. Ancak, boyut ve hız söz konusu olduğunda, doğru veri türünü seçmek kritik öneme sahiptir.

Bir veri türü seçerken, saklamanız gereken değeri tamamen içerecek en küçük veri türünü seçmeye çalışın. Örneğin, bir pin numarasını saklamak istiyorsanız, ancak kartınızda 128’den az pin varsa, bu değeri byte veya char türünde saklamak en iyi seçenektir.

Diğer yandan, 128 pinin üzerinde ancak 255 pinin altında bir kartınız varsa, byte veya unsigned char veri tipini kullanabilirsiniz.

Daha küçük veri tipleri kullanarak, daha az bellek okuması gerektirdiğinden hızınızı artırabilirsiniz.

Sonuç olarak, veri tipinizi seçerken, her zaman değeri saklamak için gerekli olan en küçük veri tipini kullanın.


Sonuç

Bu eğitim için hepsi bu kadar. Bu Arduino veri tipleri hakkında herhangi bir sorunuz varsa, aşağıda bir yorum bırakmayı unutmayın!

Arduino’nuzu programlamaya başlamak istiyorsanız ancak hangi Arduino kartını alacağınızı bilmiyorsanız, endişelenmeyin; aşağıda hemen hemen tüm Arduino modellerini, ayrıca Seeeduino modellerimizi karşılaştıran basit bir tablo var.

7 resmi Arduino kartı ve 13 Seeeduino kartı için işlemci, çalışma voltajı, giriş voltajı, saat hızı, dijital I/O, PWM, analog girişler, UART, Grove bağlantıları, flash bellek ve USB bağlantıları dahil olmak üzere spesifikasyonları listeledik. Umarım bu tablo, farklı Arduino kartlarını hızlı bir şekilde karşılaştırmanıza ve projeniz için en uygun olanı seçmenize yardımcı olur.

İşlemci Çalışma Voltajı Saat Hızı Dijital I/O PWM Analog Girişler UART Grove Flash(KB) USB
Arduino Uno ATmgea328 5V 16 MHZ 14 6 6 1 0 32 Micro USB
Arduino Mega 2560 R3 ATmega2560 5V 16 MHZ 54 15 16 4 0 256 Type-B USB
Arduino Nano ATmega328 5V 16 MHZ 14 6 8 1 0 32 Mini USB
Arduino Micro ATmega32u4 5V 16 MHZ 20 7 12 2 0 32 Micro USB
Arduino YUN ATmega32u4 5V 16 MHZ 20 7 12 2 0 32 Micro USB
Arduino MKR1000 wifi ATSAMW25 SoC 5V 48 MHZ 8 12 7 1 0 256 Micro USB
Seeeduino Mega ATmega2560 5V/3.3V 16MHz 70 14 16 4 0 256 Micro USB
Seeeduino Lite ATmega32u4 5V/3.3V 16MHz 20 7 12 1 2 32 Micro USB
Seeeduino GPRS ATmega32u4 5V/3.3V 16MHz 20 7 12 1 0 32 Micro USB
Seeeduino Cloud ATmega32u4 5V/3.3V 16MHz 20 7 12 1 2 32 Micro USB
Seeeduino V4.2 ATmega328 5V/3.3V 16MHz 14 6 6 1 3 32 Micro USB
Seeeduino Stalker V3.1 Atmega328P 5V/3.3V 8MHz 14 0 6 1 2 32 Mini USB
Seeeduino LoRaWAN ATSAMD21G18 5V/3.3V 48MHz 20 20 6 2 4 256 Micro USB
Seeeduino LoRaWAN W/GPS ATSAMD21G18 3.3V 48MHz 20 20 6 2 4 256 Micro USB
Seeeduino Lotus V1.1 Atmega328P 5V 16MHz 14 6 7(0-5, ADC) 1 12 32 Micro USB
Seeeduino Lotus Cortex-M0+ SAMD21 3.3V 48MHz 14 10 6 2 12 256 Micro USB
Seeeduino Cortex-M0+ SAMD21 5V 48MHz 14 10 6 1 3 256 Type-C
Seeeduino Nano Atmega328P 5V 16MHz 14 6 8 1 1 32 Type-C
Seeeduino Crypto ATmega4809 5V 16Mhz 14 5 6 1 3 48 Type-C
Seeeduino XIAO SAMD21G18 3.3V 48MHz 11 10 11 1 0 256

Leave a Reply

Your email address will not be published. Required fields are marked *