LDR ile LED Yakma

Bu yazımızda Arduino’da LDR ile LED Yakmak için program kodlayıp devre kurulumunu yapacağız. Bu konuyu öğrendiğinizde gece lambası, sokak lambası, akıllı ev, alarm-uyarı sistemleri, basit algılama projelerinde kullanabileceksiniz.

Öncelikle LDR’nin ne işe yaradığını bilmeliyiz. LDR (Light Dependent Resistor), ortam ışık seviyesini algılamak için kullanılan bir ışığa duyarlı dirençtir. Üzerine düşen ışık miktarı arttıkça direnci azalır; ışık azaldıkça direnci artar.

Bu devrede ortamdaki ışık seviyesi belirlediğimiz değerin altına düştüğünde LED’i yakacağız, ışık seviyesi belirlediğimiz değerin üzerine yükseldiğinde ise LED’i kapatacağız.

Breadboard, led, direnç, arduino, LDR konularında yeterince bilgi sahibi değilseniz, öncelikle o konularla ilgili yazılarımızı okumanızı tavsiye ederim.

    *Gerekli Malzemelerden Başlayalım.

LDR ile LED Yakma Devresi ve Programı

Şimdi öncelikle devremizi kuralım.

Led’in eksi(katot yada kısa bacak) bacağına 330ohm’luk direnci bağlayalım ve direcin diğer bacağını GND’ye bağlayalım. Led’in artı(anot yada uzun bacak) bacağını ise Arduino’nun 2 nolu dijital pinine bağlayalım.

LDR’nin bir bacağını Arduino’nun 5V pinine bağlıyoruz. LDR’nin diğer bacağında ise devrenin kararlı çalışması için 10kohm’luk direnci pull-down olarak kullanmamız gerekiyor. Aynı bacaktan da Arduino’nun A0 pinine bağlıyoruz.

Pull-up veya Pull-down dirençler ilgili pinin kararlı çalışmasını sağlamak için kullanılır.
Pull-up direnç giriş pinini VCC’ye (5V) bağlı tutar.
Pull-down direnç giriş pinini GND’ye bağlı tutar.

#define led 2
#define ldr A0

void setup() {
  pinMode(led,OUTPUT);
}

void loop() {
  int sensorDegeri = analogRead(ldr);
  if(sensorDegeri>500)
  {
    digitalWrite(led,LOW);
  }
  else{
    digitalWrite(led,HIGH); 
  }
  delay(100); 
}

Sıra geldi kodlamaya. Detaylı şekilde kodları anlatacağım.

PROGRAM ADIMLARI

ADIM 1:

#define led 2 //ledin bağlı olduğu 2 nolu pin "led" olarak isimlendirildi.
#define ldr A0 //ldr'nin bağlı olduğu A0 pini "ldr" olarak isimlendirildi.

Bu örnekte Arduino’nun 2. dijital pinini led yakmak için, A0 analog pinini ise LDR’nin ışık algılama seviyesi için seçtim.

#define led 2 Burada yapılan işlem Led’i bağlayacağımız pini isimlendirmek. Daha sonra karışıklığa neden olmamak adına 2 numaralı pine led ismini verdim.
#define ldr A0 Burada ise A0 numaralı pine ldr ismini veriyorum. Bu işlemden sonra A0 numaralı pin artık ldr isminde kullanılacak.

ADIM 2:

void setup() {
  pinMode(led,OUTPUT);
}

void setup() Arduino çalışmaya başladığında ilk olarak bu fonksiyonunu okur ve ön ayarları yapar.

pinMode() komutu ile led pinini OUTPUT(Sinyal Çıkışı) olarak ayarladık. Çünkü bu pinin göndereceği sinyal ledi yakacak.

ADIM 3:

void loop() {
  int sensorDegeri = analogRead(ldr);
  if(sensorDegeri>500)
  {
    digitalWrite(led,LOW);
  }
  else{
    digitalWrite(led,HIGH); 
  }
  delay(100); 
}

Loop() fonksiyonu Arduino çalıştığı sürece, içerisindeki komutları sürekli olarak tekrar eder.

int sensorDegeri = analogRead(ldr); kod satırı LDR’den ışık şiddeti verisini okur ve bir değişkene kaydeder. analogRead(ldr) komutu ldr isimli yani A0 pininden analog sensör verisini okur ve sensorDegeri tam sayı değişkenine bu veriyi kaydeder.

AnalogRead, sensörlerden gelen sürekli (0–5V arası) gerilim değerlerini ADC(Analog Digital Converter) sayısal değere dönüştürür. Bu işlem ADC (Analog-to-Digital Converter) ile yapılır. Bu işlem sonucunda ölçüm değeri 0-1023 arasında bir sayıya çevrilir.

if(sensorDegeri>500)
if bir kontrol deyimidir. Belirli koşula göre programın akışını yönlendirmek için kullanılır. Burada sensorDegeri değişkenindeki değer 500’den çoksa digitalWrite(led,LOW); komutu ile led söndürülüyor.

else İf içerisinde yazılan şart sağlanmazsa, yani butona basılmazsa ELSE kısmı çalışıyor.

else kısmı çalışırsa sensorDegeri 500’den az anlamına gelir ve digitalWrite(led,HIGH); komutuyla led yakılır.

delay(100); komutu 100ms bekleme yapar. Bu sayede her 100milisaniyede bir kez ldr değeri okunur.

Reply