#define BLYNK_TEMPLATE_ID "TMPL6ZAG02pzM"
#define BLYNK_TEMPLATE_NAME "tugas mentoring"
#define BLYNK_AUTH_TOKEN "ww3dtyHZh1VW2gUQyIsJ8jCcYIraoCB_"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define BLYNK_DYNAMIC
#include <Blynk/BlynkApi.h>
#define DHTPIN 15
#define TRIG_PIN 25
#define ECHO_PIN 26
#define BUTTON_PIN 2
#define LED_PIN 18
DHT dht(DHTPIN, DHT22);
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
BLYNK_WRITE(V4) {
int ledState = param.asInt(); // Mendapatkan nilai dari widget Blynk
digitalWrite(LED_PIN, ledState);
}
void sendSensorData() {
float temperature = dht.readTemperature();
Serial.print("Temperature (C): ");
Serial.println(temperature);
float fahrenheit = (temperature * 9 / 5) + 32;
float kelvin = temperature + 273.15;
Blynk.virtualWrite(V0, distanceCM());
Blynk.virtualWrite(V1, temperature);
Blynk.virtualWrite(V2, fahrenheit);
Blynk.virtualWrite(V3, kelvin);
}
void toggleLED() {
if (digitalRead(BUTTON_PIN) == HIGH) {
int currentLEDState = !digitalRead(LED_PIN);
digitalWrite(LED_PIN, currentLEDState);
Blynk.virtualWrite(V4, currentLEDState);
}
}
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUTTON_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
Blynk.begin(auth, ssid, pass);
dht.begin();
timer.setInterval(2000L, sendSensorData);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), toggleLED, RISING);
}
void loop() {
Blynk.run();
timer.run();
}
float distanceCM() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = (duration * 0.0343) / 2;
return distance;
}