Gerekli malzemeler:

Foto direnç, üzerine düşen ışığın şiddetine bağlı olarak değişen dirence sahip bir elemandır. Direnci, üzerine düşen ışık miktarıyla ters orantılı olarak değişir. Gündelik kullandığımız çoğu elektronik alette “fotosel” ismiyle yaygın olarak kullanılır. Bu uygulamamızda 4 adet LED’imiz, LDR’nin algıladığı ışık miktarına göre değişik sayılarda yanarak ışık seviyesi göstergesi gibi çalışacak.

Kartımızın bağlantı şeması şu şekilde:

ders4_bb

Kodumuz ise şu şekilde:

int ledler[] = {4, 5, 6, 7};
int led_sayisi = 4;
int ldr_pin = A0;
int deger = 0;

void setup()
{
  for (int i = 0 ; i < led_sayisi ; i++)
  {
    pinMode(ledler[i], OUTPUT);
  }
}

void loop()
{
  deger = analogRead(ldr_pin);
  if (deger > 0 && deger <= 255)
  {
    digitalWrite(ledler[0], HIGH);
    digitalWrite(ledler[1], LOW);
    digitalWrite(ledler[2], LOW);
    digitalWrite(ledler[3], LOW);
  }
  if (deger > 256 && deger <= 511)
  {
    digitalWrite(ledler[0], HIGH);
    digitalWrite(ledler[1], HIGH);
    digitalWrite(ledler[2], LOW);
    digitalWrite(ledler[3], LOW);
  }
  if (deger > 512 && deger <= 767)
  {
    digitalWrite(ledler[0], HIGH);
    digitalWrite(ledler[1], HIGH);
    digitalWrite(ledler[2], HIGH);
    digitalWrite(ledler[3], LOW);
  }
  if (deger > 768 && deger <= 1023)
  {
    digitalWrite(ledler[0], HIGH);
    digitalWrite(ledler[1], HIGH);
    digitalWrite(ledler[2], HIGH);
    digitalWrite(ledler[3], HIGH);
  }
  delay(100);
}

Bu uygulamamızda, analog giriş kullanarak LDR’nin algıladığı ışık seviyesini sayısal bir değere dönüştürdük. Bu sayısal değer 0 ile 1023 arasında değiştiğinden, her 255 adımda bir fazla LED’in yanmasını sağladık.

