LDR; Light Dependent Resistor yani Işığa Bağımlı Direnç anlamına gelen kelimelerin baş harflerinden oluşan, foto direnç olarak da adlandırılan devre elemanıdır. Dış ortamın fiziksel etkisine bağlı olarak çıktı değerlerini değiştirdiği için bir sensör olarak tanımlanabilir.
Üzerine düşen ışık miktarı arttıkça LDR direnç değeri azalır, ışık miktarı azaldıkça artar. LDR, her ışık koşulunda farklı direnç değerine sahip olduğu için bir analog sensördür. Bu nedenle Arduino kartı üzerindeki A0-A5 aralığındaki analog girişlerden birine takılması uygundur. LDR sensörün devre sembolü aşağıdaki şekildedir.
Malzemeler
- 1 adet Arduino
- 1 adet LDR sensör
- 1 adet Led
- 1 adet 10k direnç
- 1 adet 330 ohm direnç
Bağlantı şeması
LDR bir direnç olduğu için bacakları arasında anot-katot ayrımı yoktur. LDR’ nin bir bacağı Arduino’ dan gelen 5V hattına bağlanmış, diğer bacağı hem Arduino kartının A3 numaralı analog I/O pinine, hem de 10K direnç ile GND hattına bağlanmıştır. LDR direnci ortamdaki ışık miktarına göre değişecek, A3 pininin giriş gerilimi de LDR direncine göre değişecektir. Böylece A3 pininde okunan gerilim miktarı; ortamdaki ışık miktarı hakkında bilgi verecektir.
Oluşturan devrede amaç; ortamdaki ışık miktarı eşik değerinin altına düştüğünde ledin yanması, eşik değerinin üzerine çıktığında ledin kapanmasıdır. Bunun için 7 numaralı dijital I/O pinine bir adet led bağlanmıştır.
Kaynak kod
int led = 7; // Ledin bağlı olduğu pinin numarasını led adında bir değişkene ata int LDRPin = A3; // LDR nin bağlı olduğu analog pin numarasını bir değişkene ata void setup() { pinMode(led, OUTPUT) // Ledin bağlı olduğu pini çıkış pini olarak işaretle pinMode(LDRPin, INPUT) // LDR nin bağlı olduğu pini giriş pini olarak işaretle } void loop() { int isik_miktari = analogRead(LDRPin); // LDR sensörünün değerini isik_miktari değişkenine ata if (isik_miktari>300) // Işık miktarı eşik değeri olarak seçilen 300 den fazla ise { digitalWrite(led, LOW); // Ledi kapat } else // Işık miktarı eşik değeri olarak seçilen 300 den az ise { digitalWrite(led, HIGH); // Ledi aç } }
Programda analogRead(LDRPin)
fonksiyonu ile foto direnç değeri okunmuş ve if-else koşul ifadesi ile eşik değeri ile karşılaştırılmıştır. Arduino analog pinlerinden okunan değer 0-1023 aralığındadır. Geliştirilen uygulamanın ihtiyaçlarına göre eşik değeri bu aralıkta programcı veya kullanıcı tarafından belirlenebilir.