const int led1 = 1; // Output-1 (berkedip)
const int led2 = 2; // Output-2 (aktif saat button-1 ditekan)
const int button1 = 6; // Input-1 (aktifkan LED2)
const int button2 = 7; // Input-2 (freeze sistem)
bool led1State = false;
unsigned long prevBlinkTime = 0;
const unsigned long interval = 1000;
bool freeze = false;
unsigned long freezeStart = 0;
unsigned long button1PressTime = 0;
bool button1Pressed = false;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
Serial.begin(115200);
}
void loop() {
// Cek apakah sedang freeze (button-2 ditekan)
if (digitalRead(button2) == LOW) {
if (!freeze) {
freeze = true;
freezeStart = millis();
Serial.println("System FREEZE");
}
return; // Semua proses dihentikan sementara
} else if (freeze) {
// Jika sebelumnya freeze dan sekarang tidak
freeze = false;
unsigned long freezeDuration = millis() - freezeStart;
Serial.print("System RESUMED after ");
Serial.print(freezeDuration);
Serial.println(" ms");
}
unsigned long currentMillis = millis();
// === Kedip LED-1 (Output-1) ===
if (currentMillis - prevBlinkTime >= interval) {
led1State = !led1State;
digitalWrite(led1, led1State);
prevBlinkTime = currentMillis;
Serial.print("LED-1 ");
Serial.print(led1State ? "ON" : "OFF");
Serial.print(" at ");
Serial.print(currentMillis);
Serial.println(" ms");
}
// === Button-1 ditekan untuk aktifkan LED-2 ===
if (digitalRead(button1) == LOW) {
if (!button1Pressed) {
button1Pressed = true;
button1PressTime = millis();
digitalWrite(led2, HIGH);
}
} else {
if (button1Pressed) {
unsigned long pressedDuration = millis() - button1PressTime;
digitalWrite(led2, LOW);
Serial.print("Button-1 was pressed for ");
Serial.print(pressedDuration);
Serial.println(" ms");
button1Pressed = false;
}
}
}
Loading
esp32-s2-devkitm-1
esp32-s2-devkitm-1