Teknik Bilgiler

Arduino Kodları

Arduino Dijital Giriş/Çıkış Komutları

Dijital giriş/çıkış pinlerinden herhangi birini giriş ya da çıkış olarak tanımlamak için kullanılır. Pin denilen alana dijital pinlerden hangisini kullanacaksak onun numarası yazılır. Mode ile ifade edilen alana ise giriş mi? Çıkış mı? Olacağı yazılır. Ancak İngilizce olarak yazılmalıdır. Giriş ise INPUT, çıkış ise OUTPUT yazılır. 

pinMode(13, OUTPUT);

Arduino UNO R3 Klon – (USB Chip CH340)

158,00 TL

Arduino UNO R3 Klon – USB Kablo Hediyeli – (USB Chip CH340) ; Atmega328 temelli bir mikrodenetleyici kartıdır. Üzerinde 14 adet dijital giriş/çıkış pini (6 tanesi PWM çıkışı olarak kullanılabilir), 6 analog giriş, 16Mhz kristal, usb soketi, güç soketi, ICSP konektörü ve reset tuşu bulundurmaktadır. Kart üzerinde mikrodenetleyicinin çalışması için gerekli olan her şey bulunmaktadır. Kolayca usb kablosu üzerinden bilgisayara bağlanabilir, adaptör veya pil ile çalıştırılabilir.

Açıklama:

pinMode(pin, mode) komutu yukarıda anlatılan program bloklarından Void setup(){……} kısmında süslü parantezlerin arasında kullanılmalıdır. Çünkü Arduino’nun kurulumuna ait bir komuttur.

Pin tanımlama alanına dijital pinlerden herhangi biri yazılabilir. Örneğin Arduino Uno için; 0’dan 13’e kadar 14 adet dijital giriş/çıkış olarak kullanılabilen pinler mevcuttur. Bunlardan herhangi biri yazılabilir.

Pin numaraları rakam olarak yazılabileceği gibi, bu sayılara bir isim verilip, pin yerine o isim de kullanılabilir. (pin numaralarına isim atama, ilgili komutlar anlatılırken bahsedilecektir.)

Mode ile belirtilen alana output yazıldığı için bu örnekte 13 numaralı pin, çıkış olarak kullanılacaktır.

Komutun sonunda (;) noktalı virgül kullanılmalıdır.

digitalWrite(13, 1);

dijital yazma anlamına gelen bu komut, çıkış olarak belirlenen pine değer aktarmak(yazmak) için kullanılır.

Açıklama:

İki farklı argüman vardır. İlki dijital yazma işleminin yapılacağı pin belirlenir. İkincisi ise yazılacak değerin belirlenmesi. Yazılacak değer 1 veya 0 olabilir.

Yazılacak değer 1 veya 0 olarak yazılabileceği gibi 1 = High, 0 = Low olacak biçimde High veya Low da yazılabilir.

pinMode komutu ile hangi pinler dijital çıkış olarak tanımlandı ise o pinlere yazma işlemi yapılabilir. Giriş olarak tanımlanan bir pine yazma işlemi yapılamaz.

Örneğin 13. Pine led bağlı olduğunu düşünürsek ve yukarıda verilen şekilde komut çalıştırılırsa; 13. Pine bağlı olan led 1 olacaktır ve ışık verecektir.

digitalWrite(13,0); şeklinde yazılırsa yanan led sönecektir.

Bu komut Loop() bloğunda yer almalıdır. Sonunda da (;) noktalı virgül kullanılmalıdır.

digitalRead(5);

dijital okuma anlamına gelen komut belirtilen pinden dijital olarak okuma işlemi yapar.

Açıklama:

Read okuma işlemi olduğundan bu dışarıdan gelen bilgiyi okumak biçiminde olmalıdır.

Burada dikkat edilecek husus şudur; eğer okunan değer 1 ise “digitalRead()” komutunun geri getirdiği değer 1 olur. Yani okuduğu değer 1 ise digitalRead(5) = 1 olur, okuduğu değer 0 ise digitalRead(5) = 0 olur.

Dijital okuma işlemi pinMode komutu ile Setup kısmın da giriş olarak tanımlanan pinden okuma işlemi yapabilir.

