Arduino

LDR Kullanımı ve Arduino ile Otomatik Lamba Uygulaması

Aykut AKMAN 1 yıl önce Yorumlar (0) 4 Dakika Okuma
LDR Kullanımı ve Arduino ile Otomatik Lamba Uygulaması
E-Posta : 2.0k 1

Arduino projelerinde LDR (Light Dependent Resistor), ışık seviyesine bağlı olarak çalışan devreler oluşturmak için kullanılır. Bu yazıda, LDR ile ışık seviyesini algılayıp bir LED’in otomatik olarak yanıp sönmesini sağlayan bir lamba uygulamasını gerçekleştireceğiz.

Proje İçin Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir model)
  • 1 x LDR (Fotorezistör)
  • 1 x 10k Ohm Direnç (pull-down direnci)
  • 1 x LED (örneğin, beyaz LED)
  • 1 x 220 Ohm Direnç (LED için akım sınırlama direnci)
  • Breadboard
  • Bağlantı Kabloları

Devre Bağlantısı

arduino-ldr-kullanılarak-akıllı-lamba-yapımı-devre-şeması

LDR Bağlantısı

  • LDR’nin bir bacağına 5V pinini bağlayın.
  • Diğer bacağını, Arduino’nun A0 analog pinine bağlayın.
  • Ayrıca, LDR’nin Arduino A0’a bağlı bacağına paralel olarak bir 10k Ohm direnç bağlayarak GND’ye bağlayın (pull-down direnci).

LED Bağlantısı

  • LED’in uzun bacağını (anod) Arduino’nun dijital 9 numaralı pinine bağlayın.
  • Kısa bacağını (katod), 220 Ohm direnç üzerinden GND’ye bağlayın.

Çalışan uygulamayı görmek için tıklayınız.

Arduino Kodu

Aşağıdaki kod, LDR’den alınan analog veriye göre LED’in yanıp sönmesini kontrol eder.


// 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
int ldrValue = 0;        // LDR'den okunan değer

// Eşik Değeri (ışık seviyesi)
const int threshold = 500;

void setup() {
  pinMode(ledPin, OUTPUT);   // LED çıkış olarak ayarlandı
  Serial.begin(9600);        // Seri iletişim başlatıldı
}

void loop() {
  ldrValue = analogRead(ldrPin); // LDR'den analog veri oku

  // Seri monitöre LDR değeri yazdır
  Serial.print("LDR Değeri: ");
  Serial.println(ldrValue);

  // Işık seviyesi kontrolü
  if (ldrValue < threshold) {
    digitalWrite(ledPin, HIGH);  // LED'i yak
  } else {
    digitalWrite(ledPin, LOW);   // LED'i söndür
  }

  delay(100); // Çok hızlı okumayı önlemek için küçük bir gecikme
}

Kod Açıklamaları

analogRead(ldrPin): LDR’den gelen analog değeri okur. Bu değer 0 (karanlık) ile 1023 (parlak) arasında değişir.

Eşik Değeri (threshold): LDR’den okunan değere göre ışık seviyesi değerlendirilir. Eşik değerinin altında bir değer algılandığında LED yanar, aksi halde söner.

digitalWrite(ledPin, HIGH): LED’i yakar.

digitalWrite(ledPin, LOW): LED’i söndürür.

Serial.print ve Serial.println: LDR’den alınan değerler, seri monitörde görüntülenir. Bu, uygulamanın doğru çalışıp çalışmadığını kontrol etmek için kullanışlıdır.

Projenin Çalışma Prensibi

  1. Ortamdaki ışık seviyesi düşük olduğunda (örneğin, karanlık bir ortamda), LDR’den okunan değer düşer.
  2. LDR’den alınan değer eşik değerinin altına düştüğünde LED otomatik olarak yanar.
  3. Ortamdaki ışık seviyesi yükseldiğinde, LED otomatik olarak söner.

Ekstra İpuçları

  • Ayarlanabilir Eşik Değeri: Potansiyometre kullanarak eşik değerini manuel olarak ayarlayabilirsiniz.
  • Çoklu LED Kontrolü: Birden fazla LED’i kontrol etmek için farklı eşik değerleri belirleyebilirsiniz.
  • Otomasyon Projeleri: Bu devreyi röle modülüyle birleştirerek gerçek bir lambayı otomatik olarak açıp kapatabilirsiniz.

