// Пины для сегментов A, B, C, D, E, F, G, DP (подключите их по порядку от D2 до D9)
const int segPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
// Пины для разрядов (общие катоды D10-D13)
const int digitPins[] = {10, 11, 12, 13};
// Таблица истинности для цифр от 0 до 9 (1 — включить сегмент, 0 — выключить)
// Порядок сегментов: A, B, C, D, E, F, G, DP
const byte digits[10][8] = {
{1, 1, 1, 1, 1, 1, 0, 0}, // 0
{0, 1, 1, 0, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1, 0}, // 2
{1, 1, 1, 1, 0, 0, 1, 0}, // 3
{0, 1, 1, 0, 0, 1, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1, 0}, // 5
{1, 0, 1, 1, 1, 1, 1, 0}, // 6
{1, 1, 1, 0, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1, 0}, // 8
{1, 1, 1, 1, 0, 1, 1, 0} // 9
};
void setup() {
// Настраиваем пины сегментов
for (int i = 0; i < 8; i++) {
pinMode(segPins[i], OUTPUT);
}
// Настраиваем пины разрядов
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
digitalWrite(digitPins[i], HIGH); // Выключаем разряды (HIGH для общего катода)
}
}
void loop() {
// Перебираем цифры от 0 до 9
for (int num = 0; num < 10; num++) {
// Включаем все 4 разряда (для общего катода подаем LOW)
for (int d = 0; d < 4; d++) {
digitalWrite(digitPins[d], LOW);
}
// Зажигаем соответствующие сегменты
for (int s = 0; s < 8; s++) {
digitalWrite(segPins[s], digits[num][s]);
}
// Пауза 1 секунда
delay(1000);
}
}