İçeriğe geç

Menü

Berk Akademi
Yorumlar Google yorumları Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Arduino pinMode INPUT ve OUTPUT Farkı Nedir? Pin Yönü Rehberi

arduino-pinmode-input-output-farki-nedir
Bu yazıda neler var?
  1. INPUT ve OUTPUT Arasındaki Fark: Pinin Yönü Ne Demek?
  2. pinMode, digitalRead ve digitalWrite Birbirinden Nasıl Ayrılır?
  3. Bir Pin İçin INPUT mu OUTPUT mu Seçmeli? Tek Soruluk Karar Çerçevesi
  4. Giriş Pinini Okuyup Çıkış Pinine Aktaran Kısa Bir Veri Akışı
  5. Yanlış Yön Seçilirse Ne Görürsün? Belirti, Neden ve Kontrol

Arduino pinMode INPUT ve OUTPUT farkı, pinin bilgi akış yönüyle ilgilidir. INPUT dışarıdan bilgi alan, OUTPUT dışarıya kontrol sinyali gönderen pin yönüdür. INPUT pin, dış dünyadan gelen dijital durumu okumak için kullanılır. OUTPUT pin ise ona bağlı bir bileşeni kontrol etmek için kullanılır. Bir pinin hangi işi yapacağını kartın kendisi değil, programda verdiğin yön belirler.

INPUT ve OUTPUT Arasındaki Fark: Pinin Yönü Ne Demek?

Dijital pin, iki durumlu bir sinyal ile çalışır. Bu iki durumun adı HIGH ve LOW'dur. Arduino'nun resmî referansı da dijital pinlerin bu iki değerden birini okuduğunu ya da yazdığını anlatır. Ara değerler yoktur; pin her an ya HIGH ya da LOW durumundadır. Aydınlık anahtarı gibi düşünebilirsin: ya açık ya kapalı.

Pinin yönü, bu iki durumlu bilginin kimden kime gittiğini söyler. Bunu iki ok olarak hayal et.

INPUT: ok karta doğru gelir

INPUT modunda bilgi dışarıdan karta doğru akar:

dış dünya → pin → program

Pin burada bir dinleyicidir. Dışarıdaki bir şey durum üretir, programın ise o durumu okuması gerekir. Bilgi üreten bileşene en bilinen örnek bir butondur: basılıp basılmadığı, programın öğrenmek istediği bilgidir. Program bu bilgiyi okur ama pine kendi başına bir değer dayatmaz.

OUTPUT: ok karttan dışarı çıkar

OUTPUT modunda akış tersine döner:

program → pin → bileşen

Burada program karar verir, pin de bu kararı dışarıya taşır. Komut alan bileşene örnek olarak bir LED düşünebilirsin: yanıp yanmayacağına program karar verir, LED yalnızca gelen sinyale uyar. Bu yazıda buton ve LED yalnızca yönü anlamak için kullanılan kavramsal örneklerdir; bağlantı ya da devre kurulumu konu dışıdır.

Kısa bir kural işine yarar: bilgi sana geliyorsa INPUT, bilgiyi sen gönderiyorsan OUTPUT.

pinMode, digitalRead ve digitalWrite Birbirinden Nasıl Ayrılır?

pinMode, digitalRead ve digitalWrite Birbirinden Nasıl Ayrılır?

Üç fonksiyon sık birlikte kullanıldığı için karıştırılır, oysa görevleri ayrıdır:

  • pinMode(): pinin yönünü belirler. Hiçbir veri taşımaz.
  • digitalRead(): INPUT olarak ayarlanmış pinden HIGH ya da LOW değerini okur ve programa döndürür.
  • digitalWrite(): OUTPUT olarak ayarlanmış pine HIGH ya da LOW değerini yazar.

Akış tarifi şöyle özetlenebilir: önce yönü seç, sonra oku ya da yaz. pinMode bir kapının hangi yöne açılacağını söyleyen tabela gibidir; digitalRead ve digitalWrite ise o kapıdan geçen bilgidir. Tabela yanlışsa geçiş de anlamlı olmaz.

