

Arduino programı iki ana bölümden oluşur:
1. setup() fonksiyonu:
-
- Program başlatıldığında bir kez çalışır.
- Başlangıç ayarları burada yapılır.
- Örnek: pin tanımlamaları, seri haberleşme başlatma, sensör kalibrasyonu gibi işlemler.
- Örnek kullanım:
void setup()
{
pinMode(10, OUTPUT); // 10 numaralı pini çıkış olarak ayarlar
}
2. loop() fonksiyonu:
- setup() tamamlandıktan sonra sürekli tekrar eder.
- Devamlı yapılacak işlemler (örneğin LED’in yanıp sönmesi) bu bölümde yer alır.
- Örnek kullanım:
void loop()
{
digitalWrite(10, HIGH);
delay(1000);
digitalWrite(10, LOW);
delay(1000);
}
Yani setup() bir kez, loop() sonsuz döngü şeklinde çalışır.
setup() ile loop() Fonksiyonları – Açık Uçlu Sorular
- setup() fonksiyonu ne işe yarar?
- loop() fonksiyonu ne işe yarar?
- setup() ve loop() fonksiyonlarının çalışma sırası nasıldır?
- setup() fonksiyonuna yazılan komut neden loop() fonksiyonuna yazılmaz?
- Bir LED’in sürekli yanıp sönmesini istiyorsak kod hangi fonksiyon içinde olmalıdır?
- setup() fonksiyonu kaç kez çalışır, loop() fonksiyonu kaç kez çalışır?
- Arduino’da bu iki fonksiyonun görevlerinin ayrılması neden önemlidir?
- setup() içinde tanımlanan değişkenlerin loop() içinde kullanılabilmesi için ne yapılmalıdır?
1. setup() fonksiyonu ne işe yarar?
setup() fonksiyonu Arduino çalışmaya başladığında bir kez çalışır. Başlangıç ayarları, pin tanımlamaları ve seri iletişim gibi işlemler bu fonksiyon içinde yapılır.
2. loop() fonksiyonu ne işe yarar?
loop() fonksiyonu program süresince sürekli tekrar eder. Devamlı yapılması gereken işlemler (LED yakıp söndürme, sensör okuma vb.) burada yer alır.
3. setup() ve loop() fonksiyonlarının çalışma sırası nasıldır?
Program başlatıldığında önce setup() bir kez çalışır, ardından loop() fonksiyonu devreye girer ve sürekli olarak tekrar eder.
4. setup() fonksiyonuna yazılan komut neden loop() fonksiyonuna yazılmaz?
Çünkü setup() yalnızca başlangıçta bir kez çalışır.
Eğer sürekli yapılması gereken işlemler buraya yazılırsa sadece programın başında gerçekleşir. Bu nedenle tekrar eden işlemler loop()’ta yazılmalıdır.
5. Bir LED’in sürekli yanıp sönmesini istiyorsak kod hangi fonksiyon içinde olmalıdır?
Bu işlem loop() fonksiyonu içinde olmalıdır, çünkü LED’in yanıp sönmesi için komutların sürekli tekrarlanması gerekir.
6. setup() fonksiyonu kaç kez çalışır, loop() fonksiyonu kaç kez çalışır?
setup() sadece bir kez,
loop() ise Arduino açık kaldığı sürece sonsuz kez çalışır.
7. Arduino’da bu iki fonksiyonun görevlerinin ayrılması neden önemlidir?
Görevlerin ayrılması programın düzenli çalışmasını sağlar. Başlangıç ayarları bir defa yapılırken, sürekli işlemler ayrı bir döngüde yürütülür. Bu sayede hata riski azalır ve kod okunabilirliği artar.
8. setup() içinde tanımlanan değişkenlerin loop() içinde kullanılabilmesi için ne yapılmalıdır?
Değişken setup() dışında, global alanda (en üstte) tanımlanmalıdır. Böylece hem setup() hem de loop() fonksiyonu tarafından erişilebilir olur.
pinMode(10, OUTPUT);
Bu komut, Arduino’nun 10 numaralı pinini çıkış (OUTPUT) olarak ayarlamak için kullanılır.
Yani bu pin artık bir LED, buzzer, motor gibi elemanlara sinyal gönderebilir.
Eğer bu komut yazılmazsa Arduino hangi pinin giriş (INPUT) veya çıkış (OUTPUT) olduğunu bilemez ve devre doğru çalışmaz.
1. Soru:
pinMode(10, OUTPUT); komutu ne işe yarar?
Cevap:
Bu komut, Arduino kartındaki 10 numaralı dijital pini çıkış olarak tanımlar. Böylece bu pin bir LED’i yakma veya söndürme gibi görevler için kullanılabilir.
2. Soru:
Bir pinin OUTPUT olarak ayarlanması neden gereklidir?
Cevap:
Arduino’da her pinin görevi belirtilmelidir. OUTPUT olarak ayarlanmazsa Arduino o pine sinyal gönderemez. Bu da LED’in yanmaması veya motorun çalışmaması gibi hatalara yol açar.
3. Soru:
pinMode() komutunun içine hangi iki parametre yazılır ve anlamları nedir?
Cevap:
İlk parametre pin numarası, ikinci parametre ise mod (INPUT, OUTPUT veya INPUT_PULLUP) değeridir.
Örnek: pinMode(7, INPUT); → 7 numaralı pin giriş olarak ayarlanır.
4. Soru:
Eğer pinMode(10, OUTPUT); komutu yerine pinMode(10, INPUT); yazılırsa ne olur?
Cevap:
Bu durumda 10 numaralı pin artık giriş pini olur. LED gibi çıkış elemanları çalışmaz, ancak buton veya sensör gibi giriş elemanlarından veri okuyabilir.
5. Soru:
Arduino’da pinMode komutu hangi fonksiyonun içinde yazılmalıdır ve neden?
Cevap:
Genellikle setup() fonksiyonu içinde yazılır çünkü setup() programın başında bir kez çalışır ve pinlerin görevleri burada tanımlanır.
digitalWrite(10, 1);
Bu komut Arduino’nun 10 numaralı çıkış pinine lojik 1 (HIGH) sinyali gönderir.
Yani 10 numaralı pine bağlı LED veya başka bir devre elemanı aktif olur (örneğin LED yanar).
Alternatif olarak şu şekilde de yazılabilir:
digitalWrite(10, HIGH);
HIGH ifadesi 1 anlamına gelir, LOW ise 0 anlamına gelir.
1. Soru:
digitalWrite(10, 1); komutu ne işe yarar?
Cevap:
Bu komut, Arduino’nun 10 numaralı pinine lojik 1 (HIGH) değeri gönderir. Eğer o pine bir LED bağlıysa LED yanar.
2. Soru:
digitalWrite(8, 1); ile digitalWrite(8, HIGH); arasında fark var mıdır?
Cevap:
Hayır, fark yoktur. İkisi de aynı anlama gelir. Her ikisi de 8 numaralı pini aktif (yüksek voltaj) hâline getirir.
3. Soru:
Bir LED’in söndürülmesi için hangi komut yazılmalıdır?
Cevap:
LED’i söndürmek için 7 numaralı pine lojik 0 (LOW) değeri gönderilir:
digitalWrite(7, 0);
ya da
digitalWrite(7, LOW);
4. Soru:
digitalWrite() komutu neden pinMode() komutundan sonra kullanılmalıdır?
Cevap:
Çünkü önce pinin görevi (INPUT veya OUTPUT) belirlenmelidir. Eğer pinMode() ile pin OUTPUT olarak tanımlanmazsa, digitalWrite() komutu çalışmaz veya hatalı sonuç verir.
5. Soru:
Aşağıdaki kod çalıştığında LED’in durumu ne olur?
pinMode(3, OUTPUT);
digitalWrite(3, 1);
delay(1000);
digitalWrite(3, 0);
Cevap:
LED önce 1 saniye yanar, sonra söner. Çünkü önce 3 numaralı pin aktif edilir (1), ardından 1 saniye beklenir, sonra pin pasif yapılır (0).
1. Soru:
digitalWrite(6, 1); komutu ne işe yarar?
Cevap:
Bu komut, Arduino’nun 6 numaralı pinine lojik 1 (HIGH) değeri gönderir. Eğer o pine bir LED bağlıysa LED yanar.
2. Soru:
digitalWrite(5, 0); komutu ne işe yarar?
Cevap:
Bu komut, Arduino’nun 5 numaralı pinine lojik 0 (LOW) değeri gönderir. Eğer o pine bir LED bağlıysa LED söner.