Belirlenen pine gelen dijital 1 veya 0 bilgisini algılayabili

  • ‘İf , else if, else’ Yapısı:

İf ‘eğer’ anlamına gelmektedir.Karşılaştırma yapmak için sıklıkla kullanılan operatörlerin başında gelir.Örnek:

if (x < 500) { digitalWrite(led, HIGH);}
 
else if (x >= 1000) { digitalWrite(led, LOW);}
 
else { // digitalWrite(led, HIGH);
 
delay(500);
 
digitalWrite(led, LOW);}

Bu tanımlamamızda x değeri 500 den küçük ise ledi aç,1000 den büyük ise ledi kapat, 500 den büyük 1000 den küçük ise ledi 500 ms açıp kapatacaktır.Burada if ile else if aynı yapıda, else operatörü ise tanımlanan ifadelerin dışındaki ifadeleri kapsamaktadır.Yani else operatörüne tanım aralığı girmiyoruz.

  • ‘for’ Yapısı:

Genellikle artış veya azalış sayacı olarak kullanılır.Bir değerden başka bir değere kadar artıp yada azalarak son değerden sonra döngüyü bitiren operatördür.

for(int x = 1; x < 100; x = x+2)
{
println(x);
}

Bu örneğimizde x değerini birden başlatarak 2 şer arttırımla 100 den küçük olana kadar tüm değerlerin çıktısını aldık.
1,3,5,7,9,….97,99

  • ‘switch case’ Yapısı:

switch ifadesi bir nesneye atanan değerleri alır ve alt ifade ‘case’ operatörüne gönderir.Bu ifade de değerleri karşılaştırır ve denk gelen ifadeleri çalıştırır.Her ‘case’ ifadesinin sonunda ‘break’ komutu yer alır.Bu komutla döngü bitirilir.Yani ‘case’ komutuna yazılan ifadeler sadece bir kez çalışarak ‘break’ komutu ile sonlanır.Bu sayede algoritmada çakışmalar önlenmiş olur.Son olarak ‘default’ komutu ile de ‘case’ lerde tanımlanmamış ifadeler bu tanımlamaya girerek gerekli algoritma yapılandırılır.

switch (var)
 
{
 
case1’:
 
digitalWrite(led,HIGH);
 
break;
 
case2’:
 
digitalWrite(led,LOW);
 
default:
 
Serial.println(“Tanımlanmamış ifade”);
 
}
  • ‘do while’ Yapısı:

Burada while operatörü karşılaştırmalarda şartı içeriyorsa do ifadesine göndererek tekrar hesaplama yaptırarak yeni değeri karşılaştırır.

do
{
 delay(50); 
 x = readSensor(); 
} while (x < 100);

Bu örnekte x değeri 100 ün altında olduğu sürece sensörden veri okunacaktır.

  • ‘Continue’ Yapısı:

Do, while veya for döngülerinde bir aralığı atlamak istiyorsak bu ifadeyi kullanmamız gerekir.

for (x = 0; x < 255; x ++)
{
if (x > 30 && x < 110){
continue;
}
analogWrite(sensor, x);
delay(50);
}

Bu örnekte x değeri o dan 255 kadar birer artarak sensör değerine yazılmaktadır.Fakat 30 ile 110 arasındaki değerleri atlayarak sensöre yazmamaktadır.

  • ‘return’ Yapısı:

Bir fonksiyonu sonlandırarak yeni fonksiyon çağırarak yeni değerle döndürür.

double constrain(double x, float a, float b) 
{ 
if(x < a) return a;
 if(x> b) return b;
 return value;
}

Burada x değeri a dan küçük ise x e a değerini ata.x b den büyük ise x e b değerini ata.

  • ‘goto’ Yapısı:

Bu yapı bir döngüyü sona erdirerek başka bir ifadeye geçmeyi sağlar.

for(val r = 0; r < 255; r++){
 for(val g = 255; g > -1; g--){
 for(valb = 0; b < 255; b++){
 if (analogRead(0) > 250){ goto sensor;}
  
 }
 }
}
sensor:

Bir cevap yazın

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