// Пины для сегментов (A, B, C, D, E, F, G, DP)
const int segments[] = {2, 3, 4, 5, 6, 7, 8, 9};
// Пины для управления разрядами (транзисторы или напрямую к катодам D10-D13)
const int digits[] = {10, 11, 12, 13};
// Маска цифр от 0 до 9 для общего катода (HIGH зажигает сегмент)
// Порядок бит: A, B, C, D, E, F, G, DP
const byte numbers[10] = {
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B10111110, // 6
B11100000, // 7
B11111110, // 8
B11110110 // 9
};
void setup() {
// Настраиваем пины сегментов на вывод
for (int i = 0; i < 8; i++) {
pinMode(segments[i], OUTPUT);
}
// Настраиваем пины разрядов на вывод
for (int i = 0; i < 4; i++) {
pinMode(digits[i], OUTPUT);
digitalWrite(digits[i], HIGH); // Выключаем разряды (для общего катода HIGH = выкл)
}
}
void loop() {
// Перебираем цифры от 0 до 9
for (int num = 0; num < 10; num++) {
// Включаем все разряды (для общего катода подаем LOW)
for (int d = 0; d < 4; d++) {
digitalWrite(digits[d], LOW);
}
// Выводим нужную цифру на сегменты
for (int s = 0; s < 8; s++) {
boolean bitVal = bitRead(numbers[num], 7 - s);
digitalWrite(segments[s], bitVal);
}
// Задержка в 1 секунду, чтобы увидеть цифру
delay(1000);
}
}