#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL67HaZoJOU"
#define BLYNK_TEMPLATE_NAME "SMART HOME"
#define BLYNK_AUTH_TOKEN "XNR15FuUhTxHMgxkSN7tF5eVapO-OsVi"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHTesp.h"
char auth[] = "XNR15FuUhTxHMgxkSN7tF5eVapO-OsVi"; // Token Blynk
const int lamp1Pin = D4; // Pin untuk lampu 1
const int lamp2Pin = D2; // Pin untuk lampu 2
const int fanPin = D3; // Pin untuk kipas
const int trigPin = D12; // Pin untuk trigger sensor ultrasonik
const int echoPin = D13; // Pin untuk echo sensor ultrasonik
const int buzzerPin = D5; // Pin untuk buzzer
const int servoPin = D19; // Pin untuk servo
const int relay1Pin = D8; // Pin untuk relay 1
const int relay2Pin = D0; // Pin untuk relay 2
const int relay3Pin = D9; // Pin untuk relay 3
const int relay4Pin = D10; // Pin untuk relay 4
const int potPin = A0; // Pin untuk potensiometer
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void setup() {
Blynk.begin(auth, "", "YourPassword");
pinMode(lamp1Pin, OUTPUT);
pinMode(lamp2Pin, OUTPUT);
pinMode(fanPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(servoPin, OUTPUT);
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(relay3Pin, OUTPUT);
pinMode(relay4Pin, OUTPUT);
}
void loop() {
Blynk.run();
// Logika untuk sensor ultrasonik
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration * 0.034) / 2; // Menghitung jarak dalam cm
// Mengatur buzzer berdasarkan jarak
if (distance < 10) { // Jika jarak kurang dari 10 cm
digitalWrite(buzzerPin, HIGH); // Aktifkan buzzer
} else {
digitalWrite(buzzerPin, LOW); // Matikan buzzer
}
// Membaca nilai potensiometer untuk mengatur kecerahan lampu
int potValue = analogRead(potPin);
int brightness = map(potValue, 0, 1023, 0, 255); // Mengubah nilai potensiometer menjadi nilai kecerahan
analogWrite(lamp1Pin, brightness); // Mengatur kecerahan lampu 1
analogWrite(lamp2Pin, brightness); // Mengatur kecerahan lampu 2
}
BLYNK_WRITE(V0) { // Kontrol lampu 1
int value = param.asInt();
digitalWrite(lamp1Pin, value);
}
BLYNK_WRITE(V1) { // Kontrol lampu 2
int value = param.asInt();
digitalWrite(lamp2Pin, value);
}
BLYNK_WRITE(V2) { // Kontrol kipas
int value = param.asInt();
digitalWrite(fanPin, value);
}
BLYNK_WRITE(V3) { // Kontrol relay 1
int value = param.asInt();
digitalWrite(relay1Pin, value);
}
BLYNK_WRITE(V4) { // Kontrol relay 2
int value = param.asInt();
digitalWrite(relay2Pin, value);
}
BLYNK_WRITE(V5) { // Kontrol relay 3
int value = param.asInt();
digitalWrite(relay3Pin, value);
}
BLYNK_WRITE(V6) { // Kontrol relay 4
int value = param.asInt();
digitalWrite(relay4Pin, value);
}
BLYNK_WRITE(V7) { // Kontrol servo
int angle = param.asInt();
// Logika untuk menggerakkan servo
}
void loop()
{
Blynk.run();
timer.run();
}