#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 3 // Pin data sensor suhu DS18B20
#define I2C_ADDR 0x27 // Alamat I2C LCD 16x2
#define LED_PIN_RED 2 // Pin LED merah untuk suhu tinggi
#define LED_PIN_GREEN 5 // Pin LED hijau untuk suhu rendah
#define BUZZER_PIN 4 // Pin buzzer
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(I2C_ADDR, 16, 2);
void setup() {
sensors.begin();
pinMode(LED_PIN_RED, OUTPUT);
pinMode(LED_PIN_GREEN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
lcd.init();
lcd.backlight();
lcd.begin(16, 2);
lcd.clear();
}
void loop() {
sensors.requestTemperatures();
float suhu = sensors.getTempCByIndex(0);
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print(" C");
delay(1000);
// Kontrol LED dan buzzer
if (suhu > 30) {
digitalWrite(LED_PIN_RED, HIGH);
digitalWrite(LED_PIN_GREEN, LOW);
tone(BUZZER_PIN, 1000);
} else if (suhu < 30) {
digitalWrite(LED_PIN_RED, LOW);
digitalWrite(LED_PIN_GREEN, HIGH);
tone(BUZZER_PIN, 1000);
} else { // Suhu tepat 30°C
digitalWrite(LED_PIN_RED, LOW);
digitalWrite(LED_PIN_GREEN, LOW);
noTone(BUZZER_PIN);
}
}