En sık karışan nokta tam budur: pinMode okuma ya da yazma yapmaz, yalnızca yönü bildirir. Okuma ve yazma fonksiyonları ancak yön seçildikten sonra anlamlı çalışır.

void setup() {
  pinMode(2, INPUT);    // 2 numaralı pin: bilgi dışarıdan gelecek
  pinMode(13, OUTPUT);  // 13 numaralı pin: sinyal dışarıya gidecek
}

void loop() {
  // Yönler setup() içinde bir kez belirlendi.
  // Okuma için: digitalRead(2)  -> HIGH ya da LOW döndürür
  // Yazma için: digitalWrite(13, HIGH)  -> pine HIGH yazar
}

Bu kod tek başına görünür bir çıktı üretmez; yalnızca iki pinin yönünü tanımlar ve hangi fonksiyonun nerede kullanılacağını gösterir. Örnekteki 2 ve 13 numaraları sadece örnektir. Kartının pin düzenini ve hangi pinlerin nasıl kullanılabileceğini kendi kartının dokümanından kontrol etmelisin.

pinMode'un genellikle setup() içinde çağrılmasının nedeni basittir: setup() program başlarken yalnızca bir kez çalışır, loop() ise sürekli tekrarlanır. Pinin yönü çoğu projede program boyunca değişmediği için her turda yeniden söylemeye gerek kalmaz.

INPUT_PULLUP ve seri port gibi konular ayrı birer başlıktır; bu yazı yalnızca INPUT ile OUTPUT arasındaki yön farkına odaklanır.

Bir Pin İçin INPUT mu OUTPUT mu Seçmeli? Tek Soruluk Karar Çerçevesi

Bir Pin İçin INPUT mu OUTPUT mu Seçmeli? Tek Soruluk Karar Çerçevesi

Pin yönünü seçerken tek bir soru yeterli olur: Bu bileşen bilgi mi üretiyor, yoksa komut mu alıyor? Bileşen Arduino'ya bilgi gönderiyorsa pin INPUT olur. Bileşen Arduino'dan komut bekliyorsa pin OUTPUT olur. Buton ya da sensör çıkışı bilgi üretir. LED ise yalnızca komutu uygular.

Soruyu şöyle düşünebilirsin: veri bileşenden karta doğru akıyorsa kart okur, karttan bileşene doğru akıyorsa kart yazar. Okuma INPUT ile, yazma OUTPUT ile eşleşir. Seçimi bileşenin türüne değil, verinin yönüne göre yaparsın.

Dört maddelik kontrol listesi

Bir pini kodlamadan önce bu dört soruyu sırayla yanıtla:

  1. Veri hangi yöne akıyor? Bileşenden karta mı, karttan bileşene mi?
  2. Programda okuma mı yazma mı yapacağım? Okuyorsam giriş, yazıyorsam çıkış söz konusudur.
  3. Hangi fonksiyonu kullanacağım? Okuma için digitalRead, yazma için digitalWrite.
  4. pinMode'u buna göre seçtim mi? Okuyacağım pine INPUT, yazacağım pine OUTPUT vermiş olmalıyım.

Dördüncü madde ilk üçünün sonucudur. Yön ile fonksiyon birbirini tutmuyorsa hata çoğunlukla ilk iki maddede aranır.

Bu akış sorusunu sormak, koddan önce yapılan bir mantık pratiğidir: önce adımları sırala, sonra satıra dök. Bu alışkanlığı dilden bağımsız çalıştırmak istersen ücretsiz Algoritmik Düşünme Testi bir seçenek olabilir. Test Arduino'ya özel değildir. Bir problemi adım adım düşünme becerini ölçmeye ve geliştirmeye yöneliktir.

Giriş Pinini Okuyup Çıkış Pinine Aktaran Kısa Bir Veri Akışı

Aşağıdaki örnek tek bir akışı kurar: giriş pinini oku, okuduğun değeri çıkış pinine yaz. Pin numaraları yalnızca örnektir. Kartının pin düzenini kendi resmî dokümanından kontrol edip numaraları ona göre değiştir.

const int girisPin = 2;
const int cikisPin = 8;

void setup() {
  pinMode(girisPin, INPUT);
  pinMode(cikisPin, OUTPUT);
}

