Bu senaryoda:
LDR: Hava karardığında (ışık azaldığında) LCD’de “Iyi Geceler” yazacak.
PIR: Hareket algıladığında Servo motoru (kapıyı) 90 derece açacak ve LCD’de “HOSGELDINIZ” yazacak.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
// Tanımlamalar
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo kapıServosu;
int pirPin = 2; // Dijital Pin
int ldrPin = A0; // Analog Pin
int hareketDurumu = 0;
int isikDegeri = 0;
void setup() {
lcd.init(); // LCD'yi başlat
lcd.backlight(); // Arka ışığı aç
kapıServosu.attach(9); // Servoyu 9. pine bağla
pinMode(pirPin, INPUT); // PIR giriş olarak ayarlandı
kapıServosu.write(0); // Başlangıçta kapı kapalı (0 derece)
}
void loop() {
hareketDurumu = digitalRead(pirPin);
isikDegeri = analogRead(ldrPin);
lcd.clear(); // Ekranı her döngüde temizle (veya değişim olduğunda)
// 1. Durum: Hareket Algılanması
if (hareketDurumu == HIGH) {
kapıServosu.write(90); // Kapıyı aç
lcd.setCursor(0, 0);
lcd.print("HOSGELDINIZ");
delay(2000); // 2 saniye bekle
} else {
kapıServosu.write(0); // Kapıyı kapat
}
// 2. Durum: Işık Seviyesi Kontrolü (LDR)
lcd.setCursor(0, 1);
if (isikDegeri < 400) { // Eşik değeri (karanlık)
lcd.print("Gece Modu: ACIK");
} else {
lcd.print("Gunduz Modu");
}
delay(500); // Sensör okuması için kısa bekleme
}
LDR Değeri: “LDR 500’den küçükse” gibi bir şart varsa, if (isikDegeri < 500) kısmını ona göre güncellemelisin.
LCD Adresi: Eğer kod çalışmazsa sınıftaki LCD'nin adresi 0x27 yerine 0x3F olabilir.
Servo Kütüphanesi: kod yazarken #include
I2C Pinleri: LCD’nin SDA ve SCL pinlerini Arduino’da doğru yerlere (genelde A4 ve A5) takman gerektiğini hatırla.
Bilişim Teknolojileri Kaynak Site