Загрузка данных


#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);
    }
  }
}