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


const int segPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
const int digitPins[] = {5, 4, 3, 2};

const byte charMasks[] = {
  // Цифры 0-9
  0b11111100, // 0
  0b01100000, // 1
  0b11011010, // 2
  0b11110010, // 3
  0b01100110, // 4
  0b10110110, // 5
  0b10111110, // 6
  0b11100000, // 7
  0b11111110, // 8
  0b11110110, // 9
  
  // Буквы A-Z (некоторые в нижнем или верхнем регистре для читаемости на 7-сегментнике)
  0b11101110, // A
  0b00111110, // b
  0b10011100, // C
  0b01111010, // d
  0b10011110, // E
  0b10001110, // F
  0b11110110, // G
  0b00101110, // h
  0b00001100, // I (или 1)
  0b01111000, // J
  0b10001110, // K (используем как F/K)
  0b00011100, // L
  0b11101100, // M (упрощенно)
  0b00101010, // n
  0b11111100, // O (как 0)
  0b11001110, // P
  0b11100110, // Q
  0b00001010, // r
  0b10110110, // S (как 5)
  0b00011110, // t
  0b01111100, // U
  0b01111100, // V (как U)
  0b01111100, // W (как U)
  0b01101110, // X
  0b01110110, // Y
  0b11011010  // Z (как 2)
};

const int totalChars = sizeof(charMasks);

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);
  }
}

void loop() {
  for (int c = 0; c < totalChars; c++) {
    for (int i = 3; i >= 0; i--) {
      for (int d = 0; d < 4; d++) {
        digitalWrite(digitPins[d], HIGH);
      }
      
      digitalWrite(digitPins[i], LOW);
      
      for (int s = 0; s < 8; s++) {
        bool bitVal = bitRead(charMasks[c], 7 - s);
        digitalWrite(segPins[s], bitVal);
      }
      
      delay(500);
    }
  }
}