Arduino ile LED Yakma ve Söndürme: Devre Şeması ve Kodları
Elektronik ve gömülü sistemler programlamasına adım atan herkesin ilk yaptığı uygulama **"Blink"**, yani LED yakıp söndürme devresidir. Yazılım dünyasındaki "Hello World" (Merhaba Dünya) ne ise, donanım dünyasında da bir LED'i kendi yazdığınız kodlarla kontrol etmek odur.
Bu kapsamlı rehberde; harici bir LED'in breadboard üzerine nasıl takılacağını, neden koruma direnci kullanılması gerektiğini, devre şemasını, tam çalışan Arduino C++ kodlarını ve adım adım yapılış aşamalarını inceliyoruz.
---
1. Projenin Amacı ve Temel Mantığı
Bu projenin amacı, Arduino'nun dijital çıkış pinlerinden birini kullanarak harici bir elektronik devre elemanına (LED diyot) belirli zaman aralıklarıyla elektrik enerjisi vermek ve enerjiyi kesmektir.
Temel çalışma mantığı 3 adımdan oluşur:
1. Arduino'nun belirlenen dijital pini (örneğin 8. pin) **çıkış (OUTPUT)** olarak ayarlanır.
2. Pine 5V voltaj gönderilerek devreden akım akması sağlanır (`digitalWrite(8, HIGH);`). LED ışık verir.
3. Belirli bir süre beklenir (`delay(1000);`) ve ardından pinin voltajı 0V'a (GND) çekilerek akım kesilir (`digitalWrite(8, LOW);`). LED söner. Bu işlem sonsuz döngü içinde tekrarlanır.
---
2. Gerekli Malzemeler Listesi
Bu uygulamayı hayata geçirmek için ihtiyacınız olan temel malzemeler:
| Malzeme Adı | Miktar | Açıklama |
|---|---|---|
| **Arduino Uno R3** | 1 Adet | Ana mikrokontrolcü kartı (veya Nano) |
| **5mm Standart LED** | 1 Adet | Kırmızı, yeşil veya mavi renk |
| **220Ω veya 330Ω Direnç** | 1 Adet | LED'i aşırı akımdan korumak için (Kırmızı-Kırmızı-Kahverengi) |
| **Breadboard (Devre Tahtası)**| 1 Adet | Lehim yapmadan devre kurmak için |
| **Jumper Kablo (Erkek - Erkek)**| 2 Adet | Arduino ile breadboard arası bağlantı için |
| **USB Bağlantı Kablosu** | 1 Adet | Kodu karta yüklemek ve güç sağlamak için |
---
3. LED ve Direnç Mantığı: Neden Direnç Kullanmalıyız?
Bir LED (Light Emitting Diode - Işık Yayan Diyot), üzerinden akım geçtiğinde foton üreten yarı iletken bir elemandır:
---
4. Devre Şeması ve Pin Bağlantı Tablosu
Devre bağlantılarını yaparken şu adımları takip edin:
[Arduino Pin 8] ---> [220Ω Direnç] ---> [LED Anot (Uzun Bacak)]
[LED Katot (Kısa Bacak)] ---> [Arduino GND Pini]
Bağlantı Adımları:
1. LED'i breadboard üzerine takın. Bacaklarının farklı dikey delik hatlarına geldiğinden emin olun.
2. 220 ohm'luk direncin bir bacağını LED'in uzun bacağının (Anot) bulunduğu hatta takın.
3. Direncin diğer boştaki bacağını bir jumper kablo ile Arduino'nun **8 numaralı dijital pinine** bağlayın.
4. LED'in kısa bacağının (Katot) bulunduğu hatta bir jumper kablo takıp diğer ucunu Arduino'nun **GND (Toprak)** pinine bağlayın.
---
5. Tam ve Çalışan Arduino C++ Kodları
Aşağıdaki kodu Arduino IDE programına yapıştırıp kartınıza yükleyebilirsiniz:
/*
* RobotKodla.com - Temel Arduino Dersleri
* Proje: Harici LED Yakıp Söndürme (Blink)
* Pin: Dijital Pin 8
*/
const int ledPini = 8; // LED'in bağlı olduğu dijital pini sabit olarak tanımla
void setup() {
// setup fonksiyonu kart ilk açıldığında sadece bir kez çalışır.
pinMode(ledPini, OUTPUT); // 8 numaralı pini ÇIKIŞ olarak yapılandır
}
void loop() {
// loop fonksiyonu elektrik olduğu sürece sonsuz kez tekrarlanır.
digitalWrite(ledPini, HIGH); // LED pinine 5V ver (LED yansın)
delay(1000); // 1000 milisaniye (1 saniye) bekle
digitalWrite(ledPini, LOW); // LED pininden voltajı kes (LED sönsün)
delay(1000); // 1 saniye bekle
}
Kod Satırlarının Ayrıntılı Analizi:
---
6. Sık Yapılan Hatalar ve Sorun Giderme
| Sorun | Nedeni | Çözüm |
|---|---|---|
| LED hiç yanmıyor | LED ters takılmış olabilir | LED'in uzun ve kısa bacaklarının yönünü kontrol edip ters çevirin. |
| LED sürekli yanıyor, hiç sönmüyor | Kod karta yüklenmemiş olabilir | Arduino IDE'de "Yükleme tamamlandı" mesajını gördüğünüzden emin olun. |
| LED çok zayıf yanıyor | Direnç değeri çok yüksek | 100kΩ gibi yüksek bir direnç takmış olabilirsiniz; 220Ω veya 330Ω direnç takın. |
| Port hatası alıyorum | USB kablosu tam oturmamış | Kabloyu çıkarıp takın, Araçlar > Port menüsünden doğru COM portunu seçin. |
---
7. Kendini Geliştirme Görevleri (Challenges)
Temel devreyi çalıştırdıktan sonra kendinizi geliştirmek için şu görevleri deneyin:
1. **Flaşör Hızı:** `delay(1000);` değerlerini `delay(100);` olarak değiştirin ve LED'in nasıl bir polis tepe lambası gibi hızla çaktığını gözlemleyin.
2. **Mors Alfabesi ile S.O.S:** 3 kısa yanma (200ms), 3 uzun yanma (800ms) ve 3 kısa yanma ile uluslararası acil durum sinyali oluşturan kodu yazın.
3. **İki LED'li Karaşimşek:** Devreye ikinci bir LED ekleyin (örneğin 9. pine); biri yanarken diğeri sönsün, sırayla yer değiştirsinler.
---
---
8. PWM (Darbe Genişlik Modülasyonu) ile LED Parlaklığı Ayarlama
Sadece LED'i açıp kapatmak (HIGH/LOW) yerine onun parlaklığını kademeli olarak artırıp azaltmak da mümkündür. Arduino'nun yanında tilde (~) işareti bulunan dijital pinleri (3, 5, 6, 9, 10, 11) PWM çıkışı verebilir:
---
Sonuç
İlk harici devrenizi kurup kodla kontrol etmeyi başardınız! Bu temel prensip, ileride yapacağınız devasa robotik projelerin, motor kontrollerinin ve ekran yönetimlerinin yapı taşıdır. Daha fazla sensörlü ve eğlenceli projeler için sitemizin [Arduino Dersleri](/dersler) bölümünü takip etmeye devam edin!