Arduino'da harici LED sürmek için LED'i kendi direnciyle bir besleme hattına bağlarsın ve bu hattı bir transistörle aç kapat yaparsın. Arduino pini yükü doğrudan beslemek yerine, transistörü kontrol eden sinyali üretir. Böylece pinden yalnızca küçük bir kontrol akımı geçer, LED'in asıl akımı ise ayrı bir yük hattından akar. Aşağıda şemayı kontrol hattı, yük hattı ve ortak toprak diye üç gruba ayırıp LED direncini de adım adım hesaplıyoruz.
Önce şemayı iki hatta ayır: kontrol hattı ve yük hattı
Transistörlü bir devre karışık görünür, çünkü tek bir çizimde iki ayrı iş yapılır. Bir tarafta Arduino'nun verdiği "aç" ya da "kapat" komutu, diğer tarafta LED'i gerçekten yakan akım vardır. Şemadaki her teli şu üç gruptan birine yazabilirsin: kontrol hattı, yük hattı ve ortak toprak.
| Hat | İçinden geçen akım | Kaynağı | Kapsadığı parçalar |
|---|---|---|---|
| Kontrol hattı | Küçük akım | Arduino'nun dijital pini | Arduino pini, baz direnci, transistörün bazı |
| Yük hattı | Daha büyük akım | Besleme (USB ya da pil) | Besleme, LED ve direnci, transistörün kolektörü ve emiteri |
Üçüncü grup olan ortak toprak, iki hattın GND uçlarını aynı referans noktasında buluşturan teldir. Bu yüzden tabloda ayrı bir satır olarak değil, iki hattı birbirine bağlayan unsur olarak düşünmek daha doğru olur.
Pinin yükü doğrudan beslememesinin nedeni, her dijital pinin verebileceği akımın sınırlı olmasıdır. Bu sınır kart modeline göre değişir. Sınırı aşan bir yük pini ve kartı zorlar. Kartının değerini ezbere almak yerine veri sayfasına ve resmî Arduino dokümantasyonuna bak.
Sınır durumu şöyle özetlenebilir: Direnciyle birlikte tek bir LED çoğu zaman pinden doğrudan sürülebilir. LED sayısı arttığında ya da yük daha fazla akım çekmeye başladığında, pin akımının kartının izin verdiği değeri aşıp aşmadığını yine veri sayfasından kontrol etmelisin. Aşma ihtimali varsa transistör devreye girer.
Bu yazı yalnızca düşük gerilimli USB ya da pil beslemeli devreleri kapsar. Şebeke gerilimiyle çalışan hiçbir yük burada anlatılmaz.
LED direnci nasıl hesaplanır? Varsayımlı bir örnek

