Merhaba arkadaşlar, ldr ile ışık seviyesi göstergesi uygulamamızda daha önce yapmış olduğumuz ldr ile ışık şiddeti uygulamasının daha gelişmiş halini gerçekleştireceğiz.

Malzeme Listesi:

Arduino (istediğiniz modeli kullanabilirsiniz)

Breadboard

1 adet 5mm LDR (Işığa bağımlı direnç)

5 adet Kırmızı Led

5 adet 330 Ohm Direnç (Turuncu-Turuncu-Kahverengi)

1 adet 10k Ohm Direnç (Kahverengi-Siyah-Turuncu)

15 adet Erkek-Erkek Jumper Kablo


Bu derste alınan ışık şiddetini, 5 adet kırmızı led ile seviyeli olarak göstereceğiz. Burada alınan ışık şiddeti 0 ile 1000 arasında ölçelendirilecek ve 5 seviyede kullanıcıya görsel dönüt sağlanacaktır. Devremizi aşağıdaki devre şemasında gösterildiği gibi breadboard üzerine kuralım.

Bağlantıları yaptıysak kodumuza geçebiliriz.

#define Ldr A0
int Isik_siddeti = 0;
void setup()
{
Serial.begin(9600);
for (int i = 2; i < 7; i++)
{
pinMode(i, OUTPUT);
}
}
void loop()
{
int Ldr_deger = analogRead(Ldr);
Isik_siddeti = map (Ldr_deger, 0, 1023, 0, 1000);
Serial.print("ISIK = ");
Serial.println(Isik_siddeti);
if (Isik_siddeti <= 200)
{
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
else if (Isik_siddeti > 200 && Isik_siddeti <= 400)
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
else if (Isik_siddeti > 400 && Isik_siddeti <= 600)
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
else if (Isik_siddeti > 600 && Isik_siddeti <= 800)
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
}
else
{
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
}
}

Gerekli pin ve değişken tanımlamalarımızı yapıyoruz.

void setup() döngüsünde Serial ekranımızı ve gerekli pin çıkışlarımızı tanımlıyoruz.

void loop() döngüsünde Ldr ‘den analog okuma yapıyoruz ve bu değeri Ldr_deger adında integer (tamsayı) formatındaki değişkene atıyoruz.

Okunan ldr değerini  map komutuyla 0 ile 1000 arasına ölçeklendirip Isik_siddeti adlı değişkene atıyoruz.

Daha sonra if-else yapılarını kullanarak ışık şiddeti, eğer ışık şiddeti 200’e eşit veya 200‘den küçük ise sadece birinci led, 200 ile 400 arasında veya 400‘e eşitse birinci ve ikinci led şeklinde koşullandırmalar yapılmıştır.

Unutmayalım; hata ayıklama işlemi için serial ekran kullanımı projelerinizi geliştirirken büyük kolaylık sağlar.

Ldr ile ışık seviyesi göstergesi dersimiz işinize yaradıysa ve hoşunuza gittiyse diğer derslerimize göz atmayı unutmayın 🙂

3 YORUMLAR

    • İyi günler,
      40 tane led kullanmak istiyorsanız Arduino Uno yetersiz bir kart oluyor. Bu sebeple daha fazla dijital çıkış pini bulunduran Arduino Mega veya Robolink Market sitesinden bulabileceğiniz farklı Arduino modelleri ile yeterli dijital çıkışı sağlayabilirsiniz. Arduino kartlarının yanında bir de PCA8574AD I2C 8-bit I/O Genişletme Kartı ile dijital çıkış pinlerini çoğaltabilirsiniz. Ancak fiyatları göz önünde bulundurursak Arduino Mega gibi bir Arduino kartı almak daha avantajlı olur çünkü Arduino kartlarını başka projelerde de kullanabilirsiniz. Sorunuz olursa lütfen yorum yazmaktan çekinmeyin 🙂
      İyi çalışmalar dileriz.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz