Arduino Veri Türleri ve Değişkenler – Flip-Flop Devresi, Sıralı LED Yakma – 11.Ders

Bir değeri veya karakteri daha sonra tekrardan kullanmak için hafızada tutabiliriz. Bu değerler değişkenlerde tutulur.

Değişkenleri kova ya benzetebiliriz. Kovanın bir ismi olur -ki bu değişkenin adıdır. Bir de içindeki değer olur bu da değişkenin değeridir. (Veri)

Arduino da kullanılan temel değişken türleri

Not: unsigned ifadesi pozitif sayılar anlamına gelmektedir.

Kısa Bir Hatırlatma

1 ve 0 ların her biri 1 Bit’ tir.

1 ve 0 ların 8 tanesi bir araya geldiğinde 1 Byte oluştur. (Yani 10110111 gibi)

1024 Byte => 1KB(Kilobyte)

1024 KB = 1MB(Megabyte)

1024 MB = 1GB(Gigabyte)

1024 GB = 1TB (Terabyte)

Örneğin 12 sayısı ikilik sistemde (1100)2 sayısına karşılık gelir. Bu sayı ikilik sistemde 4 basamakla gösterilmekte, yani 4 bitlik bir bilgidir.

Sayıları ikili sistemdeki karşılğını bulmak için bu siteyi kullanabilirsiniz

Yazıların ikili sistemdeki karşılığını bulmak için bu siteyi kullanabilirsiniz.

Değişken Tanımlama

Değişken tanımlarken değişkenin adı, değişkenin değeri ve değişken için uygun veri türü belirlenmelidir.

Bir değeri değişken olarak tanımlarsak birçok yerde aynı değeri kullanabiliriz. (Buton, delay gibi)

Değişken tanımlarken diğer dillerde de olduğu gibi dikkat etmemiz gereken bazı noktalar var. Bunlar;

  • Değişkene içerdiği değer ile tutarlı bir isim vermeliyiz. Mesela değişkenin içine veri olarak yaş değerini tutuyorsak. Değişken ismini yaskisinin_yasi gibi isimler vermeliyiz.
  • Değişkene isim verirken boşluk bırakmamalıyız. Boşluk yerine _ (alt tire) bırakabiliriz (kisininYasi, haftaninGunleri, tcKimlikNo gibi her kelimenin baş harfini büyük yazabiliriz. Buradaki amaç okunabilirliği artırmaktır. Bu yazım şekline Deve Notasyonu dedir ve genellikle küçük harfle başlar. )
  • Değişkene isim verirken mutlaka bir karakter ile başlamalıdır. Değişken ismi sayı ile başlamaz ancak sayı içerebilir veya sayı ile bitebilir.
  • Değişken ismi verirken özel karakterler kullanmamalıyız ( _ hariç) – (*,/, -,+, #,%,&,(,=,?,$,[,{ gibi…)
  • Son olarak değişken adı yazarken Türkçe Karakter kullanmamalıyız. (ğ, Ğ, ş, Ş, ı, İ,  ü, Ü, ö, Öç, Ç)
  • Arduino algoritmasındaki kodların isimleri değişken olarak verilemez (void, int, loop, setup vb.)
  • Aynı kod içerisinde birden fazla aynı isimden değişken tanımlanamaz.

Şimdi de lamba yakma uygulamamızı değişken kullanarak yapalım

int led=9;
int beklemeSuresi=1000;
void setup() {
   pinMode(led,OUTPUT); //9 numaralı dijital pin çıkış olarak ayarlandı
}

void loop() {
   digitalWrite(led,HIGH); //9 numaralı pin in elektriğini aç
   delay(beklemeSuresi); // 1 saniye bekle
   digitalWrite(led,LOW); //9 numaralı pin in elektriğini kapat
   delay(beklemeSuresi); //1 saniye bekle
}

İlerleyen zamanda pin 9 yerine diyelim ki 10. pini kullanmak istedik. Tek yapmamız gereken int led=10; yapmamız olacaktır.

Ayrıca yukarıda tanımladığımız değişken global değişken olarak tanımlanır. Yani değişkene kod içerisinde her yerden ulaşabiliriz.

Lokal(yerel) değişkenlere her yerden ulaşılamaz. Genellikle bir fonksiyon içerisinde tanımlanır.

int beklemeSuresi=1000;
void setup() {
   int led=9; //değişkeni lokal olarak tanımladım
   pinMode(led,OUTPUT); //9 numaralı dijital pin çıkış olarak ayarlandı
}

void loop() {
   digitalWrite(led,HIGH); //9 numaralı pin in elektriğini aç
   delay(beklemeSuresi); // 1 saniye bekle
   digitalWrite(led,LOW); //9 numaralı pin in elektriğini kapat
   delay(beklemeSuresi); //1 saniye bekle
}

Yukarıdaki örnekte int led=9; değişkenini void setup(){} fonksiyonu içerinde tanımladığım için bu değişken lokal değişken oldu. Sadece setup() fonksiyonu içerisinde kullanılır. Ancak void loop(){} içerisinde kullanılamaz. Bu durumda programımız hata verecektir. Çünkü digitalWrite(led,HIGH); kodu içindeki led değişkeni tanımsız görünecektir.

Birkaç değişken örneği;

byte sayac; #sayaç isimli değişken oluşturulmuş ve herhangi bir değer atanmamış

byte Led=10 //led isimli değişken tanımlanmış ve ddeğeri 10 olarak belirlenmiş.

Flip-Flop Uygulaması (Yanıp Sönen LED)

int beklemeSuresi=500;
byte led1=7;
byte led2=4;

void setup() {
   pinMode(led1,OUTPUT); //7 NUMARALI PİNİ ÇIKIŞ YAPTIK. ELEKTRİK ALACAĞIZ
   pinMode(led2,OUTPUT);
}

void loop() {
   digitalWrite(led1,HIGH);
   digitalWrite(led2,LOW);
   delay(beklemeSuresi); //yarım saniye bekle

   digitalWrite(led1,LOW);
   digitalWrite(led2,HIGH);
   delay(beklemeSuresi); //yarım saniye bekle
}   
 

Yürüyen Işık Devresi

int beklemeSuresi=200;
byte led1=7;
byte led2=4;
byte led3=3;

void setup() {
   pinMode(led1,OUTPUT); 
   pinMode(led2,OUTPUT);
   pinMode(led3,OUTPUT);
}

void loop() {
   digitalWrite(led1,HIGH);
   digitalWrite(led2,LOW);
   digitalWrite(led3,LOW);
   delay(beklemeSuresi);

   digitalWrite(led1,LOW);
   digitalWrite(led2,HIGH);
   digitalWrite(led3,LOW);
   delay(beklemeSuresi);

   digitalWrite(led1,LOW);
   digitalWrite(led2,LOW);
   digitalWrite(led3,HIGH);
   delay(beklemeSuresi);
}   
 

Yayınlayan

Ahmet KADAK

Bilgisayar Öğretmeni & Bilgisayar Mühendisi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.