değişkenler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Arduino Programlama Dili: Temel Yapılar (Değişkenler)

Arduino Programlama Dili: Temel Yapılar (Değişkenler)

Arduino Programlama Dili: Temel Yapılar - Değişkenler

Merhaba Arduino severler!

Bu yazımızda Arduino programlamanın temel taşlarından biri olan değişkenleri inceleyeceğiz. Değişkenler, programlarımızda verileri saklamak, işlemek ve yönetmek için kullandığımız temel araçlardır. Tıpkı bir kutu gibi düşünebilirsiniz, bu kutunun içine sayı, yazı veya herhangi bir bilgiyi koyup, gerektiğinde bu bilgiye erişebiliriz.

Değişken Nedir?

Değişkenler, bilgisayarın belleğinde (RAM) belirli bir alanı temsil eden, adlandırılmış depolama birimleridir. Her değişkenin bir adı (identifier) ve bir türü (data type) vardır. Tür, değişkenin hangi türde veriyi saklayabileceğini (sayı, metin, vb.) belirler. Ad ise, değişkenin değerine erişmek için kullandığımız etikettir.

Değişken Tanımlama (Declaration)

Bir değişkeni kullanmadan önce tanımlamamız gerekir. Tanımlama işlemi, değişkenin adını ve türünü belirtmekten ibarettir. Arduino'da değişken tanımlama sözdizimi şöyledir:


 veri_tipi değişken_adı;
 

Örneğin, bir tam sayı (integer) değişkeni tanımlamak için:


 int sayac;
 

Bu ifade, "sayac" adında bir tam sayı değişkeni oluşturur. Henüz bu değişkene bir değer atamadık, ancak artık bu değişkeni programımızda kullanabiliriz.

Veri Tipleri (Data Types)

Arduino'da sıkça kullanılan bazı veri tipleri şunlardır:

  • int: Tam sayıları (örneğin, -10, 0, 5, 100) saklamak için kullanılır. 2 byte (16 bit) yer kaplar. -32,768 ile 32,767 arasındaki değerleri saklayabilir.
  • long: Daha büyük tam sayıları saklamak için kullanılır. 4 byte (32 bit) yer kaplar. -2,147,483,648 ile 2,147,483,647 arasındaki değerleri saklayabilir.
  • float: Kayan noktalı sayıları (ondalıklı sayılar, örneğin 3.14, -2.5, 1.0) saklamak için kullanılır. 4 byte yer kaplar.
  • double: Daha yüksek hassasiyette kayan noktalı sayıları saklamak için kullanılır. Arduino'da `float` ile aynıdır (4 byte yer kaplar).
  • char: Tek bir karakteri (örneğin, 'a', 'B', '5') saklamak için kullanılır. 1 byte yer kaplar.
  • boolean: Doğru (true) veya yanlış (false) değerlerini saklamak için kullanılır. 1 byte yer kaplar.
  • byte: 0 ile 255 arasındaki değerleri saklamak için kullanılır. 1 byte yer kaplar.
  • word: 0 ile 65535 arasındaki değerleri saklamak için kullanılır. 2 byte yer kaplar.
  • unsigned int: `int` veri tipinin işaretsiz versiyonudur. 0 ile 65535 arasındaki değerleri saklayabilir.
  • unsigned long: `long` veri tipinin işaretsiz versiyonudur. 0 ile 4,294,967,295 arasındaki değerleri saklayabilir.
  • String: Metin dizilerini saklamak için kullanılır. Ancak Arduino'da `String` sınıfını kullanmak yerine, karakter dizilerini (char array) kullanmak daha iyi bir pratiktir, çünkü `String` sınıfı bellek yönetiminde sorunlara yol açabilir.

Değişkene Değer Atama (Assignment)

Bir değişkene değer atamak için eşittir (=) işaretini kullanırız.


 değişken_adı = değer;
 

Örneğin:


 int sayac = 10; // "sayac" değişkenine 10 değerini atadık
 float pi = 3.14;  // "pi" değişkenine 3.14 değerini atadık
 char ilkHarf = 'A'; // "ilkHarf" değişkenine 'A' karakterini atadık
 boolean durum = true; // "durum" değişkenine doğru (true) değerini atadık
 

Örnek Uygulama

Şimdi basit bir örnekle değişkenlerin kullanımını görelim. Bu örnekte, bir LED'i yakıp söndüreceğiz. LED'i kontrol etmek için bir pini çıkış olarak ayarlayacak ve bir değişken kullanarak LED'in durumunu (yanıp yanmadığını) kontrol edeceğiz.

Devre Bağlantısı:

  • LED'in anot (uzun bacak) -> 220 ohm direnç -> Arduino Dijital Pin 13
  • LED'in katot (kısa bacak) -> Arduino GND

 // LED'in bağlı olduğu pini tanımlıyoruz
 const int ledPin = 13;

 // LED'in durumunu saklayacak değişkeni tanımlıyoruz
 boolean ledDurumu = false;

 void setup() {
  // LED pinini çıkış olarak ayarlıyoruz
  pinMode(ledPin, OUTPUT);
 }

 void loop() {
  // LED'in durumunu tersine çeviriyoruz (yanıyorsa söndürüyor, sönükse yakıyoruz)
  ledDurumu = !ledDurumu;

  // LED'i yakıp söndürüyoruz
  digitalWrite(ledPin, ledDurumu);

  // Kısa bir süre bekliyoruz (1 saniye)
  delay(1000);
 }
 

