#include <LiquidCrystal.h>
// Inisialisasi LCD tanpa I2C, hubungkan pin sesuai urutan RS, EN, D4, D5, D6, D7
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int sensorPin = A0; // Pin untuk sensor LM35
int relayPin = 8; // Pin untuk relay (mengontrol ac)
float suhu; // Variabel untuk menyimpan suhu
float ambangBatas = 30.0; // Ambang batas suhu (30 derajat Celcius)
void setup() {
pinMode(relayPin, OUTPUT); // Relay sebagai output
digitalWrite(relayPin, LOW); // Awal relay (ac mati)
lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2
Serial.begin(9600); // Memulai komunikasi serial
lcd.setCursor(0, 0); // Menampilkan pesan awal di LCD
lcd.print("ac Otomatis");
lcd.setCursor(0, 1);
lcd.print("Monitoring Suhu");
delay(2000);
lcd.clear(); // Bersihkan layar setelah pesan awal
}
void loop() {
// Membaca nilai analog dari sensor LM35
int nilaiAnalog = analogRead(sensorPin);
// Konversi nilai analog menjadi suhu dalam Celcius
suhu = (nilaiAnalog * 5.0 * 100.0) / 1024.0;
// Menampilkan suhu pada Serial Monitor
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.println(" C");
// Menampilkan suhu pada LCD
lcd.setCursor(0, 0); // Baris pertama LCD
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print(" C "); // Pastikan teks lama terhapus dengan menambahkan spasi
// Logika pengontrolan ac berdasarkan suhu
if (suhu > ambangBatas) {
digitalWrite(relayPin, HIGH); // Nyalakan relay (ac menyala)
lcd.setCursor(0, 1); // Baris kedua LCD
lcd.print("ac: Menyala");
Serial.println("ac Menyala");
} else {
digitalWrite(relayPin, LOW); // Matikan relay (ac mati)
lcd.setCursor(0, 1); // Baris kedua LCD
lcd.print("ac: Mati ");
Serial.println("ac Mati");
}
delay(1000); // Tunda 1 detik sebelum pembaruan berikutnya
}