#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "RGB.h"
#define DHTPIN 11
#define pinRed 3
#define pinGreen 5
#define pinBlue 6
#define pinBuzzer 9
#define buttonPin 4
DHT dht(DHTPIN, DHT22);
LiquidCrystal_I2C lcd(0x27,16,2);
float kelembaban, suhu;
int value, lastState = HIGH;
int klik = 1;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
dht.begin();
pinMode(pinBuzzer, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
kelembaban = dht.readHumidity();
BacaSuhu();
delay(3);
tampilLCD();
indikatorSuhu();
}
void tampilLCD(){
lcd.setCursor(0,0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print(" C");
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Lembab: ");
lcd.print(kelembaban);
lcd.print(" %");
lcd.print(" ");
delay(200);
}
void indikatorSuhu(){
noTone(pinBuzzer);
if(suhu <= 13){
ledRGB(pinRed, pinGreen, pinBlue, 0, 0, 255);
} else if(suhu > 13 && suhu < 35){
ledRGB(pinRed, pinGreen, pinBlue, 0, 255, 0);
} else if (suhu >=35){
ledRGB(pinRed, pinGreen, pinBlue, 255, 0, 0);
tone(pinBuzzer, 1500);
}
}
void BacaSuhu(){
if (digitalRead((buttonPin)) == LOW) {
Serial.print("klik ke-");
Serial.print(klik);
Serial.println();
if (klik == 1){
// ketika klik ke-1 suhu diubah jadi 24
suhu = 24.0;
}
if (klik == 2) {
// ketika klik ke-2 suhu diubah jadi 38
suhu = 38.0;
}
if (klik == 3) {
// ketika klik ke-3 subu diubah
// nilai suhu diambil dari DHT22
suhu = dht.readTemperature();
klik = 0;
}
klik += 1;
}
}