#define LED_PIN 2
#define BUTTON_PIN 4
bool ledState = false;
bool lastButtonState = HIGH;
unsigned long pressTime = 0;
bool longPressActive = false;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
bool buttonState = digitalRead(BUTTON_PIN);
// Jika tombol baru ditekan (HIGH -> LOW)
if (lastButtonState == HIGH && buttonState == LOW) {
pressTime = millis();
longPressActive = false;
delay(50); // debounce
}
// Jika tombol sedang ditahan
if (buttonState == LOW) {
// Jika sudah ditahan lebih dari 500ms, aktifkan mode blink
if (millis() - pressTime > 500) {
longPressActive = true;
digitalWrite(LED_PIN, HIGH);
delay(200);
digitalWrite(LED_PIN, LOW);
delay(200);
}
}
// Jika tombol baru dilepas (LOW -> HIGH)
if (lastButtonState == LOW && buttonState == HIGH) {
delay(50); // debounce
// Jika bukan long press, berarti short press → toggle
if (!longPressActive) {
ledState = !ledState;
}
// Balikkan LED ke status toggle
digitalWrite(LED_PIN, ledState);
}
lastButtonState = buttonState;
}