/**
  Arduino Watchdog Timer example. 

  The code resets the watchdog timer every time you press the button.
  If you haven't pressed the button for 4 seconds, the watchdog will
  time out and reset your CPU.

  https://wokwi.com/arduino/projects/309372800631571009

  Copyright (C) 2021 Uri Shaked.
*/

#include <avr/wdt.h>

#define BTN_PIN 2
void setup() {
  Serial.begin(115200);
  if (bitRead(MCUSR, WDRF)) {
    Serial.println("System was reset due to watchdog timeout! bark!");
    Serial.println();
  }
  Serial.println("You must press the button every 4 seconds (or less). Or else.");

  wdt_enable(WDTO_4S);
  pinMode(BTN_PIN, INPUT_PULLUP);
}

void loop() {
  while (digitalRead(BTN_PIN) == HIGH);
  Serial.print("Watchdog reset @ millis ");
  Serial.println(millis());
  wdt_reset();
  delay(100);
}