#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#define DHTPIN 2 // Pin tempat sensor DHT22 terhubung
#define DHTTYPE DHT22 // Tipe sensor DHT yang digunakan
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD 16x2
#define SERVO_PIN 9 // Pin tempat servo terhubung
#define SERVO_POS_INITIAL 0 // Posisi awal servo
#define SERVO_POS_LOW 0 // Posisi servo saat suhu di bawah 400
#define SERVO_POS_MEDIUM 90 // Posisi servo saat suhu di antara 400 dan 700
#define SERVO_POS_HIGH 180 // Posisi servo saat suhu di atas 700
void setup() {
lcd.begin(16, 2);
dht.begin();
pinMode(SERVO_PIN, OUTPUT);
moveServo(SERVO_POS_INITIAL);
}
void loop() {
float suhu = dht.readTemperature();
float kelembapan = dht.readHumidity();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Kelembapan: ");
lcd.print(kelembapan);
lcd.print(" %");
if (suhu > 40) {
moveServo(SERVO_POS_HIGH);
} else if (suhu > 70) {
moveServo(SERVO_POS_MEDIUM);
} else {
moveServo(SERVO_POS_LOW);
}
delay(2000); // Tunggu 2 detik sebelum mengambil data lagi
}
void moveServo(int pos) {
analogWrite(SERVO_PIN, pos);
delay(500); // Tunggu 0.5 detik untuk servo mencapai posisi yang diinginkan
}