Arduino'da LED yakmak için önce setup() içinde pinMode(pin, OUTPUT) ile pini çıkış yaparsın. Ardından digitalWrite(pin, HIGH) yazarak LED'i yakar, digitalWrite(pin, LOW) yazarak söndürürsün. LED'in doğru yanması için kod kadar devre de önemlidir: pin, seri direnç, LED ve GND doğru sırayla bağlanmalıdır.
digitalWrite() LED'i nasıl yakar? Kısa cevap
Bu iki fonksiyonun görevi ayrıdır: pinMode() pinin çıkış yönünü, digitalWrite() ise o pine gönderilen dijital seviyeyi belirler. Önce pinin "dışarıya sinyal verecek" şekilde ayarlanması gerekir. Sonra o pine hangi seviyenin gönderileceği söylenir.
Dijital seviyenin yalnızca iki değeri vardır:
HIGH: pin "açık" konumdadır, yani devreye elektrik verir. LED yanar.LOW: pin "kapalı" konumdadır, yani devreye elektrik vermez. LED söner.
Arada parlaklık ayarı yoktur. Dijital pin ya HIGH ya LOW durumundadır. Bu yüzden LED'in yanıp sönmesi, kodda bu iki değerin sırayla gönderilmesinden ibarettir.
Koda geçmeden önce devreyi kafanda çiz. Pinden başlayıp LED'in içinden geçen ve GND'ye dönen yolu gözünün önüne getir. Kod yalnızca bu yolun başındaki pine ne yapacağını söyler.
Devreyi önce zihninde çiz: pin, direnç, LED ve GND

Devreyi soldan sağa uzanan bir yol gibi düşün. Yol, seçtiğin dijital pinden başlar ve aynı kartın GND pininde biter:
- Dijital pin: Kodda seçtiğin pin numarası. Sinyal buradan çıkar.
- Seri direnç: Pinin hemen ardından gelir ve akımı sınırlar.
- LED'in uzun bacağı (anot): Dirençten gelen akım LED'e bu bacaktan girer.
- LED'in kısa bacağı (katot): Akım LED'den bu bacaktan çıkar.
- GND: Akım kartın GND pinine döner ve halka tamamlanır.
Bu halkanın herhangi bir noktası kopuksa LED yanmaz. LED ters takılırsa da yanmaz, çünkü akım yalnızca anottan katoda doğru geçer. Devreyi kurmadan önce kâğıda bu beş durağı sırayla çizmek hata yapma ihtimalini azaltır.
Direnç neden şart?
Direnç, LED'i ve Arduino pinini gereğinden fazla akımdan korur. Direnç olmadan LED'in üzerinden kontrolsüz akım geçebilir ve LED ya da pin zarar görebilir. Bu yüzden dirençsiz bağlantı denenmez.
Doğru direnç değeri Ohm yasasıyla hesaplanabilir. Hesap için kullandığın LED'in ve kartının belgelerindeki değerler gerekir. Bu yazıda sabit bir akım, gerilim ya da direnç rakamı vermiyoruz, çünkü bu değerler LED'e ve karta göre değişir. Elindeki LED'in bilgi sayfasına ve kartının resmî belgesine bakarak kendi değerini bulabilirsin.
Her pin aynı davranmaz
Arduino kartlarının dijital pinleri, akım sınırı ve çalışma gerilimi bakımından karttan karta farklılık gösterebilir. Aynı kartın bazı pinleri de özel görevler üstlenebilir. LED için seçtiğin pinin özelliklerini, kullandığın kartın resmî belgesinden kontrol et.
Güvenlik: önce gücü kes
Devrede bir şeyi eklemeden, çıkarmadan ya da yerini değiştirmeden önce kartın USB ya da güç bağlantısını çıkar. Bağlantıları tamamladıktan ve gözle kontrol ettikten sonra gücü yeniden ver. Bu alışkanlık, yanlış temas yüzünden kartın ya da bileşenlerin zarar görmesini önler.
Çalışan kod: pinMode() ve digitalWrite() sırası
Aşağıdaki program, LED'in anot bacağının direnç üzerinden 8 numaralı dijital pine, katot bacağının ise GND'ye bağlı olduğunu varsayar. ledPin değerini devrede kullandığın pinle aynı yap. 8 yalnızca bir örnektir; başka bir dijital pin de kullanabilirsin ama kartının belgesinden o pinin genel amaçlı çıkış olarak kullanılıp kullanılmadığını kontrol et.
const int ledPin = 8;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Beklenen davranış: LED yaklaşık 1 saniye yanar, 1 saniye söner ve bu döngü kart çalıştığı sürece tekrar eder.
Satırları devreyle şöyle eşleştirebilirsin:
const int ledPin = 8;satırı, devrede dirençten gelen kablonun hangi pine takıldığını söyler. Kabloyu başka pine taşırsan bu sayıyı da değiştirmelisin.pinMode(ledPin, OUTPUT);pini çıkış yapar. Bu satır olmazsadigitalWrite()LED'i beklediğin gibi yakmayabilir.setup()kart açıldığında ya da sıfırlandığında bir kez çalışır. Pin yönü gibi tek seferlik hazırlıklar buraya yazılır.loop()isesetup()bittikten sonra sürekli baştan çalışır. Yakma ve söndürme komutları bu yüzden burada durur.
delay() yanıp sönme hızını nasıl belirler?

