3000 TL üzeri ücretsiz kargoGüvenli ödeme · Kredi kartına 9 taksit0850 304 9125Sipariş Takibi
Özel Proje Siparişi
Teknik Bilgiler

Arduino Kodları

YazarProje Hocam 4 dk okuma
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);

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)
{
case ‘1’:
digitalWrite(led,HIGH);
break;
case ‘2’:
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:
YazarProje Hocam

2012’den beri robotik, elektronik, yazılım ve makine alanlarında butik Ar-Ge projeleri geliştiriyor; projelerimizi açık kaynak olarak paylaşıp maker kültürünü destekliyoruz.

Projenizi birlikte yapalım

İlginizi çekebilecek yazılar

Projeniz için yardım mı lazım?Mühendis ekibimiz malzeme seçiminden kodlamaya kadar yanınızda.