#define BLYNK_TEMPLATE_ID "TMPL6QsZjKbAm"
#define BLYNK_TEMPLATE_NAME "Proyek Kontrol Led"
#define BLYNK_AUTH_TOKEN "KH2xFPLzHcmM30a3wG5eig0nGBJZeRy6"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = ""; //password hotspot yang digunakan
const int buttonPin = 12; // Pin tombol push button
const int ledPin = 4; // Pin LED
bool ledState = false; // Menyimpan status LED, false = mati, true = menyala
bool lastButtonState = LOW; // Menyimpan status terakhir tombol
unsigned long lastDebounceTime = 0; // Waktu terakhir terjadi perubahan pada tombol
unsigned long debounceDelay = 50; // Debounce time untuk menghindari multiple toggles
BLYNK_WRITE(V0)
{
// Mengendalikan LED dari aplikasi Blynk
int pinValue = param.asInt();
ledState = (pinValue == 1);
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
void setup()
{
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // Tombol push button dengan pull-up internal
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
// Membaca status tombol
int reading = digitalRead(buttonPin);
// Jika ada perubahan status pada tombol (debounce)
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
// Jika perubahan status tombol sudah stabil untuk debounceDelay waktu
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading == LOW) {
ledState = !ledState; // Toggle status LED
digitalWrite(ledPin, ledState ? HIGH : LOW);
}
}
// Menyimpan status tombol terakhir
lastButtonState = reading;
}