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