36 Yorumlar

  1. Arduino ile Işık Seviye Ölçümü ; yazılımı kendim yazdım ve parçaları yerleştirdim ancak çalışmadı, belki hatalı girdim diye sizin anlatımınızdaki yazılımı kopyalayıp yükledim yine olmadı ,parçaları söktüm tekrar kurdum yine çalışmadı.Aynı parçaları (sağlam olduklarını anlamak için) başka örneklerde denediğimde çalıştıklarını gördüm. Kısacası herşey doğru görünüyor ama örnek çalışmıyor . Aynı sorunu ” Arduino ile Buton ve LED Uygulaması”ndada yaşadım … Neden olabilir ? Tşk

  2. Merhabalar bu devrenin yanında yani 1 arduino uno kart üzerinde hem ışık ölçümü hemde sıcaklık ölçümü yapabilir miyiz?

  3. Merhabalar. Bende aynı sorunu yaşamıştım, ledleri gösterilenin tam tersi bağlayınca çalışmaya başladı. Anot katot uçları yanlış gösterilmiş olabilir.

  4. Merhabalar iyigunler ben bu devrede isik olcumunu lcd ekran uzerinde gormek istiyorum yalniz bir turlu uygun devre bulamadim yardimci olurmusunuz tesekkurler

  5. merhabalar,
    bende Adnan arkadaşımız gibi uygulamayı yaptım ve sensör ( ldr ) işe yaramadı yani uygulamada bir sıkıntımı var bilmiyorum ama çözümünü bekliyorum..

  6. merhabalar abi ben her şeyi yaptım ancak benimkinde ışık sönükken 4 üde yanıyor 1 kere ışığı gördükten sonra 4 üde sönüyor ve bir daha şığı kapatınca öalışmıyor neden olabilir

  7. ARKADAŞLAR DEVRENİN ÇALIŞAN HALİ
    int ledler[]= {4,5,6,7};
    int led_sayisi=4;
    int ldr_pin=A0;
    int deger=0;

    void setup()
    {
    Serial.begin(9600);
    Serial.println(“LDR Okuma”);

    for (int i=0; i0&&deger256&&deger512&&deger768&&deger<=1023)
    {
    digitalWrite(ledler[0], HIGH);
    digitalWrite(ledler[1], HIGH);
    digitalWrite(ledler[2], HIGH);
    digitalWrite(ledler[3], HIGH);
    }
    delay(100);
    }

    • Devrenizi kurarken buradaki şemanın birebir aynısını kullanmanız gerekmez. Kendi breadboard’unuzda devrenizi kurabilirsiniz: Breadboard’un üst sırasında bir veya iki adet bulunan sıra yatayda birbiri ile bağlıdır. Bu hatlar sizin breadboard’unuzda yok ise güç bağlantılarını teker teker gerekli noktalara (örneğin LED’lere seri bağlı dirençlerin gittiği GND hattı) kablo ile bağlamanız gereklidir.

    • Bilgisayarınızda Arduino sürücülerinin doğru bir şekilde yüklü olduğundan ve dijital 0 ve 1 numaralı pinlerinde herhangi bir bağlantı olmadığından emin olun.

  8. ben devreyi kurdum çalıştırdım fakat arduino uygulamayı kapattıktan sonrada hala devre çalışır durumda.. Nasıl kodu sıfırlayabilirim yardım lütfen

    • Arduino içerisine yüklediğiniz kod, mikrokontrolcü içerisinde yer alan flaş belleğe yazılıdğından enerji kesildiğinde silinmeyecektir. Arduino içerisindeki kodu değiştirmek için farklı bir kod yüklemeniz gereklidir. Arduino kartları, varsayılan olarak Blink (Dosya > Örnekler 01.Basics > Blink) programı yüklü gelmektedir.

  9. Arduino:1.8.5 (Windows 10), Kart:”Arduino/Genuino Uno”

    Çalışmanız programın 1154 bayt (3 %) saklama alanını kullandı. Maksimum 32256 bayt.
    Global değişkenler belleğin 19 byte kadarını (0%) kullanıyor. Yerel değişkenler için 2029 byte yer kalıyor. En fazla 2048 byte kullanılabilir.
    avrdude: ser_open(): can’t open device “\\.\COM1”: Sistem belirtilen dosyayı bulamıyor.

    Karta yüklenirken sorun oluştu. Tavsiyeler için http://www.arduino.cc/en/Guide/Troubleshooting#upload adresine göz atabilirsiniz.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

  10. Öncelikle paylaşımlarınız için teşekkürler. Bu uygulama ile ilgili anlamadığım LDR nin bir çeşit diren olduğunu biliyorum. Neden Ldr bir bacağına yine direç bağlıyoruz?

  11. Merhaba bu devrenin tersini yapmak mümkün mü acaba? Yani parlaklık arttıkça daha az led yakan halini?

    • deger = analogRead(ldr_pin); satırının hemen altına

      deger = 1024 - deger;

      satırı ekleyerek işlemi tersine çevirmeniz mümkündür.

    • Merhaba, bu kodda herhangi bir kütüphane kullanmadık. Yalnızca Arduino içerisinde kendiliğinden yer alan analogRead() fonksiyonunu kullandık.

  12. Merhaba, ben daha 12 yaşındayım her şeyi denedim ama olmuyo ters çevirdim olmuyo Mus adlı kişinin paylaştığı kodları kopyala yapıştır yaptım olmadı ne yapmam gerek

CEVAP VER

Please enter your comment!
Please enter your name here