void loop() {
  int durum = digitalRead(girisPin);
  digitalWrite(cikisPin, durum);
}

Kod satır satır

  • const int girisPin = 2; ve const int cikisPin = 8;: Pin numaralarına anlamlı isimler verir. Numarayı değiştirmek gerekirse tek yerden değiştirirsin.
  • pinMode(girisPin, INPUT);: Bu pini okuma yönüne ayarlar. Yön ayarı bir kez, setup() içinde yapılır.
  • pinMode(cikisPin, OUTPUT);: Bu pini yazma yönüne ayarlar.
  • int durum = digitalRead(girisPin);: Giriş pinindeki değeri okur ve durum değişkenine koyar. Değer HIGH ya da LOW olur.
  • digitalWrite(cikisPin, durum);: Değişkendeki değeri çıkış pinine yazar.

loop() sürekli tekrarlandığı için bu iki satır da sürekli çalışır.

Akışı okla görmek

Veri şu yolu izler: dış dünya → girisPin → durum değişkeni → cikisPin → bileşen. Dış dünyadaki değişiklik önce giriş pinine ulaşır. digitalRead onu durum değişkenine taşır. digitalWrite değişkeni çıkış pinine verir. Çıkışa bağlı bileşen de bu komutu uygular.

Beklenen davranış basittir: giriş HIGH iken çıkış HIGH, giriş LOW iken çıkış LOW olur. Çıkıştaki bileşen girişin durumunu izler. Devre kurulumu ve bağlantı detayı bu örneğin kapsamı dışındadır. Burada yalnızca yön kararı ile veri akışının kodda nasıl birleştiğine bakıyoruz.

Yanlış Yön Seçilirse Ne Görürsün? Belirti, Neden ve Kontrol

Pin yönü yanlış olduğunda kod çoğu zaman hata vermeden derlenir ve yüklenir. Sorun, bileşenin tepkisizliği ya da tutarsız okumalar olarak ortaya çıkar. Aşağıdaki tablo, gördüğün belirtiyi olası nedene ve ilk kontrole bağlar.

BelirtiOlası nedenKontrol
Çıkışa bağlı bileşen komutlara tepki vermiyorPin OUTPUT yerine INPUT yazılmış ya da pinMode satırı eksik olabilirsetup() içindeki pinMode satırına ve pin numarasına bak
Okunan değer kararsız, rastgele değişiyorPin INPUT modunda ama dışarıdan net bir durum almıyor olabilirPinin gerçekten bilgi üreten bir kaynağa bağlı olup olmadığını kontrol et
Okuma beklenmeyen biçimde hep aynıOkunan pin yanlışlıkla OUTPUT ayarlanmış olabilirGiriş ve çıkış pinlerinin değişken adlarının yer değiştirip değiştirmediğine bak
Tepki beklediğin yerde değil, başka bir bileşende ya da hiç yokGiriş ve çıkış pinlerinin numaraları karışmış olabilirKarar sorusuna dön: bileşen bilgi mi üretiyor, komut mu alıyor?

Yön seçildikten sonra hatayı şu üç adımla ara:

  1. pinMode satırındaki yönün bileşenin rolüne uyup uymadığına bak: bilgi üreten bileşen INPUT, komut alan bileşen OUTPUT ister.
  2. O pinde kullandığın fonksiyonun yönle eşleştiğini doğrula: digitalRead giriş pininde, digitalWrite çıkış pininde anlam taşır.
  3. Kodundaki pin numarasını kartın kendi dokümanındaki pin düzeniyle karşılaştır.

Boşta kalan girişleri sabitlemeye yarayan INPUT_PULLUP ile değerleri ekranda görmeyi sağlayan seri port ayrı konulardır; ikisi de bu üç adımı tamamladıktan sonra ele alınır.

Pin yönü küçük bir ayrıntı gibi görünse de her Arduino programının temelinde durur. Bir sorunla karşılaştığında önce "bu pin bilgi mi alıyor, komut mu gönderiyor?" sorusuna dön; çoğu zaman cevap, hatanın hangi satırda aranacağını da gösterir.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara