#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#define buzz 11
#define ledred1 8
#define ledgreen 9
#define ledblue 10
#define suhu 2
LiquidCrystal_I2C layar(0x27, 20, 4);
DHT dht(suhu, DHT22);
unsigned long previousmillis = 0;
int count;
int count1;
int count2;
int count3;
int count4;
void setup() {
Serial.begin(9600);
dht.begin();
layar.init();
layar.backlight();
pinMode(ledred1 ,OUTPUT);
pinMode(ledgreen ,OUTPUT);
pinMode(ledblue ,OUTPUT);
pinMode(buzz, OUTPUT);
}
void setcolor(int red, int green, int blue){ // setcolor(0,0,0); akan mematikan led nya
analogWrite(ledred1, red);
analogWrite(ledgreen, green);
analogWrite(ledblue, blue);
}
void loop() {
double lembab = dht.readHumidity();
double suhucek = dht.readTemperature();
if (isnan(lembab) || isnan(suhucek) ) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temp:");
Serial.print(suhucek);
Serial.print(" *C\t");
Serial.print("Humidity: ");
Serial.print(lembab);
Serial.println(" %");
layar.setCursor(0,0);
layar.print("Temp: ");
layar.print(suhucek);
layar.print(" C");
layar.setCursor(0,3);
layar.print("Humidity: ");
layar.print(lembab);
layar.print(" %");
if(suhucek > 45 && count <= 3){
setcolor(255,0,0);
tone(buzz,3000);
delay(500);
noTone(buzz);
delay(1000);
count = count + 1;
}
else if(suhucek >= 30 && suhucek <= 45 && count1 <= 3){
setcolor(252, 148, 3);
tone(buzz, 100);
delay(500);
noTone(buzz);
delay(1000);
count1 = count1 + 1;
}
else if(suhucek <= 30 && suhucek > 25 && count2 <=2){
setcolor(227, 252, 3);
tone(buzz, 100);
delay(500);
noTone(buzz);
delay(1000);
count2 = count2 + 1;
}
else if(suhucek <= 25 && suhucek >= 22){
setcolor(0, 255, 0);
}
else if(suhucek < 20 && suhucek >=10 && count3 <= 3){
setcolor(0,0,255);
tone(buzz,400);
delay(500);
noTone(buzz);
delay(1000);
count3 = count3 + 1;
}
else if(suhucek < 10 && count4 <= 3){
setcolor(3, 248, 252);
tone(buzz,2000);
delay(500);
noTone(buzz);
delay(1000);
count4 = count4 + 1;
}
unsigned long currentmillis = millis();
unsigned long interval = 60000;
Serial.println("-----------");
Serial.println(count4);
Serial.println(millis());
Serial.println(previousmillis);
Serial.println("-----------");
if (count >= 4 || count1 >= 3 || count2 >= 3 || count3 >= 4 || count4 >= 4) {
if(currentmillis - previousmillis >= interval) {
count = 0;
count1 = 0;
count2 = 0;
count3 = 0;
count4 = 0;
previousmillis = currentmillis;
}
}
}