#define DATA 3
#define LATCH 4
#define CLOCK 5
uint8_t cislo = 0;
unsigned long previousMillis = 0;
const uint8_t cislice[] = {
0b00000011, // 0
0b10011111, // 1
0b00100101, // 2
0b00001011, // 3
0b10011001, // 4
0b01001001, // 5
0b01000001, // 6
0b00011111, // 7
0b00000001, // 8
0b00001001, // 9
0b11111111, // --
};
uint8_t segment[] = {1, 2, 4, 8};
void setup() {
pinMode(DATA, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
}
void loop() {
zobraz(cislo);
if (millis() - previousMillis >= 1000) {
previousMillis = millis();
cislo = (cislo + 1) % 10000;
}
}
void zobraz(uint8_t cislo) {
for (int i = 0; i < 4; i++) {
uint8_t cifra = cislo % 10;
cislo = cislo / 10;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, cislice[cifra]);
shiftOut(DATA, CLOCK, LSBFIRST, segment[i]);
digitalWrite(LATCH, HIGH);
}
delay(200);
}