Anasayfa / ROBOTİK KODLAMA / Arduino LDR Kullanımı

Arduino LDR Kullanımı

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

MalzemeAdetAçıklama
Arduino Uno1Mikrodenetleyici kartı
LDR1Işık sensörü
10kΩ Direnç1Voltaj bölücü için
LED1Çıkış göstergesi
220Ω Direnç1LED koruma direnci
Breadboard1Devre kurulum alanı
Jumper Kablolar6-7Bağlantı için

3. Devre Bağlantısı

Adım Adım Bağlantı Kılavuzu

  1. LDR Bağlantısı:
    • Bir bacak → Arduino 5V
    • Diğer bacak → 10kΩ direnç → GND
    • Aynı bacak → Arduino A0 (Analog Giriş)
  2. 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ı

  1. analogRead(): LDR’den 0-1023 arası değer okur
  2. map(): Analog değeri PWM aralığına (0-255) dönüştürür
  3. analogWrite(): LED parlaklığını ayarlar
  4. 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ızLDR’yi sabitleyin, ortam ışığını stabilize edin
LED yanmıyorEşik değerini düşürün (örneğin 300)
Okumalar çok yüksek/düşük10kΩ 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. 

Etiketlendi:

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir