Arduino

Arduino'da Değişken Türleri ve Kullanımları

Aykut AKMAN 8 ay önce Yorumlar (0) 5 Dakika Okuma
Arduino'da Değişken Türleri ve Kullanımları
E-Posta : 591 0

Arduino projelerinde kullanılan değişken türleri, verilerin saklanması ve işlenmesi için büyük önem taşır. Doğru veri türünü seçmek, hem bellek kullanımını optimize eder hem de projelerinizi daha verimli hale getirir. İşte Arduino'da kullanılan temel değişken türleri, özellikleri ve her biri için örnekler aşağıda verilmiştir.

Değişken Türleri ve Özellikleri

Veri TipiBellek KullanımıDeğer AralığıAçıklama
int2 byte-32,768 ile 32,767Tamsayıları saklar. Genellikle sayısal değerler için.
unsigned int2 byte0 ile 65,535Negatif olmayan tamsayılar için kullanılır.
long4 byte-2,147,483,648 ile 2,147,483,647Daha büyük tamsayılar için.
unsigned long4 byte0 ile 4,294,967,295Negatif olmayan büyük sayılar için.
float4 byte±3.4028235E+38'e kadarOndalık sayılar ve hassas ölçümler için.
char1 byte-128 ile 127 veya 0-255Tek bir karakter veya küçük bir sayı için.
byte1 byte0 ile 255Pozitif tam sayılar için kullanılır.
boolean1 bytetrue veya falseMantıksal doğru/yanlış durumları için.

1. int (Tamsayı Değişkenleri)

Özellikler

  • Bellek: 2 byte
  • Kullanım: Tamsayı değerlerini saklamak için kullanılır.

