Alat dan Bahan:
-
- Arduino Uno
- Sensor PIR (Passive Infrared)
- LCD 16×2 dengan I2C
- Relay
- Lampu (dihubungkan dengan relay)
- Kabel jumper
- Skema Koneksi:
- Sensor PIR:
- VCC → 5V Arduino
- GND → GND Arduino
- OUT → Pin 7 Arduino
- Relay:
- VCC → 5V Arduino
- GND → GND Arduino
- IN → Pin 8 Arduino
- LCD (I2C):
- SDA → Pin A4 Arduino
- SCL → Pin A5 Arduino
- VCC → 5V Arduino
- GND → GND Arduino
Script Code :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD 16x2 dengan alamat I2C 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);
int pirPin = 7; // Pin untuk sensor PIR
int relayPin = 8; // Pin untuk relay
int pirState = LOW; // Variabel untuk menyimpan status sensor PIR
void setup() {
// Inisialisasi pin
pinMode(pirPin, INPUT);
pinMode(relayPin, OUTPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Menampilkan pesan awal di LCD
lcd.setCursor(0, 0);
lcd.print("Lampu Pintar");
lcd.setCursor(0, 1);
lcd.print("Sabar Dulu");
delay(3000);
lcd.clear();
}
void loop() {
int pirVal = digitalRead(pirPin); // Membaca input dari sensor PIR
if (pirVal == HIGH) {
if (pirState == LOW) {
// Jika ada gerakan terdeteksi, nyalakan lampu
digitalWrite(relayPin, HIGH);
// Tampilkan status di LCD
lcd.setCursor(0, 0);
lcd.print("Lampu: ON ");
lcd.setCursor(0, 1);
lcd.print("Gerakan terdeteksi");
pirState = HIGH; // Update status PIR
}
} else {
if (pirState == HIGH) {
// Jika tidak ada gerakan, matikan lampu
digitalWrite(relayPin, LOW);
// Tampilkan status di LCD
lcd.setCursor(0, 0);
lcd.print("Lampu: OFF ");
lcd.setCursor(0, 1);
lcd.print("Tidak ada gerakan");
pirState = LOW; // Update status PIR
}
}
delay(4000); // Memberikan jeda untuk sensor
}