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ığı
2. Arduino Bağlantısı
LDR, 10kΩ Direnç ve LED kullanacağız.
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.
// 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.