// Define the pins for the segments
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
// Digit to segment mapping (Common Cathode)
const byte digitToSegment[10][7] = {
{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW}, // 0
{LOW, HIGH, HIGH, LOW, LOW, LOW, LOW}, // 1
{HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH}, // 2
{HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH}, // 3
{LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH}, // 4
{HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH}, // 5
{HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH}, // 6
{HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW}, // 7
{HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH},// 8
{HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH} // 9
};
void setup() {
// Set all segment pins as output
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void displayDigit(int digit) {
// Get the segment configuration for the digit
const byte* segmentConfig = digitToSegment[digit];
// Set the segments
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], segmentConfig[i]);
}
}
void loop() {
// Cycle through the digits 0-9
for (int digit = 0; digit < 10; digit++) {
displayDigit(digit);
delay(1000); // Display each digit for 1 second
}
}