#define LED_A 12 // connected to sevseg1:A
#define LED_B 14 // connected to sevseg1:B
#define LED_C 27 // connected to sevseg1:C
#define LED_D 26 // connected to sevseg1:D
#define LED_E 25 // connected to sevseg1:E
#define LED_F 33 // connected to sevseg1:F
#define LED_G 13 // connected to sevseg1:G
const int digitPatterns[10] = {
0B1000000, // 0
0B1111001, // 1
0B0100100, // 2
0B0110000, // 3
0B0011001, // 4
0B0010010, // 5
0B0000010, // 6
0B1111000, // 7
0B0000000, // 8
0B0011000 // 9
};
void setup() {
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(LED_C, OUTPUT);
pinMode(LED_D, OUTPUT);
pinMode(LED_E, OUTPUT);
pinMode(LED_F, OUTPUT);
pinMode(LED_G, OUTPUT);
Serial.begin(115200);
}
void displayDigit(int digit) {
// Turn off all segments
digitalWrite(LED_A, LOW);
digitalWrite(LED_B, LOW);
digitalWrite(LED_C, LOW);
digitalWrite(LED_D, LOW);
digitalWrite(LED_E, LOW);
digitalWrite(LED_F, LOW);
digitalWrite(LED_G, LOW);
// Set the segments according to the digit pattern
int pattern = digitPatterns[digit];
digitalWrite(LED_A, bitRead(pattern, 0));
digitalWrite(LED_B, bitRead(pattern, 1));
digitalWrite(LED_C, bitRead(pattern, 2));
digitalWrite(LED_D, bitRead(pattern, 3));
digitalWrite(LED_E, bitRead(pattern, 4));
digitalWrite(LED_F, bitRead(pattern, 5));
digitalWrite(LED_G, bitRead(pattern, 6));
}
void loop() {
for (int digit = 0; digit <= 9; digit++) {
displayDigit(digit);
delay(1000);
}
}