const int pinDS = 3;
const int pinSTCP = 4;
const int pinSHCP = 2;
uint16_t cislo = 1234;
unsigned long previousMillis=0;
const uint8_t cifry[] = {
0b00000011,
0b10011111,
0b00100101,
0b00001101,
0b10011001,
0b01001001,
0b01000001,
0b00011111,
0b00000001,
0b00001001,
0b11111111
};
uint8_t segment[] = {1, 2, 4, 8};
void setup() {
pinMode(pinDS, OUTPUT);
pinMode(pinSTCP, OUTPUT);
pinMode(pinSHCP, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
zobrazCislicu(cislo);
if(currentMillis - previousMillis >= 1000){
previousMillis = currentMillis;
cislo = (cislo + 1) % 10;
}
}
void zobrazCislicu(int cislo){
for(int i = 0; i<4; i++){
uint8_t cifra = cislo%10;
cislo /=10;
digitalWrite(pinSTCP, LOW);
shiftOut(pinDS, pinSHCP, LSBFIRST, cifry[cifra]);
shiftOut(pinDS, pinSHCP, MSBFIRST, segment[i]);
digitalWrite(pinSTCP, HIGH);
}
}