const uint8_t segLUT[10] = {
0b00111111, // 0 : a b c d e f -
0b00000110, // 1 : - b c - - - -
0b01011011, // 2 : a b -d e - g
0b01001111, // 3 : a b c d - - g
0b01100110, // 4 : - b c - - f g
0b01101101, // 5 : a - c d - f g
0b01111101, // 6 : a - c d e f g
0b00000111, // 7 : a b c - - - -
0b01111111, // 8 : a b c d e f g
0b01101111 // 9 : a b c d - f g
};
volatile uint8_t digitBit = 1;
volatile uint8_t digit = 0;
void setup() {
// put your setup code here, to run once:
DDRD = 0b11111111; // Toutes les broches du port D en sortie
DDRC = 0b00111111; // C0 à C5 en sortie, C6 et C7 inchangés
}
void loop() {
// put your main code here, to run repeatedly:
PORTD = segLUT[digit];
PORTC = (PORTC | 0b00111111) & ~digitBit;
if (++digit > 9) {
digit = 0;
}
if ((digitBit <<= 1) > 0b00100000) {
digitBit = 1;
}
delay(250);
}