#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int cahaya = A0;
int led = 13;
int gerak = 3;
int buzzer = 8;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.backlight();
Serial.begin(9600);
pinMode(cahaya, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(gerak, INPUT);
Serial.println("UAP PRAKTIKUM EMBEDDED SYSTEM");
Serial.println("LAB TEKNIK DIGITAL");
lcd.init();
int positionCounter;
lcd.setCursor(2, 0);
lcd.print("UAP PRAKTIKUM EMBEDDED SYSTEM");
lcd.setCursor(2, 1);
lcd.print("LAB TEKNIK DIGITAL");
for (positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
delay(400);
}
lcd.clear();
}
void loop() {
int cahayaValue = analogRead(cahaya);
int gerakValue = digitalRead(gerak); // Mengaktifkan gerakan (misalnya, relay atau LED)
Serial.print("Cahaya: ");
Serial.println(cahayaValue);
if ((cahayaValue > 600) && (gerakValue == HIGH)) {
lcd.setCursor(1, 0);
lcd.print("Malam tiba dan gerakan terdeteksi");
Serial.println("Gerakan terdeteksi");
digitalWrite(led, HIGH); // Mengaktifkan LED jika cahaya cukup tinggi
tone(buzzer, 1000);
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
delay(400);
}
lcd.clear();
} else {
lcd.print("Bukan malam hari");
Serial.println("Gerakan tidak terdeteksi");
digitalWrite(led, LOW); // Mematikan LED jika cahaya rendah
noTone(buzzer);
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
delay(400);
}
lcd.clear();
}
lcd.setCursor(1, 0);
lcd.print("Cahaya: ");
lcd.print(cahayaValue);
lcd.setCursor(1, 1);
lcd.print("Gerakan: ");
lcd.print(gerakValue); // Menampilkan status gerakan
delay(1000);
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
lcd.scrollDisplayLeft();
delay(300);
}
lcd.clear();
}