LED'in akımını sınırlayan şey kendisi değil, seri bağlı dirençtir. Formül şöyledir: R = (besleme gerilimi - LED gerilimi) / akım. Akımı amper cinsinden yazmayı unutma; 20 mA, 0,02 A demektir.
LED'in ileri gerilimi renge, türe ve modele göre değişir. Aşağıdaki değerler yalnızca bir varsayımdır; gerçek LED'in için veri sayfasındaki değerleri kullan.
Varsayım: 5 V besleme, yaklaşık 2 V ileri gerilimli bir LED ve 20 mA hedef akım.
- Gerilim farkı: 5 - 2 = 3 V. Bu gerilimin direncin üzerinde düşmesi gerekir.
- Akıma bölme: 3 / 0,02 = 150 ohm.
- Standart değer seçme: Çıkan değere yakın, elinde bulunan standart bir direnç seç. Hesap tam bir değer vermezse bir üstteki standart değeri tercih etmek akımı hedefin altında tutar.
Besleme gerilimi farklıysa formüldeki ilk değeri o gerilimle değiştirirsin. Mantık aynı kalır.
Birden fazla LED olunca
Birden fazla LED'i tek bir dirençle sürmek yerine, her LED'e kendi direncini koy ve bu kolları paralel bağla. Her kol kendi akımını çeker, yük hattından geçen toplam akım da kolların toplamı olur. Örneğin varsayımsal olarak her kol 20 mA çekiyorsa üç kolun toplamı 60 mA'dir.
Bu toplam, transistörün kolektör akımı sınırının altında kalmalıdır. Kullandığın transistörün veri sayfasına bakıp izin verilen değeri kontrol et; hesabı bu değere göre yap.
NPN transistör anahtar olarak nasıl çalışır ve baz direnci ne işe yarar?
NPN transistörü, yük hattına yerleştirilmiş küçük bir elektronik anahtar gibi düşün. Anahtarı elinle değil, Arduino pininden gelen kontrol akımıyla kapatırsın. Bağlantı düzeni şöyledir:
- Emiter doğrudan GND hattına gider.
- Kolektör, LED'in katot (kısa bacak) tarafına bağlanır. LED'in anot tarafı, direnç üzerinden besleme hattına (USB ya da pilin artı ucu) gider. Yani yük hattı besleme, direnç, LED, kolektör ve emiter sırasıyla GND'ye iner.
- Baz, bir direnç üzerinden Arduino'nun dijital pinine bağlanır. Kontrol hattı budur.
Pin LOW iken baza akım gitmez, kolektör ile emiter arasındaki yol kapalı kalır ve LED yanmaz. Pin HIGH olunca bazdan emitere küçük bir akım akar. Bu küçük akım, kolektör-emiter yolunu açar ve LED'in asıl akımı bu yoldan geçer. Kontrol akımı ile yük akımı iki ayrı yolda dolaşır. Arduino pini yükü doğrudan beslemek yerine, transistörü kontrol eden sinyali üretir. LED tek başına küçük bir yük olsa da bu düzen, ileride daha fazla akım çeken yükler için de aynı mantıkla çalışır.
Baz direnci neden gerekir?
Baz ile emiter arasındaki bağlantı elektriksel olarak bir diyot gibi davranır. Araya direnç koymazsan pin, akımı sınırlayan hiçbir şey olmadan bu bağlantıya doğru akım verir. Bu hem pine hem transistöre zarar verebilir. Baz direncinin görevi, baz akımını sınırlayarak ikisini korumaktır.
Bu direncin değeri için tek bir sayı vermiyorum, çünkü doğru değer iki şeye bağlıdır: transistörün akım kazancı ve yük hattından geçecek akım. Kazanç modelden modele değişir. Hesap için transistörün veri sayfasındaki kazanç ve doygunluk bilgilerine bakmalısın. Aynı şekilde Arduino pininin güvenle verebileceği akım da kartın resmî dokümantasyonunda yazar.
Kartın çalışma gerilimi de hesabı etkiler. 3,3 V mantıklı kartlarda pin HIGH olduğunda gerilim daha düşüktür. Aynı direnç, 5 V mantıklı bir kartta verdiğinden farklı bir baz akımı üretir. Kartını kullanıyorsan onun veri sayfasındaki pin gerilimine göre hesabı yeniden yap.
Bacak dizilimini veri sayfasından teyit et
Transistörün üç bacağı baz, kolektör ve emiter olarak adlandırılır, ancak hangisinin nerede durduğu model ve kılıfa göre değişir. Aynı görünümlü iki transistörün bacak sırası farklı olabilir. Bu yüzden, elindeki modelin veri sayfasında kılıfın önden görünüşünü bulup sırayı teyit et. Yanlış bacağı bağlarsan devre ya çalışmaz ya da ısınır. Tüm anlatım, düşük gerilimli USB ya da pil beslemeli devreler içindir.
Ortak GND neden şart?

