const int segmentPins[7] = {2, 3, 4, 5, 6, 7, 8};
const int digitPins[3] = {9, 10, 11};
const byte digits[10] = {
0b00111111, // 0
0b00000110, // 1
0b01011011, // 2
0b01001111, // 3
0b01100110, // 4
0b01101101, // 5
0b01111101, // 6
0b00000111, // 7
0b01111111, // 8
0b01101111 // 9
};
int number = 0;
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segmentPins[i], OUTPUT);
}
for (int i = 0; i < 3; i++) {
pinMode(digitPins[i], OUTPUT);
digitalWrite(digitPins[i], HIGH);
}
}
void loop() {
displayNumber(number);
static unsigned long lastUpdate = 0;
if (millis() - lastUpdate >= 200) {
lastUpdate = millis();
number = (number + 1) % 1000;
}
}
void displayNumber(int number) {
int hundreds = number / 100;
int tens = (number / 10) % 10;
int ones = number % 10;
displayDigit(hundreds, 0);
delay(5);
displayDigit(tens, 1);
delay(5);
displayDigit(ones, 2);
delay(5);
}
void displayDigit(int num, int digitIndex) {
for (int i = 0; i < 3; i++) {
digitalWrite(digitPins[i], HIGH);
}
byte segments = digits[num];
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], segments & (1 << i));
}
digitalWrite(digitPins[digitIndex], LOW);
}