#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define DHTPIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(DHTPIN, DHTTYPE);
Servo myservo;
int potpin=0;
int val=0;
const int pinBuzzer = 4;
void setup() {
Serial.begin(115200);
Serial.println(F("DHT22 example!"));
dht.begin();
myservo.attach(9);
pinMode(pinBuzzer, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Check if any reads failed and exit early (to try again).
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
if (temperature>=35){
val = analogRead(potpin);
val = map(val, 45, 45, 45, 45);
myservo.write(val);
delay(15);
digitalWrite(pinBuzzer, HIGH);
delay(200);
digitalWrite(pinBuzzer, LOW);
delay(200);
digitalWrite(pinBuzzer, HIGH);
delay(200);
digitalWrite(pinBuzzer, LOW);
delay(1000);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Suhu: ");
lcd.setCursor(7,0);
lcd.print(temperature);
lcd.setCursor(13,0);
lcd.print("C");
lcd.setCursor(1,1);
lcd.print("BUZZER MENYALA");
}
else{
val = analogRead(potpin);
val = map(val, 0, 0, 0, 0);
myservo.write(val);
delay(15);
digitalWrite(pinBuzzer, LOW);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Suhu: ");
lcd.setCursor(7,0);
lcd.print(temperature);
lcd.setCursor(13,0);
lcd.print("C");
lcd.setCursor(1,1);
lcd.print("BUZZER MATI");
}
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperature);
Serial.println(F("°C "));
// Wait a few seconds between measurements.
delay(2000);
}