This is what an Arduino program would look like:
#define TOUCHBAR_PIN 5
#define ALARM_PIN 6
#define RESET_PIN 7
// TIMER LIMIT is in milliseconds, 5000 = 5 seconds
#define TIMER_LIMIT 5000
// 0 = timer not started, 1 = timer started, 2 = timer reached limit
int state;
unsigned long touch_time; // when the touch bar was last touched
void setup() {
pinMode(TOUCHBAR_PIN, INPUT); // input from touchbar
pinMode(ALARM_PIN, OUTPUT); // connected to gate of MOSFET, activates alarm when set to 1
pinMode(RESET_PIN, INPUT); // input from reset button
digitalWrite(ALARM_PIN, 0);
state = 0;
}
void loop() {
if (state == 0) {
if (digitalRead(TOUCHBAR_PIN)) {
digitalWrite(ALARM_PIN, 1);
touch_time = millis();
state = 1;
} else {
digitalWrite(ALARM_PIN, 0);
}
} else if (state == 1) {
if (digitalRead(TOUCHBAR_PIN)) {
unsigned long elapsed = millis() - touch_time;
if (elapsed > TIMER_LIMIT) {
state = 2;
}
} else {
digitalWrite(ALARM_PIN, 0);
state = 0;
}
} else {
if (digitalRead(RESET_PIN)) {
digitalWrite(ALARM_PIN, 0);
state = 0;
}
}
delay(1); // delay a millisecond
}