// CONNECT CN2 to CN8
constexpr uint8_t dataPin = 4; //DS
constexpr uint8_t clockPin = 2; //SHCP
constexpr uint8_t latchPin = 3; //STCP
uint8_t digits[10] = {
0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00000111, //7
0b01111111, //8
0b01101111 //9
};
void shiftOut(uint8_t value) {
for (uint8_t i = 0; i < 8; ++i) {
// Extract the bit to send based on the bit order
bool bitToSend = (value >> (7 - i)) & 0x01;
// Send the bit out
digitalWrite(dataPin, bitToSend);
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
}
void displayDigit(int number) {
shiftOut(digits[number%10]);
shiftOut(digits[number/10]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
}
void setup() {
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
// set pins low
digitalWrite(clockPin, LOW);
digitalWrite(dataPin, LOW);
digitalWrite(latchPin, LOW);
}
void loop() {
for(uint8_t i=0; i<99; i++) {
displayDigit(i);
delay(300);
}
}