#include <LedControl.h>
#define NBR_MTX 1 // Кількість матриць
LedControl lc = LedControl(12, 10, 11, NBR_MTX); // DIN, CLK, CS, кількість матриць
// Бітові маски для цифр 0-9
byte numbers[10][8] = {
{ // 0
B01111110,
B11000011,
B11000011,
B11000011,
B11000011,
B11000011,
B01111110,
B00000000
},
{ // 1
B00011000,
B00111000,
B00011000,
B00011000,
B00011000,
B00011000,
B01111110,
B00000000
},
{ // 2
B01111110,
B11000011,
B00000011,
B00011110,
B01100000,
B11000000,
B11111111,
B00000000
},
{ // 3
B01111110,
B11000011,
B00000011,
B00111110,
B00000011,
B11000011,
B01111110,
B00000000
},
{ // 4
B00000110,
B00001110,
B00011110,
B01100110,
B11111111,
B00000110,
B00000110,
B00000000
},
{ // 5
B11111111,
B11000000,
B11111110,
B00000011,
B00000011,
B11000011,
B01111110,
B00000000
},
{ // 6
B01111110,
B11000011,
B11000000,
B11111110,
B11000011,
B11000011,
B01111110,
B00000000
},
{ // 7
B11111111,
B00000011,
B00000011,
B00000110,
B00001100,
B00011000,
B00110000,
B00000000
},
{ // 8
B01111110,
B11000011,
B11000011,
B01111110,
B11000011,
B11000011,
B01111110,
B00000000
},
{ // 9
B01111110,
B11000011,
B11000011,
B01111111,
B00000011,
B11000011,
B01111110,
B00000000
}
};
byte reverseByte(byte b) {
b = (b & 0xF0) >> 4 | (b & 0x0F) << 4;
b = (b & 0xCC) >> 2 | (b & 0x33) << 2;
b = (b & 0xAA) >> 1 | (b & 0x55) << 1;
return b;
}
void reverseNumbers() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 8; j++) {
numbers[i][j] = reverseByte(numbers[i][j]);
}
}
}
void setup() {
for (int i = 0; i < NBR_MTX; i++) {
lc.shutdown(i, false); // Увімкнути модуль
lc.setIntensity(i, 8); // Яскравість (0-15)
lc.clearDisplay(i); // Очистити екран
}
reverseNumbers(); // Інвертуємо цифри перед відображенням
}
void displayNumber(byte number[8]) {
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, number[row]); // Встановлюємо ряд
}
delay(1000); // Показувати число 1 секунду
lc.clearDisplay(0); // Очистити екран перед наступним числом
delay(500); // Пауза між числами
}
void loop() {
for (int i = 0; i < 10; i++) {
displayNumber(numbers[i]); // Відображення цифр від 0 до 9
}
delay(2000); // Пауза перед повторенням лічби
}