// Пины для каждого сегмента (A,B,C,D,E,F,G,DP)
int segmentPins[] = {7, 6, 3, 4, 5, 8, 9, 2};
// Конфигурация сегментов для цифр 0-9
// Каждый байт определяет, какие сегменты горят для цифры
// Бит 0 = сегмент A, бит 1 = сегмент B, ..., бит 7 = DP
byte digitPatterns[10] = {
0b11111100, // 0: A,B,C,D,E,F
0b01100000, // 1: B,C
0b11011010, // 2: A,B,D,E,G
0b11110010, // 3: A,B,C,D,G
0b01100110, // 4: B,C,F,G
0b10110110, // 5: A,C,D,F,G
0b10111110, // 6: A,C,D,E,F,G
0b11100000, // 7: A,B,C
0b11111110, // 8: все сегменты
0b11110110 // 9: A,B,C,D,F,G
};
void setup() {
// Настраиваем все пины как выходы
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void displayDigit(int digit) {
// Проверяем, что цифра в диапазоне 0-9
if (digit < 0 || digit > 9) return;
// Получаем паттерн для текущей цифры
byte pattern = digitPatterns[digit];
// Устанавливаем состояние каждого сегмента
for (int i = 0; i < 8; i++) {
// Проверяем i-й бит паттерна
bool segmentState = bitRead(pattern, 7 - i);
digitalWrite(segmentPins[i], segmentState);
}
}
void loop() {
// Последовательно отображаем цифры 0-9
for (int i = 0; i < 10; i++) {
displayDigit(i);
delay(1000);
}
}