#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Inisialisasi LCD I2C dengan alamat 0x27 dan ukuran 16x2
OneWire oneWire(10); // Pin data sensor suhu DS18B20
DallasTemperature sensors(&oneWire);
const int ledPin1 = 8; // Pin untuk LED 1
const int ledPin2 = 9; // Pin untuk LED 2
const int buttonPin1 = 7; // Pin untuk push button 1
const int buttonPin2 = 6; // Pin untuk push button 2
bool systemActive = true; // Status awal sistem aktif
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Aktifkan backlight LCD
sensors.begin(); // Mulai sensor suhu DS18B20
}
void loop() {
int buttonState1 = digitalRead(buttonPin1); // Baca status push button 1
int buttonState2 = digitalRead(buttonPin2); // Baca status push button 2
if (buttonState1 == LOW) { // Jika push button 1 ditekan sekali
systemActive = false; // Ubah status sistem aktif/non-aktif
lcd.setCursor(0, 1);
lcd.print("Tidak Aktif "); // Tampilkan pesan "Sistem Aktif"
digitalWrite(ledPin1, LOW); // Matikan LED 1
digitalWrite(ledPin2, LOW); // Matikan LED 2
delay(300); // Tunda untuk menghindari bounce pada push button
}
if (buttonState2 == LOW) { // Jika push button 2 ditekan sekali
systemActive = true; // Aktifkan kembali sistem
lcd.setCursor(0, 1); // Set posisi kursor LCD baris ke-2
lcd.print("Sistem Aktif "); // Tampilkan pesan "Sistem Aktif"
delay(300); // Tunda untuk menghindari bounce pada push button
}
if (systemActive) { // Jika sistem aktif
sensors.requestTemperatures(); // Minta pembacaan suhu
float temperatureC = sensors.getTempCByIndex(0); // Baca suhu dalam derajat Celsius
lcd.setCursor(0, 0); // Set posisi kursor LCD baris ke-1
lcd.print("Suhu: "); // Tampilkan teks "Suhu: "
lcd.print(temperatureC); // Tampilkan nilai suhu
if (temperatureC < 50) {
// Jika suhu kurang dari 50 derajat Celsius, matikan semua lampu
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
} else if (temperatureC <= 100) {
// Jika suhu kurang dari atau sama dengan 100 derajat Celsius, nyalakan LED 1 dan matikan LED 2
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
} else {
// Jika suhu lebih dari 100 derajat Celsius, nyalakan semua lampu
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
}
}
delay(100); // Tunda selama 1 detik
}