#define FIRST_SEGMENT_PIN 2
#define SEGMENT_COUNT 7
byte numberSegments[10] = {
0b00111111, // 0
0b00001010, // 1
0b01011101, // 2
0b01011110, // 3
0b01101010, // 4
0b01110110, // 5
0b01110111, // 6
0b00011010, // 7
0b01111111, // 8
0b01111110 // 9
};
void setup()
{
// Налаштування кожного піну сегмента як ВИХІД
for (int i = 0; i < SEGMENT_COUNT; ++i)
pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);
}
void loop()
{
// Отримання поточного часу в мілісекундах і конвертація його в число від 0 до 9
int number = (millis() / 1000) % 10;
// Отримання бітового шаблону для поточної цифри
int mask = numberSegments[number];
// Проходження через кожен сегмент і увімкнення/вимикання його в залежності від бітового шаблону
for (int i = 0; i < SEGMENT_COUNT; ++i) {
boolean enableSegment = bitRead(mask, i);
// Встановлення відповідного піна сегмента в ВИСОКИЙ або НИЗЬКИЙ стан
digitalWrite(i + FIRST_SEGMENT_PIN, enableSegment);
}
}