LDR ile LED Kontrolü

LDR kullanımı hakkında bilmeniz gerekenleri sizlerle paylaştık. Bu başlık altında LDR’den elde edilen analog veriyi baz alarak bir LED’in kontrolünü yani yanıp/sönmesini sağlayacağız. Devre için ihtiyacımız olan elemanlar şunlardır:

  • 10KΩ Direnç x 1
  • LDR x 1
  • 330Ω Direnç x 1
  • LED x 1

Bu bileşenleri kullanarak devremizi aşağıdaki gibi tasarlayalım.

Yukarıda verilen devrede bağlantıları özetle aşağıdaki gibi yaptık;

  • LDR’nin bir ucu Arduino’da bulunan 5V çıkışına bağlanır,
  • LDR’nin diğer ucuna 10KΩ’luk bir direnç bağlanır.
  • Direncin diğer ucu Arduino kartındaki GND pinine bağlanır.
  • 5V gerilim uygulanan LDR’nin diğer bacağında analog veri elde etmek için direnç ve LDR arasına bir bağlantı yapılır. Bağlantının diğer ucu Arduino’da bulunan Analog A0 girişine bağlanır.
  • LED’in anotu yani (+) bacağı Arduino kartındaki 13 nolu pine bağlanır.
  • 330Ω’luk dirneç LED’in katot yani (-) bacağına bağlanır. Direncin diğer bacağıda Arduino’da bulunan GND pinine bağlanır.

Devremizin kodu aşağıdaki gibidir.


int ldrPin = A0;
int ledPin = 13;
int ldrValue =0;

void setup() {

  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);

}

void loop() {

  ldrValue = analogRead(ldrPin);
  Serial.println(ldrValue);

  if(ldrValue>600) {
    digitalWrite(ledPin,HIGH);
  } else{
    digitalWrite(ledPin,LOW);
  }

}

Kodları açıklarsak;


int ldrPin = A0;
int ledPin = 13;
int ldrValue =0;

Burada ldrPin değişkeni A0 değerine sahiptir. LDR’den elde edilen analog verinin Arduino ortamına almak için bu pini kullanacağız. Bağlantıyı da yine bu pin ile gerçekleştirmiştik. ldrValue ise LDR’den elde edilen analog veriyi tutacak olan değişkenimizdir. ledPin ise LED’in anot yani (+) ucunun bağlandığı pin değerini tutmaktadır.


void setup() {

pinMode(ledPin, OUTPUT);
Serial.begin(9600);

}

pinMode komutu, pin ve mode olmak üzere iki parametre almaktadır. Pin parametresi, modunu ayarlamak istediğimiz pin bilgisini; mode parametresi ise belirtilen pinin giriş(INPUT) veya çıkış (OUTPUT) olarak ayarlanmasını sağlamak için kullanılır. Burada 13 nolu pin çıkış olarak yapılandırılır.

Serial.begin() komut ile seri iletişim başlatılır. Seri iletişimde saniyede 9600 bit gönderilecektir.

loop metodunda bulunan kodların açıklaması da aşağıdaki gibidir.


ldrValue = analogRead(ldrPin);
Serial.println(ldrValue);

analogRead() komutu ile A0 pinine gelen analog veri okunur. Okunan veri ldrValue değişkenine atanır. Serial.println() ile değişkenin değeri seri port ekranına yazılır.


if(ldrValue>600) {
digitalWrite(ledPin,HIGH);
} else{
digitalWrite(ledPin,LOW);
}

LDR’den gelen analog veri 600’den büyükse (yani LDR yoğun ışığa maruz ise) LED’in parlaması sağlanır. Bunun için digitalWrite() komutu ile 13 nolu pine HIGH değeri yani 5V gönderilir. Eğer analog veri 600’den küçük ise (yani LDR daha az bir ışığa maruz ise) LED’in sönmesi sağlanır. Bunun için digitalWrite() komutu ile 13 nolu pine LOW değeri yani 0V gönderilir.

Bu uygulama hakkında ayrıntılı bilgiler edinmek için kanalımda yayınladığım şu videoyu izlemenizi tavsiye ediyorum.