Загрузка данных


// Пины для сегментов (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);
  }
}