#define A 18
#define B 23
#define C 4
#define D 16
#define E 17
#define F 19
#define G 0
#define DIG1 5
#define DIG2 21
#define DIG3 22
#define DIG4 2
#include "DHTesp.h"
void clear_digit() {
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
void zero() { digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH); digitalWrite(G, LOW); }
void one() { digitalWrite(A, LOW); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, LOW); }
void two() { digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, LOW); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, LOW); digitalWrite(G, HIGH); }
void three() { digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, HIGH); }
void four() { digitalWrite(A, LOW); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); digitalWrite(E, LOW); digitalWrite(F, HIGH); digitalWrite(G, HIGH); }
void five() { digitalWrite(A, HIGH); digitalWrite(B, LOW); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, HIGH); digitalWrite(G, HIGH); }
void six() { digitalWrite(A, HIGH); digitalWrite(B, LOW); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH); digitalWrite(G, HIGH); }
void seven() { digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); digitalWrite(E, LOW); digitalWrite(F, LOW); digitalWrite(G, LOW); }
void eight() { digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, HIGH); digitalWrite(F, HIGH); digitalWrite(G, HIGH); }
void nine() { digitalWrite(A, HIGH); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, HIGH); digitalWrite(E, LOW); digitalWrite(F, HIGH); digitalWrite(G, HIGH); }
unsigned long previousMillis = 0;
const long interval = 300;
unsigned long displayMillis = 0;
const long displayInterval = 5;
int counter = 0;
int digit = 1;
void setup() {
Serial.begin(115200);
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DIG1, OUTPUT);
pinMode(DIG2, OUTPUT);
pinMode(DIG3, OUTPUT);
pinMode(DIG4, OUTPUT);
digitalWrite(DIG1, HIGH);
digitalWrite(DIG2, HIGH);
digitalWrite(DIG3, HIGH);
digitalWrite(DIG4, HIGH);
}
void displayNumber(int digit, int value) {
switch (digit) {
case 1: digitalWrite(DIG1, LOW); digitalWrite(DIG2, HIGH); digitalWrite(DIG3, HIGH); digitalWrite(DIG4, HIGH); break;
case 2: digitalWrite(DIG1, HIGH); digitalWrite(DIG2, LOW); digitalWrite(DIG3, HIGH); digitalWrite(DIG4, HIGH); break;
case 3: digitalWrite(DIG1, HIGH); digitalWrite(DIG2, HIGH); digitalWrite(DIG3, LOW); digitalWrite(DIG4, HIGH); break;
case 4: digitalWrite(DIG1, HIGH); digitalWrite(DIG2, HIGH); digitalWrite(DIG3, HIGH); digitalWrite(DIG4, LOW); break;
}
switch (value) {
case 0: zero(); break;
case 1: one(); break;
case 2: two(); break;
case 3: three(); break;
case 4: four(); break;
case 5: five(); break;
case 6: six(); break;
case 7: seven(); break;
case 8: eight(); break;
case 9: nine(); break;
}
}
void loop() {
unsigned long currentMillis = millis();
// Обновление счетчика каждую секунду
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
counter++;
if (counter > 9999) counter = 0;
}
// Обновление отображения каждые 5 миллисекунд
if (currentMillis - displayMillis >= displayInterval) {
displayMillis = currentMillis;
int thousands = counter / 1000;
int hundreds = (counter / 100) % 10;
int tens = (counter / 10) % 10;
int units = counter % 10;
switch (digit) {
case 1: displayNumber(1, thousands); break;
case 2: displayNumber(2, hundreds); break;
case 3: displayNumber(3, tens); break;
case 4: displayNumber(4, units); break;
}
digit++;
if (digit > 5) digit = 1;
clear_digit();
}
}