#include <QuadDisplay.h>
const int LED_PIN = 11;
const int BUTTON_PIN = 2;
const int DISPLAY_PIN = 9;
const int DISPLAY_POWER = 3;
unsigned long timerSec = 0;
unsigned long lastMillis = 0;
bool ledOn = false;
bool timerRunning = false;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(DISPLAY_POWER, OUTPUT);
digitalWrite(DISPLAY_POWER, HIGH);
delay(200);
displayClear(DISPLAY_PIN);
displayInt(DISPLAY_PIN, 0);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
if (Serial.read() == '1' && !ledOn) {
digitalWrite(LED_PIN, HIGH);
ledOn = true;
timerRunning = true;
timerSec = 0;
lastMillis = millis();
digitalWrite(DISPLAY_POWER, LOW);
delay(50);
digitalWrite(DISPLAY_POWER, HIGH);
delay(50);
displayInt(DISPLAY_PIN, 0);
}
}
if (timerRunning && millis() - lastMillis >= 1000) {
timerSec++;
lastMillis = millis();
digitalWrite(DISPLAY_POWER, LOW);
delay(50);
digitalWrite(DISPLAY_POWER, HIGH);
delay(50);
displayInt(DISPLAY_PIN, timerSec);
Serial.println(timerSec);
}
if (digitalRead(BUTTON_PIN) == LOW && ledOn) {
delay(50);
if (digitalRead(BUTTON_PIN) == LOW) {
digitalWrite(LED_PIN, LOW);
ledOn = false;
timerRunning = false;
digitalWrite(DISPLAY_POWER, LOW);
delay(50);
digitalWrite(DISPLAY_POWER, HIGH);
delay(50);
displayInt(DISPLAY_PIN, timerSec);
}
}
}