#define DSpin 2
#define LATCHpin 3
#define CLOCKpin 4
uint16_t cislo=0;
uint8_t segment[]={1,2,4,8};
const uint8_t cifry[]={
0b00000011,//0
0b10011111,//1
0b00100101,//2
0b00001101,//3
0b10011001,//4
0b01001001,//5
0b01000001,//6
0b00011111,//7
0b00000001,//8
0b00001001,//9
0b11111111 //-
};
unsigned long previousMillis=0;
void setup() {
pinMode(DSpin, OUTPUT);
pinMode(LATCHpin, OUTPUT);
pinMode(CLOCKpin, OUTPUT);
}
void loop() {
unsigned long currentMillis=millis();
zobrazCislilcu(cislo);
if(currentMillis-previousMillis>=500){
previousMillis=currentMillis;
cislo=(cislo+1)%10000;
}
}
int i=0;
bool smer=true;
void zobrazCislilcu(int cislo){
for(int i=0;i<4;i++){
uint8_t cifra=cislo%10;
cislo/=10;
digitalWrite(LATCHpin, HIGH);
shiftOut(DSpin,CLOCKpin,LSBFIRST,cifry[cifra]);
shiftOut(DSpin,CLOCKpin,MSBFIRST,segment[i]);
digitalWrite(LATCHpin, LOW);
}
}