delay() programı verdiğin süre kadar bekletir ve bu süre milisaniye cinsindendir. 1000 değeri 1 saniye, 100 değeri saniyenin onda biri demektir. Değeri küçülttükçe LED hızlı, büyüttükçe yavaş yanıp söner. Çok küçük değerlerde göz yanıp sönmeyi ayırt edemez, LED sürekli yanıyormuş gibi görünebilir.
Yanma ve sönme süreleri birbirinden bağımsızdır. Her delay() kendisinden önceki komutun durumunu ne kadar tutacağını belirler:
void loop() {
digitalWrite(ledPin, HIGH);
delay(200); // 200 ms yanık
digitalWrite(ledPin, LOW);
delay(800); // 800 ms sönük
}
Beklenen davranış: LED saniyenin beşte birinde yanar, sonra uzun bir süre söner. Bir döngü yine 1 saniye sürer ama LED kısa bir ışık çakması gibi görünür.
Bekleme sürerken program çoğu işi durdurur. Örneğin bu sırada bir düğmeyi okuyamazsın. Aynı anda birden fazla işi yürütmen gerektiğinde delay() yerine zamanı ölçerek ilerleyen farklı bir zamanlama yaklaşımı gerekir; ona ilk LED'den sonra bakabilirsin.
Komutların hangi sırayla çalışacağını adım adım kurmak, hangi dilde yazarsan yaz işine yarayan bir beceridir. Bu düşünme biçimini ölçmek istersen ücretsiz bilgi testleri merkezindeki algoritmik düşünme testini deneyebilirsin.
LED yanmıyorsa: beş maddelik kontrol listesi
LED yanmadığında kodu da devreyi de aynı anda değiştirmek hatayı bulmayı zorlaştırır. Aşağıdaki sırayı takip et, her adımda yalnızca bir şeye bak. Her kontrolden önce Arduino'nun USB bağlantısını çıkar, düzeltmeni yaptıktan sonra yeniden bağla. Güç bağlıyken kablo ya da bileşen oynatmak hem kısa devre riski taşır hem de hatayı kaçırmana yol açar.
- Pin numarası kodla devrede aynı mı? Kodda 8 yazıp kabloyu 9 numaralı pine takmışsan komut başka bir pine gider ve LED hiç tepki vermez.
- Pin,
pinMode(pin, OUTPUT)ile çıkış yapıldı mı? Pin çıkış olarak ayarlanmadıysadigitalWrite()beklediğin sonucu vermeyebilir; bazı kartlarda LED soluk yanabilir, bazılarında hiç yanmayabilir. Davranış karta ve mikrodenetleyici mimarisine göre değiştiği için bu ayarı her zaman açıkça yazmak en güvenlisidir. - LED yönü doğru mu? Uzun bacak (anot) pin tarafına, kısa bacak (katot) GND tarafına gelmelidir, çünkü LED akımı yalnızca tek yönde geçirir.
- Direnç devrede mi ve devre halkası tamamlanıyor mu? Pinden çıkan yol direnç, LED ve GND üzerinden kapanmıyorsa akım dolaşamaz; breadboard'da bu parçaların aynı sütun hatlarını paylaşıp paylaşmadığına dikkat et.
- GND ortak ve sağlam bağlı mı? Kablo breadboard deliğine tam oturmadıysa temas kopuk kalır, bu yüzden her kabloyu hafifçe çekip yerinde durduğundan emin ol.
Maddeleri tek tek ve sırayla denemek, sorunun kodda mı yoksa devrede mi olduğunu daraltmanı kolaylaştırır. Bu liste her durumda çözümü garanti etmez, ama en sık karşılaşılan başlangıç hatalarını kapsar. Hâlâ yanmıyorsa LED'in kendisini ya da kabloyu değiştirip yeniden denemek de mantıklı bir sonraki adımdır.
İlk LED'den sonra ne denenebilir?
Aynı mantığı ikinci bir LED'e uygulayabilirsin: farklı bir pini OUTPUT yap, kendi direncini ekle ve iki LED'i dönüşümlü yak. Biri HIGH iken diğerini LOW yaparsan trafik ışığına benzeyen bir düzen elde edersin. delay() değerlerini küçültüp büyüterek ritmin nasıl değiştiğini gözlemle. Kod yazmayı ve okumayı sürdürmek istersen Berk Akademi blogundaki diğer yazılara göz atabilirsin. Küçük bir devre, yazdığın kodun gerçek dünyada karşılık bulduğunu görmenin en hızlı yollarından biridir.
Sık Sorulan Sorular
pinMode() yazmazsam digitalWrite() ile LED yanar mı?
Bu durum karta ve mimariye göre değişir. Bazı kartlarda LED soluk yanabilir, bazılarında hiç yanmayabilir. Güvenilir sonuç için pini pinMode(pin, OUTPUT) ile açıkça çıkış yap.
Arduino'da LED'i dirençsiz bağlayabilir miyim?
Hayır, önerilmez. Direnç hem LED'i hem de Arduino pinini aşırı akımdan korur. Uygun direnç değerini Ohm yasasıyla hesaplayabilirsin; bunun için LED'in veri sayfasına ve kartının resmî belgesine bakmalısın.
LED için hangi dijital pini kullanmalıyım?
Dijital pinlerin çoğu bu iş için uygundur, ancak her kartın tüm pinleri aynı davranmaz. Örneğin Uno gibi kartlarda 0 ve 1 numaralı pinler seri haberleşmede de kullanılır. Başlarken kart belgesinde genel amaçlı dijital pin olarak gösterilen bir pini seçmek daha sorunsuz olur.
Devreyi önce zihninde kurup sonra kabloları takmak, her yeni Arduino projesinde de işini kolaylaştıracak bir alışkanlıktır.