Arduino Mini Proje: Otomatik LED Kontrolü
Bir ortam ışığına göre otomatik LED açma ve kapama.
Harika bir proje! Bir ışık sensörü (genellikle LDR - Light Dependent Resistor) kullanarak ortam ışığını algılayabilir ve belirli bir ışık seviyesine göre bir LED'i açıp kapatabilirsiniz. İşte size adım adım bir rehber:
---
### Proje: Ortam Işığına Duyarlı LED Kontrolü
Bu proje, bir LDR sensörü kullanarak ortamdaki ışık seviyesini ölçer ve belirlenen bir eşik değerine göre bir LED'i otomatik olarak açıp kapatır. Örneğin, ortam karanlık olduğunda LED'i yakar, aydınlık olduğunda ise söndürür.
#### Gereken Malzemeler:
1. **Arduino Kartı:** Arduino Uno veya benzeri bir model.
2. **LDR (Light Dependent Resistor):** Işığa duyarlı direnç.
3. **LED (Light Emitting Diode):** Herhangi bir renk.
4. **Direnç (10kΩ):** LDR için gerilim bölücü devresi oluşturmak için.
5. **Direnç (220Ω - 330Ω):** LED için akım sınırlayıcı direnç.
6. **Breadboard:** Devreyi kurmak için.
7. **Jumper Kabloları:** Bağlantılar için.
8. **USB Kablosu:** Arduino'yu bilgisayara bağlamak için.
#### Devre Şeması:
Aşağıdaki bağlantıları breadboard üzerinde kurun:
1. **LDR Bağlantısı:**
* LDR'nin bir bacağını Arduino'nun **5V** pinine bağlayın.
* LDR'nin diğer bacağını bir **10kΩ** direncin bir bacağına bağlayın.
* Bu **10kΩ** direncin diğer bacağını Arduino'nun **GND** pinine bağlayın.
* LDR ile 10kΩ direncin birleştiği noktadan bir jumper kablosu alarak Arduino'nun **Analog A0** pinine bağlayın. (Bu, ışık sensöründen gelen gerilimi okuyacağımız nokta.)
2. **LED Bağlantısı:**
* LED'in uzun bacağını (anot) **220Ω** (veya 330Ω) direncin bir bacağına bağlayın.
* Direncin diğer bacağını Arduino'nun **Dijital 9** pinine bağlayın.
* LED'in kısa bacağını (katot) Arduino'nun **GND** pinine bağlayın.
**Özetle:**
* **LDR:** 5V --- LDR --- A0 --- 10kΩ --- GND
* **LED:** Dijital 9 --- 220Ω --- Anot (+) LED Katot (-) --- GND
#### Arduino Kodu:
```cpp
// Pin tanımlamaları
const int ldrPin = A0; // LDR'nin bağlı olduğu analog pin
const int ledPin = 9; // LED'in bağlı olduğu dijital pin
// Işık eşik değeri (Bu değeri ortamınıza göre ayarlamanız gerekebilir)
// LDR'nin 5V'a bağlı olduğu ve 10k direncin GND'ye bağlı olduğu durumda:
// Daha fazla ışık -> LDR direnci azalır -> A0 pindeki voltaj azalır -> analogRead değeri azalır.
// Daha az ışık -> LDR direnci artar -> A0 pindeki voltaj artar -> analogRead değeri artar.
// Bu yüzden, daha yüksek bir eşik değeri "daha karanlık" anlamına gelir.
const int esikDeger = 600; // Örnek eşik değeri. Deneyerek ayarlayın (0-1023 arası bir değer).
void setup() {
// LED pinini çıkış olarak ayarla
pinMode(ledPin, OUTPUT);
// Seri haberleşmeyi başlat (sensör değerlerini görmek için)
Serial.begin(9600);
Serial.println("Arduino Ortam Isigi Kontrol Sistemi Baslatildi.");
}
void loop() {
// LDR'den analog değeri oku
int ldrDeger = analogRead(ldrPin);
// Okunan değeri Seri Monitör'e yazdır
Serial.print("LDR Degeri: ");
Serial.print(ldrDeger);
Serial.print(" - ");
// Okunan LDR değerini eşik değeri ile karşılaştır
if (ldrDeger > esikDeger) {
// Ortam karanlık (LDR değeri eşikten yüksekse)
digitalWrite(ledPin, HIGH); // LED'i aç
Serial.println("Karanlik! LED ACIK.");
} else {
// Ortam aydınlık (LDR değeri eşikten düşükse veya eşitse)
digitalWrite(ledPin, LOW); // LED'i kapat
Serial.println("Aydinlik! LED KAPALI.");
}
// Kısa bir gecikme ekle
delay(100); // 100 milisaniye bekler
}
```
#### Kod Açıklaması:
1. **Pin Tanımlamaları:**
* `ldrPin`: LDR'nin bağlı olduğu analog pini `A0` olarak tanımlarız. Analog pinler 0-1023 arasında değer okuyabilir.
* `ledPin`: LED'in bağlı olduğu dijital pini `9` olarak tanımlarız.
* `esikDeger`: Bu, LED'in ne zaman açılıp kapanacağını belirleyen kritik bir değerdir. LDR'den okunan değer bu eşiği geçtiğinde veya altına düştüğünde LED'in durumu değişir.
2. **`setup()` Fonksiyonu:**
* `pinMode(ledPin, OUTPUT);`: LED'in bağlı olduğu pini çıkış (output) olarak ayarlarız, çünkü bu pinden LED'e enerji göndereceğiz.
* `Serial.begin(9600);`: Seri haberleşmeyi başlatırız. Bu, bilgisayarınızdaki Arduino IDE'sinin "Seri Monitör"ünden LDR değerlerini ve durumu takip etmenizi sağlar.
3. **`loop()` Fonksiyonu:**
* `int ldrDeger = analogRead(ldrPin);`: `analogRead()` fonksiyonu, `ldrPin`'den (A0) gelen analog değeri okur ve 0 ile 1023 arasında bir tam sayı olarak `ldrDeger` değişkenine kaydeder.
* **Önemli Not:** Yukarıdaki devre kurulumunda (LDR 5V'a, 10k direnç GND'ye bağlı) **daha fazla ışık LDR direncini düşürür, bu da A0 pinindeki voltajı ve dolayısıyla `analogRead` değerini düşürür.** Yani, daha düşük değerler daha fazla ışık, daha yüksek değerler daha az ışık (karanlık) anlamına gelir.
* `Serial.print(...)`: Okunan LDR değerini ve sistemin kararını (LED açık/kapalı) Seri Monitör'e yazdırırız. Bu, hata ayıklama ve `esikDeger`ini ayarlama için çok kullanışlıdır.
* `if (ldrDeger > esikDeger)`: Bu koşul, ortamın karanlık olup olmadığını kontrol eder. Eğer okunan `ldrDeger` (karanlığı temsil eden yüksek bir değer) `esikDeger`den büyükse, ortam karanlıktır.
* `digitalWrite(ledPin, HIGH);`: LED'i açar.
* `Serial.println("Karanlik! LED ACIK.");`: Seri Monitör'e durumu bildirir.
* `else`: Eğer `ldrDeger` `esikDeger`den küçük veya eşitse, ortam yeterince aydınlıktır.
* `digitalWrite(ledPin, LOW);`: LED'i kapatır.
* `Serial.println("Aydinlik! LED KAPALI.");`: Seri Monitör'e durumu bildirir.
* `delay(100);`: Her okuma ve kontrol arasında 100 milisaniye bekler. Bu, sensör okumalarının kararlı olmasını sağlar ve aşırı hızlı tepki vermeyi önler.
#### Nasıl Çalışır ve Eşik Değerini Ayarlama:
1. Devreyi kurun ve Arduino kodunu kopyalayıp Arduino IDE'ye yapıştırın.
2. Arduino kartınızı bilgisayara bağlayın ve doğru kartı/portu seçtiğinizden emin olun.
3. Kodu Arduino'ya yükleyin.
4. Yükleme bittikten sonra Arduino IDE'deki **Seri Monitör'ü** açın (sağ üstteki büyüteç simgesi).
5. Seri Monitör'de LDR değerlerini göreceksiniz.
6. **Eşik Değerini Ayarlama:**
* Odanızı (veya sensörün bulunduğu yeri) **aydınlık** ve LED'in kapanmasını istediğiniz seviyeye getirin. Seri Monitör'deki `ldrDeger`'i not alın (örneğin 300).
* Şimdi odanızı **karanlık** ve LED'in yanmasını istediğiniz seviyeye getirin. Seri Monitör'deki `ldrDeger`'i tekrar not alın (örneğin 700).
* `esikDeger`'ini bu iki değerin arasında bir sayı olarak belirleyebilirsiniz (örneğin, 500 veya 600). Kodu tekrar yükleyerek test edin. `esikDeger`'i ne kadar hassas ayarlarsanız, sistem o kadar iyi çalışacaktır.
Bu basit ışık sensörü projesi, Arduino ile fiziksel dünyayı nasıl algılayıp tepki verebileceğinizi göstermek için harika bir başlangıç noktasıdır. Başarılar dilerim!
Son Paylaşımlar
-
Python Temelleri Genel Tekrar
14:39:24 - 13/12/2025 -
Python Performans İpuçları
14:38:59 - 13/12/2025 -
Python’da Temiz Kod Yazma
14:38:28 - 13/12/2025 -
Python Mini Proje: Sayı Tahmin Oyunu
14:37:58 - 13/12/2025 -
Python Mini Proje: Hesap Makinesi
14:37:31 - 13/12/2025