const int BIT_PINS[3] = {10, 9, 8}; // LSB to MSB
const int EN_PIN = 11;
const int EN_A_SEG_PIN = 12;
const unsigned long ONE_SEC = 1000;
const byte SEG_NUMBERS[] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
unsigned long prevTime = 0;
int number = 0;
void setup() {
for (int i = 0; i < 3; i++) {
pinMode(BIT_PINS[i], OUTPUT);
}
pinMode(EN_PIN, OUTPUT);
pinMode(EN_A_SEG_PIN, OUTPUT);
}
void loop() {
if (millis() - prevTime >= ONE_SEC) {
prevTime = millis();
number++;
if (number == 10) number = 0;
}
if (number == 1 || number == 4) {
digitalWrite(EN_A_SEG_PIN, LOW);
} else {
digitalWrite(EN_A_SEG_PIN, HIGH);
}
for (int count = 0; count < 8; count++) { // count 0 - 7
digitalWrite(EN_PIN, LOW); // blank whilst bit shuffling
for (int pin = 0; pin < 3; pin++) { // 3 bits, 0 - 2
digitalWrite(BIT_PINS[pin], (count >> pin) & 1
&& bitRead(SEG_NUMBERS[number], count));
}
digitalWrite(EN_PIN, HIGH); // unblank
//delay(50);
}
}