#include <LiquidCrystal_I2C.h>
#include "pitches.h"
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
#define SPEAKER_PIN 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
// Deklarasi pin
const int ldrPin1 = A0;
const int ldrPin2 = A1;
const int ledPin3 = 9;
const int ledPin2 = 8;
const int ledPin1 = 7;
const int threshold = 500;
void setup() {
// Inisialisasi pin LED sebagai output
pinMode(ledPin3, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(SPEAKER_PIN, OUTPUT);
lcd.init();
lcd.backlight();
// Inisialisasi komunikasi serial
Serial.begin(9600);
}
void loop() {
// Membaca nilai dari pin LDR
int ldr1Value = analogRead(ldrPin1);
int ldr2Value = analogRead(ldrPin2);
// Mengirim nilai LDR ke Serial Monitor
Serial.print("Nilai LDR1: ");
Serial.println(ldr1Value);
Serial.print("Nilai LDR2: ");
Serial.println(ldr2Value);
// Mengecek apakah nilai LDR lebih rendah dari ambang batas
if ((ldr1Value > threshold) || (ldr2Value > threshold)) {
// Menyalakan LED
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin1, HIGH);
} else {
// Mematikan LED
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin1, LOW);
}
if ((ldr1Value > threshold)) {
lcd.setCursor(1,0);
lcd.print("in1=off");
} else {
lcd.setCursor(1,0);
lcd.print("in1=on ");
}
if ((ldr2Value > threshold)) {
lcd.setCursor(9,0);
lcd.print("in2=off");
} else {
lcd.setCursor(9,0);
lcd.print("in2=on ");
}
if ((ldr1Value < threshold) && (ldr2Value < threshold)) {
lcd.setCursor(3,1);
lcd.print("output=on ");
} else {
lcd.setCursor(3,1);
lcd.print("output=off");
}
if ((ldr1Value < threshold) && (ldr2Value < threshold)) {
tone(SPEAKER_PIN, 50, 200);
delay(500);
} else {
noTone(SPEAKER_PIN);
}
// Tunggu selama 100ms sebelum pembacaan berikutnya
delay(100);
}