#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int kipasPin = 9; // Pin untuk Kipas
const int ledPin = 10; // Pin untuk LED
const int batasSuhuLambat = 30; // Batas suhu kipas berputar lambat
void setup() {
Serial.begin(115200);
Serial.println("Mengatur kecepatan kipas dengan sensor temperatur");
lcd.begin(16, 2);
dht.begin();
pinMode(kipasPin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
float t = dht.readTemperature(); // Temperatur
float h = dht.readHumidity(); // Kelembapan
delay(500);
if (t < batasSuhuLambat && h < 50 && h >= 30) {
digitalWrite(kipasPin, HIGH);
statusKipas("Cepat");
digitalWrite(ledPin, LOW);
} else if (t < batasSuhuLambat && h >= 50) {
digitalWrite(kipasPin, HIGH);
statusKipas("Lambat");
digitalWrite(ledPin, LOW);
} else if (t >= batasSuhuLambat && h < 50 && h >= 30) {
digitalWrite(kipasPin, HIGH);
statusKipas("Cepat");
digitalWrite(ledPin, LOW);
} else if (t >= batasSuhuLambat && h >= 50) {
digitalWrite(kipasPin, HIGH);
statusKipas("Cepat");
digitalWrite(ledPin, LOW);
} else {
digitalWrite(kipasPin, LOW);
statusKipas("Off");
digitalWrite(ledPin, HIGH);
}
// Tampilan di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu=");
lcd.print(t);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Kelembapan=");
lcd.print(h);
lcd.print("% Kipas=");
lcd.print(statusKipas(""));
// Tampilan di serial monitor
Serial.println("Suhu = ");
Serial.print(t);
Serial.println(" C");
Serial.println("Kelembaban = ");
Serial.print(h);
Serial.println(" %");
}
String statusKipas(String status) {
static String kecepatan = "Off";
if (status != "") {
kecepatan = status;
}
return kecepatan;
}