Добрый день! Имеется такой код:
Timer t; //создание объекта Timer
long number = 0;
int first_digit = 0;
int second_digit = 0;
int third_digit = 0;
int fourth_digit = 0;
int timer_event = 0;
int CA_1 = 12;
int CA_2 = 11;
int CA_3 = 10;
int CA_4 = 9;
int clk = 6;
int latch = 5;
int data = 4;
int count = 0;
int digits[4] ;
int CAS[4] = {9, 10, 11, 12};
byte numbers[10] {B11111100, B01100000, B11011010, B11110010, B01100110, B10110110, B10111110, B11100000, B11111110, B11110110}; // 0 – 9
void setup() {
Serial.begin(9600); //открываем порт
pinMode(CA_1, OUTPUT);
pinMode(CA_2, OUTPUT);
pinMode(CA_3, OUTPUT);
pinMode(CA_4, OUTPUT);
pinMode(clk, OUTPUT);
pinMode(latch, OUTPUT);
pinMode(data, OUTPUT);
digitalWrite(CA_1, HIGH);
digitalWrite(CA_2, HIGH);
digitalWrite(CA_3, HIGH);
digitalWrite(CA_4, HIGH);
Serial.println("Введите значение от 0 до 9999: ");
}
void loop() {
t.update();
if (Serial.available()) {
t.stop(timer_event);
cathode_high();
String s = Serial.readString();
number = (long)s.toInt();
if (number > 9999) {
Serial.println("Значение должно быть от 0 до 9999!");
} else {
break_number(number);
timer_event = t.every(1, display_number);
}
}
}
void break_number(long num) { // деление на разряды
first_digit = num / 1000;
digits[0] = first_digit;
int first_left = num - (first_digit * 1000);
second_digit = first_left / 100;
digits[1] = second_digit;
int second_left = first_left - (second_digit * 100);
third_digit = second_left / 10;
digits[2] = third_digit;
fourth_digit = second_left - (third_digit * 10);
digits[3] = fourth_digit;
}
void display_number() {
cathode_high();
digitalWrite(latch, LOW);
shiftOut(data, clk, LSBFIRST, numbers[digits[count]]); //передаем данные
digitalWrite(CAS[count], LOW);
digitalWrite(latch, HIGH);
count++;
if (count == 4) {
count = 0;
}
}
void cathode_high() {
digitalWrite(CA_1, HIGH);
digitalWrite(CA_2, HIGH);
digitalWrite(CA_3, HIGH);
digitalWrite(CA_4, HIGH);
}```
Нужно переделать так, чтобы переменная, отвечающая за время, каждую секунду изменялась на -1. Благодарю заранее!