void setup() { int ledPin = 13; // LED'in bağlı olduğu pin numarası pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH); // LED'i yak } void loop() { // Kod sürekli çalışır }

2. unsigned int (Pozitif Tamsayı Değişkenleri)

Özellikler

  • Bellek: 2 byte
  • Kullanım: Negatif olmayan, daha büyük tamsayı değerleri için.

void setup() { unsigned int delayTime = 500; // 500ms gecikme süresi pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(delayTime); // LED 500ms yanar digitalWrite(13, LOW); delay(delayTime); // LED 500ms söner }


3. long ve unsigned long 

Özellikler

  • Bellek: 4 byte
  • Kullanım: Büyük tamsayılar ve zaman ölçümleri için.

unsigned long startTime; void setup() { Serial.begin(9600); startTime = millis(); // Arduino'nun çalışma süresini al } void loop() { unsigned long currentTime = millis(); Serial.println(currentTime - startTime); // Çalışma süresini yazdır delay(1000); // Her saniye günceller }

4. float (Ondalık Sayılar)

Özellikler

  • Bellek: 4 byte
  • Kullanım: Sıcaklık, voltaj gibi hassas ölçümler için.

void setup() { 
float voltage = 5.23; // Ölçülen voltaj 
Serial.begin(9600); 
Serial.print("Voltage: ");
Serial.println(voltage);
}
void loop() { // Döngüde işlem yapılmaz
}

5. char (Karakter Değişkenleri)

Özellikler

  • Bellek: 1 byte
  • Kullanım: Tek bir karakter veya ASCII kodları için.

void setup() {
char firstLetter = 'A'; // Karakter tanımlama
Serial.begin(9600);
Serial.print("The first letter is: ");
Serial.println(firstLetter);
}
void loop() { // Döngüde işlem yapılmaz
}

6. boolean (Mantıksal Değerler)

Özellikler

  • Bellek: 1 byte
  • Kullanım: Doğru (true) veya yanlış (false) durumları için.

void setup() {
    boolean isOn = true;
    pinMode(13, OUTPUT);
      if (isOn) { 
          digitalWrite(13, HIGH); // LED'i yak
     }
}
void loop() { 
    // Döngüde işlem yapılmaz 
}

7. byte (Pozitif Küçük Sayılar)

Özellikler

  • Bellek: 1 byte
  • Kullanım: Küçük pozitif tam sayılar.

void setup() {
    byte brightness = 255; // LED'in maksimum parlaklığı
    analogWrite(9, brightness); // PWM ile LED'i parlak yak
}
void loop() {
 // Döngüde işlem yapılmaz

}

Arduino'da değişken türlerini doğru seçmek, projelerinizi daha etkili ve optimize hale getirir. Her bir değişken türü farklı durumlarda kullanılır ve bu durumlara uygun örnekler, temel seviyeden ileri seviyeye geçişi kolaylaştırır.

Sıkça Sorulan Sorular

  • int: Hem pozitif hem de negatif tamsayıları saklar. Bellek kullanımı 2 byte olup, değer aralığı -32,768 ile 32,767 arasındadır.
  • unsigned int: Sadece pozitif tamsayıları saklar. Bellek kullanımı yine 2 byte olup, değer aralığı 0 ile 65,535 arasındadır.
  • long, daha büyük tamsayıları saklamak için kullanılır ve 4 byte bellek kullanır. Genellikle zaman ölçümleri veya büyük sayıların saklanması gerektiğinde kullanılır. Örneğin, Arduino'nun çalışma süresi gibi uzun süreli sayıları tutmak için idealdir.

    float, ondalıklı sayıları ve hassas ölçümleri saklamak için kullanılır. 4 byte bellek kullanır ve ±3.4028235E+38'e kadar değer alabilir. Örneğin, sıcaklık ölçümü gibi hassas verileri tutmak için kullanılır. Örnek kullanım:

    float voltage = 5.23;
    Serial.println(voltage);

    char, bir karakter veya ASCII kodları saklamak için kullanılır ve 1 byte bellek kullanır. Bir harf veya sembol gibi küçük verileri depolamak için kullanılır. Örneğin, bir karakteri saklamak için kullanılabilir:

    char firstLetter = 'A';

    boolean, sadece iki değeri (doğru veya yanlış) saklamak için kullanılan bir veri türüdür ve 1 byte bellek kullanır. Mantıksal koşullar kontrol etmek için kullanılır. Örneğin:

    boolean isOn = true;
    if (isOn) {
      digitalWrite(13, HIGH); // LED'i yak
    }

    byte, 0 ile 255 arasındaki pozitif tam sayıları saklamak için kullanılır ve 1 byte bellek kullanır. Küçük pozitif sayılar gerektiğinde kullanılır. Örneğin, bir LED'in parlaklık seviyesini ayarlamak için kullanılabilir:

    byte brightness = 255; // LED'in maksimum parlaklığı
    analogWrite(9, brightness);

  • int: 2 byte bellek kullanır ve -32,768 ile 32,767 arasındaki tamsayıları saklar.
  • long: 4 byte bellek kullanır ve daha büyük sayılar (yaklaşık ±2 milyar) için kullanılır. Eğer int tipi yeterli gelmiyorsa, long kullanılır. Örneğin, zaman ölçümleri gibi büyük sayılar için long idealdir.
  • long veri tipi, 4 byte bellek kullanarak daha fazla bellek tüketir. int ve unsigned int 2 byte bellek kullanırken, byte, boolean, char gibi veri türleri sadece 1 byte bellek kullanır. Verinin büyüklüğüne göre doğru veri tipi seçilmelidir.

    Değişken türü seçerken aşağıdaki faktörlere dikkat edilmelidir:

    1. Verinin büyüklüğü: Verinin değer aralığını dikkate alarak uygun türü seçin (örneğin, büyük sayılar için long, küçük sayılar için byte).
    2. Bellek kullanımı: Arduino kartınızın bellek sınırlarını göz önünde bulundurun.
    3. Hassasiyet gereksinimi: Ondalık sayılar için float, tam sayılar için int veya long tercih edin.

    int, yalnızca tam sayıları saklar ve 2 byte bellek kullanır. float ise ondalıklı sayıları ve hassas verileri saklar ve 4 byte bellek kullanır. Örneğin, sıcaklık ölçümleri veya voltaj gibi hassas değerler için float kullanılır, tam sayılar için ise int kullanılır.

  • int: Hem pozitif hem de negatif tamsayılar için kullanılır (-32,768 ile 32,767 arasında).
  • unsigned int: Sadece pozitif tamsayılar için kullanılır (0 ile 65,535 arasında).
  • Daha büyük tamsayılar için long veya unsigned long kullanılır.
    Örneğin:

    • long değişkeni -2,147,483,648 ile 2,147,483,647 arasında değer alabilir.
    • unsigned long ise 0 ile 4,294,967,295 arasında değer saklar.

    millis() veya micros() gibi fonksiyonlar, Arduino'nun çalışma süresini ölçer ve genellikle büyük değerler döndürür. Bu nedenle, 0’dan büyük geniş bir aralığı kapsayan unsigned long bu işlemler için idealdir.

    Doğru değişken türünü seçmek bellek kullanımını optimize eder ve projelerin daha verimli çalışmasını sağlar. Örneğin, küçük değerler için byte, hassas ölçümler için float kullanmak daha iyidir.

    float, sınırlı hassasiyette bir veri türüdür. Bu nedenle, bazı ondalık sayılar yuvarlanarak saklanır ve bu da küçük hatalara neden olabilir.

    Değişkenlerin bellekte kapladığı alanı öğrenmek için sizeof() fonksiyonu kullanılabilir.
    Örnek:

    Serial.println(sizeof(int)); // int türünün bellek boyutunu yazdırır (2 byte).

    Evet, farklı değişken türlerini bir programda bir arada kullanabilirsiniz. Ancak, doğru veri türünü seçmek önemlidir. Bellek sınırlamalarına dikkat edilmelidir.

    Taşma, bir değişkenin alabileceği maksimum değeri aştığında oluşur. Örneğin, int değişkeni 32,767’den büyük bir değere ulaştığında tekrar -32,768’den başlar.

    volatile, bir değişkenin donanım kesintileri gibi dışsal etkilerle değişebileceğini belirtir. Bu değişken türü genellikle kesme fonksiyonlarında kullanılır.

  • Global değişkenler: Programın her yerinden erişilebilir.
  • Local değişkenler: Sadece tanımlandığı fonksiyon içinde erişilebilir.
  • Aykut AKMAN

    Aykut AKMAN

    Bilişim Öğretmeni

    Bu Gönderiye Yorum Yapılmamış

    Yorum Yap

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

    Diğer Yazılar