#define BLYNK_TEMPLATE_ID "TMPL66tob5-9t"
#define BLYNK_TEMPLATE_NAME "UJIAN SAS IOT ADYARAKA NURFALAH R"
#define BLYNK_AUTH_TOKEN "cyU-gsBxUie9WSp5HsYLPScwJ29kcQj5"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 21
#define DHTTYPE 22
DHT dht(DHTPIN, DHTTYPE);
const int LED1 = 12;
const int LED2 = 13;
const int LED3 = 14;
const int LED4 = 27;
int pinValueV0 = 0; // To store the state for V0
int pinValueV1 = 0; // To store the state for V1
void setup() {
Serial.begin(115200);
delay(100);
Blynk.begin(auth, ssid, pass);
dht.begin();
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
}
void loop() {
Blynk.run();
SensorDHT();
controlLEDs();
}
// Read temperature from DHT sensor
void SensorDHT() {
float suhu = dht.readTemperature();
if (isnan(suhu)) {
Serial.println("Gagal membaca sensor DHT");
return;
}
Blynk.virtualWrite(V4, suhu); // Send temperature data to Blynk app
}
// Control LEDs based on V0 and V1 state
void controlLEDs() {
if (pinValueV0 == 1) { // If V0 is active
// Blink LED 1 and LED 2 alternatively
digitalWrite(LED1, HIGH);
Serial.println("LED 1 menyala");
delay(1000);
digitalWrite(LED2, LOW);
Serial.println("LED 2 mati");
delay(1000);
digitalWrite(LED1, LOW);
Serial.println("LED 1 mati");
delay(1000);
digitalWrite(LED2, HIGH);
Serial.println("LED 2 menyala");
delay(1000);
} else { // If V0 is not active
digitalWrite(LED1, LOW);
Serial.println("LED 1 mati");
digitalWrite(LED2, LOW);
Serial.println("LED 2 mati");
}
if (pinValueV1 == 1) { // If V1 is active
// Turn on LED 3 and LED 4
digitalWrite(LED3, HIGH);
Serial.println("LED 3 menyala");
digitalWrite(LED4, HIGH);
Serial.println("LED 4 menyala");
} else { // If V1 is not active
digitalWrite(LED3, LOW);
Serial.println("LED 3 mati");
digitalWrite(LED4, LOW);
Serial.println("LED 4 mati");
}
}
// Update pin value for V0
BLYNK_WRITE(V0) {
pinValueV0 = param.asInt(); // Update pinValueV0 with the state of V0
}
// Update pin value for V1
BLYNK_WRITE(V1) {
pinValueV1 = param.asInt(); // Update pinValueV1 with the state of V1
}