Bu uygulama, LDR ve Arduino kullanarak temel otomasyon projelerini öğrenmek için mükemmel bir başlangıçtır. Hem ışık sensörlerini hem de Arduino’nun analog pinlerini kullanmayı öğrenerek daha karmaşık projelere geçebilirsiniz.

Sıkça Sorulan Sorular

LDR (Light Dependent Resistor), ışığa duyarlı bir dirençtir. Ortamdaki ışık miktarına göre direnci değişir. Işık şiddeti arttığında direnci azalır, azaldığında ise direnci artar. Arduino projelerinde ortam ışığını algılamak için kullanılır.

  • LDR'nin bir ucu 5V'a, diğer ucu bir pull-down direnç üzerinden GND'ye bağlanır.
  • Direncin LDR ile bağlantı noktasından bir kablo, Arduino'nun analog pinlerinden birine bağlanır (örneğin, A0).
    Bu şekilde Arduino, ortam ışığını analog değer olarak okuyabilir.

LDR'den okunan ışık değerine göre bir LED veya lamba kontrol edilir.

  • Ortam ışığı azaldığında LED yanar (örneğin gece).
  • Ortam ışığı arttığında LED söner (örneğin gündüz).
    Kodda if koşulları kullanılarak bu mantık gerçekleştirilir.

  • Arduino Uno (veya benzeri bir model)
  • LDR (Fotorezistör)
  • 10K Ohm direnç (pull-down için)
  • LED (veya röle ile lamba)
  • Breadboard ve bağlantı kabloları
  • analogRead() fonksiyonu ile LDR'den veri okunur ve Serial.print() ile Seri Monitör üzerinden görüntülenir. Örneğin:

    int ldrPin = A0;
    void setup() {
      Serial.begin(9600);
    }
    void loop() {
      int ldrValue = analogRead(ldrPin);
      Serial.println(ldrValue);
      delay(500);
    }

    LDR'den okunan değere göre LED'in yanıp sönmesi şu şekilde yapılabilir:

    int ldrPin = A0;
    int ledPin = 13;
    void setup() {
      pinMode(ledPin, OUTPUT);
    }
    void loop() {
      int ldrValue = analogRead(ldrPin);
      if (ldrValue < 500) { // Işık azsa
        digitalWrite(ledPin, HIGH); // LED yanar
      } else {
        digitalWrite(ledPin, LOW); // LED söner
      }
    }

    Evet, LDR ile röle kontrolü yapabilirsiniz. LDR'den gelen veri, belirlenen eşik değerin altına düştüğünde röle tetiklenir ve bağlı cihaz çalıştırılabilir. Kodda digitalWrite() komutu kullanılarak röle kontrol edilir.

    Kod içerisinde if koşullarına farklı eşik değerleri atanarak ışık seviyesine göre farklı işlemler yapılabilir. Örneğin:

    if (ldrValue < 300) {
      // Çok karanlık - yüksek ışık ver
    } else if (ldrValue < 600) {
      // Orta ışık - orta parlaklıkta ışık ver
    } else {
      // Çok aydınlık - ışığı kapat
    }

    Evet, birden fazla cihazı kontrol etmek için birden fazla koşul belirleyebilir veya birden fazla çıkış pini kullanabilirsiniz. Örneğin, ışık seviyesi azaldığında bir LED, daha da azaldığında bir başka cihaz aktif hale getirilebilir.

    Evet, LDR'den gelen analog değeri PWM sinyaline dönüştürerek LED parlaklığını kontrol edebilirsiniz. Bunun için analogWrite() fonksiyonu kullanılabilir. Örneğin:

    int ldrValue = analogRead(A0);
    int brightness = map(ldrValue, 0, 1023, 0, 255);
    analogWrite(ledPin, brightness);
    Aykut AKMAN

    Aykut AKMAN

    Bilişim Öğretmeni

    Bu Gönderiye Yorum Yapılmamış

    Yorum Yap

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlendi.

    Diğer Yazılar