#include <LiquidCrystal.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define LED 1
#define RED_PIN 2
#define GREEN_PIN 3
#define BLUE_PIN 4
#define BUZZER_PIN1 6
#define BUZZER_PIN2 5
#define DHT_PIN 7
#define DHT_TYPE DHT22
#define DS18B20_PIN 27
DHT dht(DHT_PIN, DHT_TYPE);
OneWire oneWire(DS18B20_PIN);
DallasTemperature sensors(&oneWire);
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
bool isLedOn = false;
void setup() {
lcd.begin(16, 2);
lcd.print("HELLO!");
pinMode(LED, OUTPUT);
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(BUZZER_PIN1, OUTPUT);
pinMode(BUZZER_PIN2, OUTPUT);
dht.begin();
sensors.begin();
}
void playTone(int frequency, int duration) {
tone(BUZZER_PIN1, frequency, duration);
tone(BUZZER_PIN2, frequency, duration);
delay(duration);
}
void loop() {
// Membaca suhu dari sensor DHT22
float temperatureDHT = dht.readTemperature();
// Membaca suhu dari sensor DS18B20
sensors.requestTemperatures();
float temperatureDS18B20 = sensors.getTempCByIndex(0);
if (temperatureDHT > 30.0 || temperatureDS18B20 > 30.0) {
if (!isLedOn) {
// Menyalakan LED merah
digitalWrite(RED_PIN, HIGH); // Merah ON
digitalWrite(GREEN_PIN, LOW); // Hijau OFF
digitalWrite(BLUE_PIN, LOW); // Biru OFF
playTone(1000, 1000); // Buzzer berbunyi
lcd.setCursor(0, 0);
lcd.print("Red ");
lcd.setCursor(0, 1);
lcd.print("LED ON");
isLedOn = true;
}
} else {
// Mematikan LED merah dan buzzer
digitalWrite(RED_PIN, LOW); // Merah OFF
noTone(BUZZER_PIN1);
noTone(BUZZER_PIN2);
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("LED OFF");
isLedOn = false;
}
delay(5000);
}