Gerilim, iki nokta arasındaki farktır. Bir sinyalin "HIGH" olması, ancak bir referans noktasına göre anlam taşır. Transistörün bazına gelen kontrol sinyali, emiterin bağlı olduğu GND'ye göre değerlendirilir. Arduino'nun GND'si ile harici beslemenin (USB ya da pil) GND'si birbirine bağlı değilse, bazın ortak bir referansı olmaz. LED o zaman ya hiç yanmaz ya da kararsız davranır, bazen hafifçe yanıp söner.
Çözüm basittir: iki GND'yi aynı hatta birleştir. Şemada GND sembolünü gördüğün her yer aynı elektriksel düğümdür. Çizimde aralarında çizgi olmasa bile hepsi birbirine bağlı sayılır. Breadboard'da bunu, GND ray hattına hem Arduino'nun GND bacağını hem harici beslemenin eksi ucunu hem de transistörün emiterini bağlayarak sağlarsın.
"LED yanmıyor, kod doğru görünüyor" teşhisi
Kodu değiştirmeden önce bu sırayı izle:
- Arduino GND'si, harici besleme GND'si ve transistörün emiteri aynı GND hattında mı?
- Emiter gerçekten GND'ye mi gidiyor, yoksa yanlış bacağa mı takılı? Veri sayfasındaki dizilimle karşılaştır.
- Baz direnci bir ucuyla Arduino pinine, diğer ucuyla baza bağlı mı?
- LED'in yönü doğru mu? Uzun bacak besleme tarafına bakmalı.
- Kodda kullandığın pin numarası, bağladığın pinle aynı mı?
Bu sıra, sorunu önce yük hattının referansında, sonra kontrol hattında arar. Böylece koda dokunmadan çoğu bağlantı hatasını yakalayabilirsin.
LED ile röle ve motor gibi indüktif yükler arasındaki fark
LED, akımı bir direnç sınırladığı sürece sakin bir yüktür. Açıp kapattığında devrede sürpriz çıkarmaz. Röle bobini ve küçük DC motor ise içlerinde bobin barındırır ve bobin, akımın değişmesine direnir. Akım aniden kesildiğinde bobin, akışı sürdürmeye çalışarak ters yönde kısa bir gerilim sivrilmesi üretir. Bu sivrilme transistörün kolektör ucuna biner ve transistöre zarar verebilir.
Çözüm, yükün uçlarına ters yönlü bir diyot, yani flyback diyotu koymaktır. Diyot yükle paralel bağlanır. Katot ucu yükün besleme (+) tarafına, anot ucu transistör tarafına gelir. Şemada diyot sembolündeki çizgi katodu gösterir, gerçek diyotta ise gövdedeki halka katot ucunu belirtir.
Çalışmasını şöyle düşünebilirsin: Normal çalışmada diyot ters yöndedir ve akım geçirmez. Transistör kapanıp bobin ters gerilim üretince diyot iletime geçer ve akım bobinin içinde dolaşarak sönümlenir. Böylece sivrilme transistöre ulaşmaz.
LED için bu diyot gerekmez, ama LED direnci gerekir. Motor ve röle bobininin akım ve gerilim değerleri modele göre değiştiği için bu değerleri bileşenin veri sayfasından okumalısın. Bu yazıdaki devreler düşük gerilimli, USB ya da pil beslemeli yüklerle sınırlıdır. Elektronik ve programlama üzerine daha fazla okumak istersen blog arşivindeki yazılara göz atabilirsin.
Koddan önce bağlantı kontrol listesi ve yanıp sönen LED kodu
Kodu yüklemeden önce devreyi şu sırayla kontrol et:
- Yük hattını izle: besleme, direnç, LED yönü (uzun bacak anot) ve transistörün kolektörü bu sırayla bağlı olmalı.
- Emiteri GND'ye bağla.
- Baz direncini Arduino pini ile transistörün bazı arasına koy.
- Ortak toprağı kur: Arduino GND ile harici besleme GND'sini birleştir (devren harici besleme kullanıyorsa).
- Transistör bacaklarını veri sayfasıyla teyit et. Aynı kılıfta farklı bacak sıralamaları görülebilir.
- LED direncini kendi hesabınla karşılaştır.
- Şemayı elle iki renkle çiz: kontrol hattı bir renk, yük hattı başka bir renk olsun.
Şimdi pin 8'in baz direnci üzerinden transistöre bağlı olduğunu varsayan kısa bir örnek:
const int ledPin = 8; // Direnç üzerinden transistörün bazına bağlı
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH); // LED yanar
delay(500);
digitalWrite(ledPin, LOW); // LED söner
delay(500);
}
Beklenen davranış: LED yarım saniye yanar, yarım saniye söner ve bu döngü sürekli tekrar eder. LED yanmıyorsa kodu değiştirmeden önce yukarıdaki listeyi baştan, sırayla tekrar kontrol et. Çoğu zaman sorun, bir bacak yerinde ya da ortak toprak eksiktir.
Kod ile devre aynı mantığı izler: pin HIGH olduğunda kontrol hattı aktif olur, transistör iletime geçer ve yük hattı tamamlanarak LED yanar. Pin LOW olduğunda kontrol hattı pasifleşir, yük hattı kesilir ve LED söner.
Elektronik ve programlamanın birbirine bu kadar yakın olması, adım adım düşünme becerisini de önemli kılar. Bu beceriyi denemek istersen ücretsiz bilgi testleri merkezindeki dilden bağımsız algoritmik düşünme testine bakabilirsin.
Devreyi önce iki hatta ayırıp sonra ortak toprakla birleştirdiğinde, LED'den motora uzanan çoğu düşük gerilimli devreyi aynı mantıkla okuyabilirsin.