Akıllı Lamba: Ortam Işığını Algılayan Sihirli Lamba
Evinizin en akıllı köşesiyle tanışmaya hazır olun! Bu projede, karanlıkta otomatik olarak yanan ve ışıklandığında sönen bir lamba tasarlayacağız. Bu sihirli dokunuşu sağlayan anahtar eleman, ışığa duyarlı bir sensör olan LDR. Bu sayede, sensörden gelen verilere göre karar veren, gerçek bir akıllı sisteme sahip olacaksınız.
Gerekli Malzemeler
- Arduino Uno: Projemizin işlemcisi.
- 1 adet LED: Otomatik olarak yanacak lambamız.
- 1 adet LDR (Işığa Duyarlı Direnç): Ortamdaki ışık seviyesini algılayacak sensörümüz.
- 1 adet 10kΩ Direnç: LDR ile bir voltaj bölücü devresi kurmak için gerekli.
- Breadboard: Devre elemanlarını birbirine bağlamak için.
- Jumper Kablolar: Bağlantı kabloları.
Devre Kurulumu
Bu projenin en kritik kısmı, LDR ile kuracağımız voltaj bölücü devresidir. Adımları dikkatlice takip edin:
- LED ve 220Ω Direnç Bağlantısı:LED'in uzun bacağını (anot) breadboard'a yerleştirin.220Ω direncin bir ucunu LED'in uzun bacağına takın.LED'in kısa bacağını (katot) bir jumper kabloyla Arduino'daki GND pinine bağlayın.220Ω direncin boşta kalan ucunu bir jumper kabloyla Arduino'daki dijital Pin 13'e bağlayın.
- LED'in uzun bacağını (anot) breadboard'a yerleştirin.
- 220Ω direncin bir ucunu LED'in uzun bacağına takın.
- LED'in kısa bacağını (katot) bir jumper kabloyla Arduino'daki GND pinine bağlayın.
- 220Ω direncin boşta kalan ucunu bir jumper kabloyla Arduino'daki dijital Pin 13'e bağlayın.
- LDR ve 10kΩ Direnç Bağlantısı (Voltaj Bölücü):LDR'nin bir bacağını Arduino'daki 5V pinine bağlayın.LDR'nin diğer bacağını hem Arduino'daki Analog A0 pinine, hem de 10kΩ direncin bir ucuna bağlayın.10kΩ direncin boşta kalan ucunu Arduino'daki GND pinine bağlayın.
- LDR'nin bir bacağını Arduino'daki 5V pinine bağlayın.
- LDR'nin diğer bacağını hem Arduino'daki Analog A0 pinine, hem de 10kΩ direncin bir ucuna bağlayın.
- 10kΩ direncin boşta kalan ucunu Arduino'daki GND pinine bağlayın.
Bu devre düzeni, LDR'ye gelen ışık miktarı değiştikçe A0 pinine giden voltajın da değişmesini sağlar. Karanlıkta LDR'nin direnci artar, bu da A0 pinine giden voltajı düşürür. Aydınlıkta ise direnç düşer ve voltaj artar.
Kodlama Zamanı!
Devreyi kurduktan sonra, Arduino IDE'yi açın ve aşağıdaki kodu kopyalayıp yapıştırın. Bu kod, sensörden gelen veriyi okuyacak ve buna göre LED'i kontrol edecektir.
C
// Değişkenleri tanımla
const int ledPin = 13; // LED'in bağlı olduğu pin
const int ldrPin = A0; // LDR'nin bağlı olduğu analog pin
// Değişken tanımlamaları: Okunan değerleri ve eşik değerini saklamak için
int ldrValue = 0; // LDR'den okunan değeri tutacak değişken
int threshold = 300; // Ortamın karanlık olduğunu belirleyen eşik değeri (bu değeri deneyerek ayarlayın)
// Bu fonksiyon, kod çalışmaya başladığında bir kez çalışır.
void setup() {
// Seri iletişimi başlat, debug için kullanışlıdır.
Serial.begin(9600);
// LED pinini ÇIKIŞ olarak ayarla
pinMode(ledPin, OUTPUT);
// LDR pinini GİRİŞ olarak ayarla
pinMode(ldrPin, INPUT);
}
// Bu fonksiyon, Arduino çalıştığı sürece sürekli tekrar eder.
void loop() {
// LDR sensöründen analog değeri oku (0-1023 arası)
ldrValue = analogRead(ldrPin);
// Seri monitöre ldr değerini yazdır
Serial.print("LDR Degeri: ");
Serial.println(ldrValue);
// Eğer LDR'den okunan değer eşik değerinden küçükse (yani ortam karanlıksa)...
if (ldrValue < threshold) {
// LED'i yak
digitalWrite(ledPin, HIGH);
} else {
// Aksi takdirde (ortam aydınlıksa)...
// LED'i söndür
digitalWrite(ledPin, LOW);
}
// Okuma işleminin daha stabil olması için küçük bir gecikme ekle
delay(100);
}
Kodu Anlayalım
- const int ldrPin = A0;: LDR'yi bağladığımız analog pini tanımladık. Analog pinler, sürekli değişen (analog) voltajı okuyabilir.
- int threshold = 300;: Eşik değerimizdir. LDR'den okunan değer bu eşiğin altına düştüğünde (yani ortam yeterince karardığında) lambayı yakarız. Bu değeri, kendi ortamınıza göre deneyerek ayarlayabilirsiniz.
- void setup() { ... }: pinMode() ile LED'i çıkış, LDR'yi giriş olarak tanımladık.
- void loop() { ... }:ldrValue = analogRead(ldrPin);: Bu komut, LDR'den gelen analog sinyali 0 ile 1023 arasında bir sayıya çevirir. Ortam karanlık olduğunda bu değer düşer, aydınlık olduğunda ise yükselir.if (ldrValue < threshold) { ... }: İşte akıllı karar mekanizması! Eğer okunan ldrValue, belirlediğimiz threshold değerinden küçükse (yani karanlıksa), LED'i yakar.else { ... }: Eğer if koşulu sağlanmazsa (yani ortam aydınlıksa), LED'i söndürür.
- ldrValue = analogRead(ldrPin);: Bu komut, LDR'den gelen analog sinyali 0 ile 1023 arasında bir sayıya çevirir. Ortam karanlık olduğunda bu değer düşer, aydınlık olduğunda ise yükselir.
- if (ldrValue < threshold) { ... }: İşte akıllı karar mekanizması! Eğer okunan ldrValue, belirlediğimiz threshold değerinden küçükse (yani karanlıksa), LED'i yakar.
- else { ... }: Eğer if koşulu sağlanmazsa (yani ortam aydınlıksa), LED'i söndürür.
Kodu Yükleme
- Arduino'nuzu bilgisayarınıza bağlayın ve Arduino IDE'deki Araçlar > Kart > Arduino Uno ve Araçlar > Port ayarlarını doğru şekilde yapın.
- Kodu derlemek ve yüklemek için "Yükle" düğmesine tıklayın.
- Kod yüklendikten sonra Seri Monitörü açarak LDR'den gelen anlık değerleri görebilir ve eşik değerinizi ayarlayabilirsiniz.
Şimdi elinizle LDR'nin üzerini kapatarak ortamı karartın. LED'in hemen yandığını göreceksiniz. Elinizi çektiğinizde ise LED sönecektir. Tebrikler, akıllı lambanız hazır!
Bu proje, sensör verisiyle programlamayı birleştirerek daha karmaşık ve interaktif sistemler oluşturmanın kapısını aralıyor. Artık ortamdaki ışık, sıcaklık, nem gibi verileri okuyarak bunlara göre hareket eden projeler tasarlayabilirsiniz.