#include "DHTesp.h"
#include <ESP32Servo.h>
#define DHTPIN 32
#define TRIG_PIN 27
#define ECHO_PIN 26
#define SERVO1_PIN 12
#define SERVO2_PIN 14
#define LED_RED_PIN 19
#define LED_GREEN_PIN 18
DHTesp dht;
Servo servo1;
Servo servo2;
float temperature = 0;
float humidity = 0;
float distance = 0;
void setup() {
Serial.begin(115200);
dht.setup(DHTPIN, DHTesp::DHT22);
servo1.attach(SERVO1_PIN);
servo2.attach(SERVO2_PIN);
pinMode(LED_RED_PIN, OUTPUT);
pinMode(LED_GREEN_PIN, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
servo1.write(0);
servo2.write(0);
digitalWrite(LED_RED_PIN, LOW);
digitalWrite(LED_GREEN_PIN, LOW);
Serial.println("Setup selesai. Memulai pembacaan...");
}
void loop() {
TempAndHumidity data = dht.getTempAndHumidity();
temperature = data.temperature;
humidity = data.humidity;
distance = readDistance();
if (distance < 15) {
servo1.write(90);
digitalWrite(LED_GREEN_PIN, HIGH);
} else {
servo1.write(0);
digitalWrite(LED_GREEN_PIN, LOW);
}
if (temperature > 30) {
servo2.write(90);
digitalWrite(LED_RED_PIN, HIGH);
} else {
servo2.write(0);
digitalWrite(LED_RED_PIN, LOW);
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print("°C | Humidity: ");
Serial.print(humidity);
Serial.print("% | Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000);
}
float readDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000);
if (duration == 0) {
return -1;
}
float distance = duration * 0.034 / 2;
return distance;
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4