Bu kodda, ledDurumu adında bir boolean değişkeni tanımladık. Bu değişken, LED'in o anki durumunu (yanıp yanmadığını) saklar. loop() fonksiyonunda, bu değişkenin değerini sürekli olarak tersine çevirerek (true ise false, false ise true yaparak) LED'i yakıp söndürüyoruz.

Değişkenlerin Kapsamı (Scope)

Bir değişkenin nerede tanımlandığı, o değişkenin hangi bölgelerde kullanılabileceğini belirler. Buna değişkenin kapsamı denir. Arduino'da genel (global) ve yerel (local) olmak üzere iki tür kapsam vardır.

  • Genel Değişkenler: Fonksiyonların dışında tanımlanan değişkenlerdir. Programın herhangi bir yerinden erişilebilirler.
  • Yerel Değişkenler: Bir fonksiyon içinde tanımlanan değişkenlerdir. Sadece o fonksiyon içinde erişilebilirler.

Örneğin:


 int globalSayi = 10; // Genel değişken

 void setup() {
  int yerelSayi = 5; // Yerel değişken

  Serial.begin(9600);
  Serial.println(globalSayi); // Global değişken kullanılabilir
  Serial.println(yerelSayi);  // Yerel değişken kullanılabilir
 }

 void loop() {
  // Serial.println(yerelSayi); // Hata! Yerel değişken loop() içinde erişilemez
  Serial.println(globalSayi); // Global değişken kullanılabilir
  delay(1000);
 }
 

Unutmayın, değişkenleri doğru şekilde kullanmak, Arduino projelerinizin başarısı için kritik öneme sahiptir. Bu temel bilgileri özümsedikten sonra, daha karmaşık projelere geçebilirsiniz.

Umarım bu yazı değişkenler konusunda size yardımcı olmuştur. Bir sonraki yazımızda görüşmek üzere!

Etiketler: Arduino, Programlama, Değişkenler, Veri Tipleri, Arduino Dersleri, Arduino Başlangıç

```

Değişkenler (Arduino Programlama - C/C++ dersi - 1)

Merhaba arkadaşlar bugün Arduino programlarken temel dil olan C dilinin değişkenlerinden bahsedeceğiz. Kod yazarken bir çok hesaplama, eşitleme ve adlandırma yaparız değişkenler bu değerlerin saklandığı yerlerdir. Mesela Arduino da pinler sayı olarak belirtilir ancak çok fazla pin kullınca hangi pin neye bağlı olduğunu karıştırabiliriz bu nedenle her bir pine ad veririz ve bu esnada değişken kullanırız, yada sensör değerlerini değişkenler de saklarız. Fark ettiyseniz verdiğim iki örnekten biri harf lerden oluşurken diğeri sayılardan oluşur ve biz bu ikisini farklı tür değişkenler de kullanırız. Bu yazıda en çok kullanılan char, int, long, float, double ile ön ekleri olan const ve unsigned terimlerini inceleyeceğiz. Önce ön ekleri inceleyelim bu ekler hepsinde geçerli ancak basit projeler de pek kullanılmazlar

Const 

Const önüne geldiği değişkenin daha sonra değişmesine engel olur. Yani sadece okunabilir yapar ve genelde Pi gibi sabit değerler ile pin tanımlamaları yapılırken  kullanılır.
const float pi = 3.14;

Unsigned

Önüne geldiği değişkenin negatif kısımlarını da pozitife ekler ve sadece pozitif sayıları algılatır. Mesela Char -128 ile 127 arsında sayı alırken Unsigned Char 0 ile 255 arasında değer alır. 
unsigned char e = 240;
Artık değişkenlere geçelim üsteki ön ekler için her bir değişkene özel örnek belirtmeyeceğim.

Char (character)
Char veri tipi her tek karakteri veya İşaretli -128 ile 127 arası tam sayı saklaya bildiğimiz ve hafızadan 1 byte yer çalan değişkendir. 
char c = 'd';

Int(integer)
Bu değişken türü en çok karşılaşılan değişkenlerin başında gelir. Uno gibi ATmega tabanlı kartlarda -32768 ile 32768 arası tam sayı değeri alıp 2 byte(16 bit) harcarken Due gibi kartlarda -2147483648 ile 2147483647 arsında tam sayı değeri alıp 4 byte ( 32 bit) yer kaplar.
int b= 3;   


Long
-2147483648 ile 2147483647 arasındaki sayıları barındırır ve 4 byte yer kaplar. Eğer int ile long değişken türleri arasında matematiksel işlem yapılacaksa sonuna rakamın sonuna L eklenir. 7 basamak hassasiyetine sahiptir.
 long l = 186000L;
 long f= -135.7;

Double
Long ile benzerdir ancak basamak hassasiyeti 16 dır. Uno gibi ATmega kartlarda 4 byte Due gibi kartlarda 8 byte yer kaplar. Long double ile hassasiyet 20'ye kadar artar.
 double g= -135.16;

Float
Bu değişken -3.4028235E+38 ile   -3.4028235E+38 arsındaki sayıları 4 byte yer kaplayarak saklar. Ondalıklı sayılar için sıkça kullanılır. İnteger ile işlem yapmadan önce integer değerin önüne "(float)" almalıdır.
    float s = 1.117;
    int x = 3;
    float z = (float)x / 2.2;

Boolean
Doğru ve yanlış anlamında "True" ve "False" değerleri içerir ve bir byte yer kaplar.
boolean calisma = false;