Arduino ile Işık Seviye Ölçümü
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:
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.