Daha önce transistör kullanarak basit bir gece lambası yapmıştık. Şimdi işin içine "beyin" (Arduino) katıyoruz. Bu sayede lambanın tam olarak hangi karanlık seviyesinde yanacağına, yanarken yavaşça mı yoksa aniden mi açılacağına biz karar vereceğiz.

1. Sır: Voltaj Bölücü Kuralı

Arduino direnç değişimini doğrudan okuyamaz, sadece voltaj değişimini (0-5V) okuyabilir. LDR sadece direncini değiştirdiği için, yanına bir yardımcı direnç (10kΩ) ekleyerek bir "Voltaj Bölücü" kurmamız gerekir.

Analog Okuma Mantığı
AYDINLIK ORTAM 5V LDR (Az Direnç) A0: YÜKSEK (800-900) 10kΩ GND KARANLIK ORTAM 5V LDR (Çok Direnç) BLOKE A0: DÜŞÜK (0-200) 10kΩ GND
Mantık: LDR'yi 5V tarafına bağlarsak; Işık arttıkça iletkenliği artar ve A0 pinine daha çok voltaj gönderir. Yani: Işık = Yüksek Sayı, Karanlık = Düşük Sayı.

2. Arduino Bağlantısı

LDR, 10kΩ Direnç ve LED kullanacağız.

ARDUINO UNO 5V GND A0 D3 LDR 10k BAĞLANTI ŞEMASI

3. Yazılım (Eşik Değeri Mantığı)

Kodumuzda bir "Eşik Değeri" (Threshold) belirleyeceğiz. Işık bu değerin altına düşerse lamba yanacak.

LDR_Lamba.ino C++
// Pin Tanımları
const int ldrPin = A0;  // LDR'nin bağlı olduğu analog pin
const int ledPin = 3;   // LED'in bağlı olduğu dijital pin

// Değişkenler
int isikDegeri = 0;     // Okunan ham değer (0-1023)
int esikDegeri = 300;   // Lambanın yanacağı karanlık sınırı

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);   // Değerleri görmek için
}

void loop() {
  // 1. Işık seviyesini ölç
  isikDegeri = analogRead(ldrPin);

  // 2. Seri Port'a yaz (Ayarlamak için gerekli)
  Serial.print("Isik Seviyesi: ");
  Serial.println(isikDegeri);

  // 3. Karar Ver: Karanlık mı?
  // Değer düştükçe ortam kararıyor demektir.
  if (isikDegeri < esikDegeri) {
    digitalWrite(ledPin, HIGH); // Evet, karanlık -> Işığı Yak
  } else {
    digitalWrite(ledPin, LOW);  // Hayır, aydınlık -> Söndür
  }

  delay(100); // Okuma sıklığı
}
        

4. İpucu: Verileri Grafik Olarak Görmek

Nasıl Ayarlarım?

Seri monitörde okuduğunuz değerlere bakın. Odanız aydınlıkken değer kaç? (Örn: 800). Elinizle kapatınca kaç? (Örn: 150). Bu ikisinin ortasını (Örn: 300-400) koddaki esikDegeri değişkenine yazın.