Elektroniğe yeni başlayanların klasik olarak yaptığı ilk projelerden biri LED’leri yakıp söndürmektir. Fakat bu işe biraz eğlence katmak istersek, neden efsanevi “Karaşimşek” efektini yapmayalım?
Bu projede Arduino UNO kullanarak LED’leri sırayla yakıp söndüreceğiz. LED’ler soldan sağa ve sağdan sola yanarak, meşhur karaşimşek animasyonunu oluşturacak. Yeni başlayanlar için hem eğlenceli hem de öğretici bir proje olacak!
Proje İçin Gerekli Malzemeler
50 Adet 5mm LED Seti – 5 Renk
69₺Arduino Uno R3 SMD CH340 Geliştirme Kartı – Klon
Orijinal fiyat: 229₺.199₺Şu andaki fiyat: 199₺.Büyük Boy Breadboard – MB-102 – 830 Pin
79₺Direnç Seti 1/4W %5 100 Parça 5 Çeşit
89₺
- Arduino UNO + USB Kablo
- 8x 5mm LED (Kırmızı, Sarı, Yeşil, Beyaz veya Mavi)
- 8x 330Ω Direnç
- 1x Breadboard
- Jumper Kablolar
💡 Not: Malzemeleriniz yoksa, Wokwi, Tinkercad veya Proteus gibi simülasyon araçlarını kullanabilirsiniz. Ancak gerçek devreyi kurmak, her zaman çok daha keyifli ve öğreticidir.
💡LED (Light Emitting Diode) İçin Direnç Hesaplama
Malzemeler hazır olduktan sonra biraz teknik bir şeyler öğrenelim. LED, belirli bir ileri yön voltajında (forward voltage) çalışır ve bu değer LED’in tipine göre değişir.
- Mavi/Beyaz LED: Yaklaşık 3V – 3.4V
- Kırmızı LED: Yaklaşık 1.8V – 2.2V
- Yeşil LED: Yaklaşık 2V – 2.4V
LED gerilimi belirtilen üst değerden daha yüksek olması durumunda LED’in aşırı ısınmasına, anında bozulmasına veya ömrünün çok kısalmasına neden olur. Bu yüzden LED’in güvenle çalışabilmesi için seri direnç kullanılır. Direnç, üzerinden geçen akımı Ohm Kanunu’na göre sınırlar:
R = \frac{V_{besleme}−V_{LED}}{I_{LED}}
Burada:
- V_{besleme} → Güç kaynağı voltajı
- V_{LED} → LED’in ileri yön voltajı
- I_{LED} → LED için önerilen akım (genellikle 10–20 mA arası)
Örnek: 5V ile çalışan bir devrede kırmızı LED kullanmak istiyoruz.
R = \frac{V_{besleme}−V_{LED}}{I_{LED}} = \frac{5V - 2V}{0.015A} = 200Ω
Yani yaklaşık 220Ω standart direnç bu gerilim ve led için uygundur. Biz bu projede LED’in çok parlak olmasını istemediğimiz için 330Ω direnç kullanacağız.
Özet:
- LED mutlaka seri direnç ile kullanılmalıdır.
- Direnç, LED’i aşırı akımdan korur.
- Doğru direnç değeri Ohm Kanunu ile hesaplanır.
- Kullanılacak LED’in rengine göre ileri voltaj değeri değiştiği için direnç hesabı da değişir.
Breadboard Devresi
Breadboard devresini kurmak için aşağıdaki linke tıklayabilir veya görselden yardım alabilirsin.
Aşağıdaki adımları takip ederek devre bağlantılarını tamamlayalım. Breadboard devrelerinde en çok karşılaşılan sorunlardan birisi kabloların yanlış bağlanmasıdır. O yüzden kablo bağlantılarını mutlaka en az 2 kez kontrol edelim.
- Arduino’nun 2-9 numaralı dijital pinlerine LED’leri bağlayın.
- Her LED’in kısa bacağına (katot) 330Ω direnç ekleyin ve GND’ye bağlayın.
- Uzun bacakları (anot) doğrudan Arduino dijital pinlerine bağlayın.
- USB kabloyu takarak devreyi çalıştırın.
Arduino Karaşimşek Kodu
Bağlantıları tamamladıktan sonra aşağıdaki kodu Arduino UNO’ya yükleyerek karaşimşek animasyonunu elde edebilirsin. Bu aşamada öncelikle kodu inceleyip daha sonra kendi kendine yazmayı deneyebilirsin. Bu şekilde kendin yaparak çok daha hızlı öğrenebilirsin.
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
int ledCount = 8;
void setup() {
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Soldan sağa
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
}
// Sağdan sola
for (int i = ledCount - 1; i >= 0; i--) {
digitalWrite(ledPins[i], HIGH);
delay(200);
digitalWrite(ledPins[i], LOW);
}
}
Kodun Mantığı
- delay() Fonksiyonu:
delay(ms)
komutu programı belirlenen süre (ms cinsinden) duraklatır. Bu projede LED’ler arasında 200 ms bekleme süresi vardır. Daha kısa süre, daha hızlı; daha uzun süre, daha yavaş bir efekt oluşturur. - LED Kontrolü:
digitalWrite(pin, HIGH)
komutu LED’i yakar,LOW
komutu söndürür. - for Döngüsü:
for
döngüsü LED’lerin pinlerini tek tek dolaşarak sırayla yanıp sönmelerini sağlar. Böylece tekrar tekrar elle komut yazmaya gerek kalmaz.
Bu Proje ile Öğrendiklerimiz
- Arduino ile LED kontrolünün temelleri
- for döngüsü ve dizi kullanımı
- delay() ile zamanlama yapma
- Breadboard üzerinde pratik bağlantılar kurma