LDR ile Kırmızı ve Yeşil LED Kontrolü
LDR sensörü ile ortam ışığını okuyup ışık seviyesine göre kırmızı veya yeşil LED yakacağız.
LDR nedir? LDR nerelerde kullanılır? Arduino LDR nasıl kullanılır? LDR Arduino ile devre bağlantısı nasıl yapılır?
LDR, Light Dependent Resistor yani ışığa bağımlı direnç anlamına gelir. Üzerine gelen ışık şiddetine göre direnci değişen bir devre elemanıdır. Genellikle ışık arttıkça direnci azalır, ışık azaldıkça direnci artar.
LDR günlük hayatta sokak lambalarında, fotoğraf makinelerinin flaş sistemlerinde, araçların otomatik farlarında ve otomatik gece lambalarında kullanılabilir.
Arduino ile LDR kullanarak birçok proje yapılabilir. Örneğin LDR sensörünü koyduğunuz yere elinizi yaklaştırdığınızda ışığı keseceğiniz için bu değişimi algılayıp bir motoru, LED’i veya başka bir çıkışı çalıştırabilirsiniz.
LDR tek başına analog değer üretmez; genellikle bir direnç ile birlikte gerilim bölücü devresi oluşturularak Arduino’nun analog pinlerinden birine bağlanır. Bu örnekte LDR değeri A0 pininden okunacaktır.
Bu örnek projede ışık değeri belirli bir değerin altına düştüğünde kırmızı LED, ışık şiddeti yükseldiğinde yeşil LED yanacaktır.
- 1 adet Arduino
- 1 adet LDR sensör
- 1 adet kırmızı LED
- 1 adet yeşil LED
- LED’ler için uygun direnç
- LDR için gerilim bölücü direnci
- 1 adet breadboard
- Yeterli miktarda jumper kablo
LED’ler için seri direnç kullanılmalıdır. LDR’nin Arduino tarafından okunabilmesi için sabit bir dirençle gerilim bölücü bağlantısı yapılmalıdır.
analogRead(LDRPin) komutu ile LDR’nin bağlı olduğu A0 pinindeki değer okunur ve isik_degeri adlı değişkene aktarılır.
Eğer ışık değeri 200 birimin altına düşerse kırmızı LED yanar. Işık değeri 200 birimin üzerindeyse yeşil LED yanar.
Klavyeden CTRL + Shift + M tuşlarına basarak Seri Port Ekranı’ndan LDR’nin Arduino’ya gönderdiği değerleri görüntüleyebilirsiniz.
Eşik değeri ortam ışığına, LDR bağlantı yönüne ve kullanılan direnç değerine göre değişebilir. Bu yüzden 200 değeri gerektiğinde Seri Port Ekranı’ndan görülen değerlere göre ayarlanmalıdır.
int redPin = 4;
int greenPin = 3;
int LDRPin = A0;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int isik_degeri = analogRead(LDRPin);
Serial.println(isik_degeri);
delay(250);
if (isik_degeri < 200) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
} else {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
}
}
const int redPin = 4;
const int greenPin = 3;
const int LDRPin = A0;
const int esikDeger = 200;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int isikDegeri = analogRead(LDRPin);
Serial.print("LDR Degeri: ");
Serial.println(isikDegeri);
bool karanlik = isikDegeri < esikDeger;
digitalWrite(redPin, karanlik ? HIGH : LOW);
digitalWrite(greenPin, karanlik ? LOW : HIGH);
delay(250);
}
Bu sürümde eşik değeri sabit olarak tanımlandı ve LED durumları daha okunabilir şekilde kontrol edildi.