Bu projede, LDR (Light Dependent Resistor – Işığa Bağımlı Direnç) kullanarak ortam ışık şiddetini ölçeceğiz ve bu değere göre LED kontrolü yapacağız. LDR’nin direnç değeri ışık şiddetine göre değişir ve bu değişimi Arduino ile okuyabiliriz.
Öğrenecekleriniz:
✔ LDR çalışma prensibi
✔ Analog giriş okuma
✔ Eşik değer belirleme
✔ LED kontrolü
2. Gerekli Malzemeler
| Malzeme | Adet | Açıklama |
|---|---|---|
| Arduino Uno | 1 | Mikrodenetleyici kartı |
| LDR | 1 | Işık sensörü |
| 10kΩ Direnç | 1 | Voltaj bölücü için |
| LED | 1 | Çıkış göstergesi |
| 220Ω Direnç | 1 | LED koruma direnci |
| Breadboard | 1 | Devre kurulum alanı |
| Jumper Kablolar | 6-7 | Bağlantı için |
3. Devre Bağlantısı
Adım Adım Bağlantı Kılavuzu
- LDR Bağlantısı:
- Bir bacak → Arduino 5V
- Diğer bacak → 10kΩ direnç → GND
- Aynı bacak → Arduino A0 (Analog Giriş)
- LED Bağlantısı:
- Anot (+) → 220Ω direnç → Arduino D13
- Katot (-) → GND
Devre Şeması:
5V → LDR → A0
LDR → 10kΩ → GND
D13 → 220Ω → LED → GND
4. Arduino Programı – Temel Versiyon
// Pin tanımlamaları
const int ldrPin = A0; // LDR bağlı pin
const int ledPin = 13; // LED bağlı pin
// Değişkenler
int ldrValue = 0; // LDR'den okunan değer
int threshold = 500; // Eşik değeri
void setup() {
pinMode(ledPin, OUTPUT); // LED pinini çıkış olarak ayarla
Serial.begin(9600); // Seri iletişimi başlat
}
void loop() {
// LDR değerini oku (0-1023)
ldrValue = analogRead(ldrPin);
// Seri monitöre yazdır
Serial.print("LDR Değeri: ");
Serial.println(ldrValue);
// Eşik değer kontrolü
if (ldrValue < threshold) {
digitalWrite(ledPin, HIGH); // Karanlıkta LED'i yak
} else {
digitalWrite(ledPin, LOW); // Aydınlıkta LED'i söndür
}
delay(100); // Küçük bir gecikme
}
5. Gelişmiş Versiyon (Analog Okuma + PWM Kontrol)
const int ldrPin = A0;
const int ledPin = 9; // PWM pin
int ldrValue = 0;
int ledBrightness = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
ldrValue = analogRead(ldrPin);
// LDR değerini 0-255 aralığına dönüştür
ledBrightness = map(ldrValue, 0, 1023, 255, 0);
// LED parlaklığını ayarla
analogWrite(ledPin, ledBrightness);
Serial.print("LDR: ");
Serial.print(ldrValue);
Serial.print(" | Parlaklık: ");
Serial.println(ledBrightness);
delay(50);
}
6. Kod Açıklaması
- analogRead(): LDR’den 0-1023 arası değer okur
- map(): Analog değeri PWM aralığına (0-255) dönüştürür
- analogWrite(): LED parlaklığını ayarlar
- Eşik Değer: Ortam aydınlığına göre ayarlanabilir

Gerekli olan malzemeler:
- 2 adet direnç
- 1 adet LDR
- 1 adet Buton
- 1 adet BreadBoard
- 1 adet Arduino
- ve Jumper kablolar
void setup()
{
pinMode(3, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int isik=analogRead(A0);
Serial.println(isik);
delay(50);
if(isik>500){
digitalWrite(3, LOW);
}
else{
digitalWrite(3,HIGH);
}
}
NOT: Bu projeyi gerçek hayatta uyguladığınızda doğru sonucu alabilmek için SERİ MONİTÖR üzerinden LDR’nizin değerini ölçerek bir aralık belirleyebilrisiniz. Genellikle zaman TinkerCad’de ki değerle uyuşmayabilir.
7. Sık Karşılaşılan Sorunlar
| Sorun | Çözüm |
|---|---|
| Değerler tutarsız | LDR’yi sabitleyin, ortam ışığını stabilize edin |
| LED yanmıyor | Eşik değerini düşürün (örneğin 300) |
| Okumalar çok yüksek/düşük | 10kΩ direnç değerini değiştirin |
8. LDR Çalışma Prensibi
LDR’nin direnci:
- Karanlıkta: Yüksek (≈1MΩ)
- Aydınlıkta: Düşük (≈100Ω)
Voltaj bölücü devresi sayesinde Arduino bu değişimi analog girişte okuyabilir.
9. Sonuç
Bu projede Arduino ile:
✔ LDR kullanımını
✔ Analog giriş okumayı
✔ Işık seviyesine göre çıkış kontrolünü
✔ Veri haritalamayı (map) öğrendik.






