Arduino ile bir LDR kullanarak ve bir kontrol anahtarı ile bir Arduino'yu aydınlatma
Bu eğitimde, bir Arduino ile ortam ışık seviyelerine dayalı olarak bir ışığı kontrol etmek için bir Işık Bağımlı Direnç (LDR) nasıl kullanılacağını keşfedeceğiz. LDR, ışık yoğunluğuna bağlı olarak direncini değiştirir; bu nedenle, bir ortamda ışık olup olmadığını tespit etmek için kullanılabilir. Işık belirli bir eşik değerinin altındaysa, bir çıkış pinini açarak bir ışığı aktive edeceğiz.

Gerekli ana bileşenler arasında bir Arduino kartı, bir 10k ohm direnç, LDR ve bazı jumper kabloları bulunmaktadır. LDR, analog voltajı okumak için dirençle birlikte bir voltaj bölücü konfigürasyonunda bağlanacaktır; bu voltaj, ışık yoğunluğuna bağlı olarak değişecektir. Bu voltajı bir LED veya diğer çıkış cihazlarını kontrol etmek için kullanacağız.
Kurulum ve kodun görsel bir gösterimi için, ilgili videoyu kontrol etmeyi unutmayın (videoda 0:10).
Donanım Açıklaması
Işık Bağımlı Direnç (LDR), gelen ışık yoğunluğu arttıkça direnci azalan bir direnç türüdür. Genellikle ışık seviyelerinin izlenmesi gereken uygulamalarda kullanılır. Kurulumumuzda, LDR ortam ışık seviyelerini tespit etmek için kullanılacak ve Arduino'ya karşılık gelen bir analog voltaj gönderecektir.
Arduino, bu voltajı analog pinlerinden biri aracılığıyla okuyacak ve tanımlı bir eşik değerine göre bağlı ışığı açıp kapatmaya karar verecektir. 10k ohm direnç, Arduino'nun okuyabileceği kararlı bir voltaj çıkışı oluşturmak için LDR ile birlikte voltaj bölücü konfigürasyonunda kullanılır.
Veri Sayfası Detayları
| Üretici | Genel |
|---|---|
| Parça numarası | LDR |
| Direnç (ışık) | 100 - 500 Ω |
| Direnç (karanlık) | 10 kΩ - 1 MΩ |
| Çalışma voltajı | 3.3 V - 5 V |
| Yanıt süresi | 20 ms (tipik) |
| Paket | Delik içi |
- Doğru voltaj seviyelerini sağladığınızdan emin olun; 5V'u aşmayın.
- Okumaları stabilize etmek için bir pull-down direnci kullanın.
- Voltaj bölücü için uygun bir direnç değeri (10kΩ) seçin.
- Gerekirse gürültü filtreleme için bir kapasitör kullanmayı düşünün.
- Test sırasında LDR'yi doğrudan ışık kaynaklarından uzak tutun.
Bağlantı Talimatları

Döngüyü kurmak için, LDR'nin bir terminalini Arduino üzerindeki 3.3V güç kaynağına bağlayarak başlayın. LDR'nin diğer terminali, 10k ohm direncin bir ucuna bağlanacaktır. Direncin diğer ucu ise toprağa bağlanmalıdır.
Sonra, LDR ile direnç arasındaki bağlantıyı bir analog giriş pinine, örneğin A0 pinine bağlayın. Bu bağlantı, Arduino'nun voltajı okumasını sağlayacaktır. Arduino'nun toprağını devrenizin ortak toprağına bağladığınızdan emin olun, böylece doğru işlevsellik sağlanır.
Kod Örnekleri ve Geçiş
Aşağıdaki kod parçası, seri iletişimi başlatır ve LDR'den analog değeri okur. Değer daha sonra bir voltaja dönüştürülür ve seri monitöre yazdırılır.
int LDRvalue = analogRead(A0); // LDR'den analog değeri oku
float voltage = LDRvalue * (5.0 / 1023.0); // Voltaja dönüştür
Serial.print("Voltaj ="); // Etiket yazdır
Serial.print(voltage); // Gerçek voltajı yazdır
Bu kodda, LDRvalue değişkeni LDR'den alınan ham analog okumayı saklar. Voltaj, maksimum analog değere (1023) ve voltaj referansına (5V) dayanarak hesaplanır.
Sonra, bu voltajın bir eşik değerinin (bu durumda 3V) altında olup olmadığını kontrol ederiz ve bir çıkış pinini kontrol ederiz.
if(voltage < 3 ){
digitalWrite(10, HIGH); // Işığı aç
}else{
digitalWrite(10, LOW); // Işığı kapat
}
Burada, ölçülen voltaj 3 voltun altındaysa, çıkış pinini (10) HIGH olarak ayarlıyoruz ve ışığı açıyoruz; aksi takdirde LOW olarak ayarlıyoruz ve kapatıyoruz. Işık durumunu sürekli kontrol etmek, ortam ışık seviyelerine dayalı gerçek zamanlı kontrol sağlar.
Demonstrasyon / Ne Beklemeli
Bağlantıları tamamladıktan ve kodunuzu yükledikten sonra, LDR üzerindeki ışık yoğunluğunu değiştirirken seri monitörde voltaj okumalarının değiştiğini görmelisiniz. LDR'yi kapatırsanız, voltaj artmalı ve ışığa maruz kaldığında azalmalıdır. Bu davranış, ışığı kontrol eden çıkış pinini doğrudan etkileyecektir.
Yüzer girişler veya yanlış voltaj seviyeleri gibi yaygın tuzaklara dikkat edin; bu durum hatalı okumalarla sonuçlanabilir (videoda 12:30).
Video Zaman Damgaları
- 00:00 LDR'ye Giriş
- 01:30 Donanım kurulumu
- 03:45 Kod açıklaması
- 06:00 Kodu çalıştırma
- 09:15 Sorun giderme ipuçları
//Original source: https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
// This code is used with a video tutorial for RoboJax.com
// Published on August 31, 2017 from Ajax, ON, Canada.
// Written/Edited by A.B.S
/void setup()
{
Serial.begin(9600); // setup serial
pinMode(10, OUTPUT);
}
void loop(){
int LDRvalue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = LDRvalue * (5.0 / 1023.0);
// print out the value you read:
Serial.print("Voltage =");// prints the text "Voltage ="
Serial.print(voltage);// prints the actual voltage
// check if voltage is less than 3, then set pin 10 to high or ON
if(voltage < 3 ){
digitalWrite(10, HIGH);
}else{
digitalWrite(10, LOW); // or keep it OFF when voltage is larger than 3
}
Serial.println();
delay(300);
}
Kaynaklar ve referanslar
Henüz kaynak yok.
Dosyalar📁
Diğer dosyalar
-
LDR devre şeması 1
LDR_circuit1.PDF0.04 MB -
LDR devre şeması 2
LDR_circuit2.PDF0.04 MB