#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3 // Pin data untuk sensor suhu DS18B20
#define I2C_ADDR 0x27 // Alamat I2C dari LCD 16x2
#define LED_PIN 2 // Pin untuk LED
#define BUZZER_PIN 4 // Pin untuk buzzer
OneWire oneWire(ONE_WIRE_BUS); // Inisialisasi OneWire dengan pin data untuk DS18B20
DallasTemperature sensors(&oneWire); // Inisialisasi DallasTemperature dengan OneWire
LiquidCrystal_I2C lcd(I2C_ADDR, 16, 2); // Inisialisasi LCD dengan alamat I2C dan ukuran 16x2
void setup() {
sensors.begin(); // Memulai komunikasi dengan sensor DS18B20
pinMode(LED_PIN, OUTPUT); // Mengatur pin LED sebagai output
pinMode(BUZZER_PIN, OUTPUT); // Mengatur pin buzzer sebagai output
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
lcd.begin(16, 2); // Set LCD dengan ukuran 16 kolom dan 2 baris
lcd.clear(); // Bersihkan layar LCD
}
void loop() {
sensors.requestTemperatures(); // Meminta sensor untuk membaca suhu terbaru
float suhu = sensors.getTempCByIndex(0); // Mendapatkan suhu dalam Celcius dari sensor
lcd.setCursor(0, 0); // Set posisi kursor LCD ke kolom 0, baris 0
lcd.print("Suhu Air: "); // Menampilkan teks "Suhu Air: "
lcd.print(suhu); // Menampilkan nilai suhu
lcd.print(" C"); // Menampilkan satuan Celsius
delay(1000); // Delay selama 1 detik
// Kontrol LED dan buzzer berdasarkan nilai suhu
if (suhu > 40) {
digitalWrite(LED_PIN, HIGH); // Nyalakan LED jika suhu lebih dari 40 derajat Celsius
tone(BUZZER_PIN, 1000); // Bunyikan buzzer
} else {
digitalWrite(LED_PIN, LOW); // Matikan LED jika suhu 40 derajat Celsius atau kurang
noTone(BUZZER_PIN); // Matikan buzzer
}
}