Rehber Arduino IŞIK Seviyesini Ölçmek

Mithat Guner

Lider
Yönetici
Admin
1 Ekim 2016
1,415
1,291
1,094
Çevrimdışı
#1
Gerekli malzemeler:
  • Arduino UNO
  • Breadboard
  • 4 adet LED
  • 4 adet 330Ω direnç
  • 1 adet 10kΩ direnç
  • 1 LDR (fotosel)
  • İki ucu erkek jumper kablo
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:



Kodumuz ise şu şekilde:



Kod:
int ledler[] = {4, 5, 6, 7};

int led_sayisi = 4;
int ldr_pin = A0;
int deger = 0;
**** setup()
{
  for (int i = 0 ; i < led_sayisi ; i++)
  {
    pinMode(ledler[i], OUTPUT);
  }
}
**** 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.