#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHT_PIN 2
#define DHT_TYPE 22
#define RED_LED_PIN 8
#define YELLOW_LED_PIN 9
#define GREEN_LED_PIN 10
#define buzzer_PIN 11
DHT dht(2, 22);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
dht.begin();
lcd.init();
lcd.backlight();
pinMode(RED_LED_PIN, OUTPUT);
pinMode(YELLOW_LED_PIN, OUTPUT);
pinMode(GREEN_LED_PIN, OUTPUT);
pinMode(buzzer_PIN, OUTPUT);
noTone(buzzer_PIN);
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
}
void loop() {
delay(2000);
float suhu = dht.readTemperature();
float lembab = dht.readHumidity();
lcd.clear();
lcd.setCursor(1, 0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Lembab: ");
lcd.print(lembab);
lcd.print(" %");
if (isnan(suhu) && (lembab)) {
Serial.println("ERORR");
return;
}
Serial.print("Suhu: ");
Serial.println(suhu);
Serial.print("Lembab: ");
Serial.println(lembab);
if (suhu > 35) {
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, LOW);
for (int i = 0; i < 3; i++) {
tone(buzzer_PIN,1000);
delay(500);
noTone(buzzer_PIN);
delay(500);
}
} else if (suhu >= 30 && suhu <= 35) {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, HIGH);
digitalWrite(GREEN_LED_PIN, LOW);
noTone(buzzer_PIN);
} else {
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(YELLOW_LED_PIN, LOW);
digitalWrite(GREEN_LED_PIN, HIGH);
for (int i = 0; i < 2; i++){
tone(buzzer_PIN,1000);
delay(500);
noTone(buzzer_PIN);
delay(500);
}
}
}