#define BLYNK_TEMPLATE_ID "TMPL6BT5vplIA"
#define BLYNK_TEMPLATE_NAME "TUGAS IOT"
#define BLYNK_AUTH_TOKEN "qz7GjiGy1p6ITyBSuhpDuusR-_0asfvP"
#include <DHT.h>
#include <ESP32Servo.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
#define AUTH BLYNK_AUTH_TOKEN
#define WIFI_AP "Wokwi-GUEST"
#define WIFI_PASS ""
#define DHTPIN 27
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Pins
#define LDRPIN 34
#define BUZZERPIN 16
#define SERVOPIN 19
Servo servo1;
int ldrValue;
const byte buzzer = BUZZERPIN;
BlynkTimer timer;
void setup() {
Serial.begin(9600);
servo1.attach(SERVOPIN);
pinMode(LDRPIN, INPUT);
pinMode(buzzer, OUTPUT);
Blynk.begin(AUTH, WIFI_AP, WIFI_PASS);
dht.begin();
timer.setInterval(2000L, DataSensor);
}
BLYNK_WRITE(V0) {
int gerak = param.asInt();
servo1.write(gerak);
}
void DataSensor() {
// Baca dan kirim data suhu dan kelembapan
float suhu = dht.readTemperature();
float lembap = dht.readHumidity();
if (!isnan(suhu) && !isnan(lembap)) {
Blynk.virtualWrite(V1, suhu);
Blynk.virtualWrite(V2, lembap);
}
// Baca dan kirim data LDR
ldrValue = analogRead(LDRPIN);
Blynk.virtualWrite(V3, ldrValue);
Buzzer();
}
void Buzzer() {
if (ldrValue < 100) {
digitalWrite(buzzer, HIGH);
tone(buzzer, 1000);
} else {
digitalWrite(buzzer, LOW);
noTone(buzzer);
}
}
void loop() {
Blynk.run();
timer.run();
}