Есть старый проект собранный на UNO и модуле MAX7219. Никак не получается запустить сегментный дисплей.
Суть проекта проста. UNO набирает цифровое значение и выводит на LED дисплей.
uint8_t buf[8] = { 0 }; // байт с информацией о «нажатой» клавише
#include "LedControl.h" // Подключаем библиотеку
LedControl lc=LedControl(11,9,10,1); // используемые пины ардуины для подключения, и сколько драйверов в цепочке.
// 1pin 11 is connected to the din dut
// 2pin 9 is connected to the CLK (CLK)
// 3pin 10 is connected to cs (Loda)
void setup()
{
//Инициируем MAX7219
Serial.begin(9600); // Устанавливаем скорость соединения
int devices = lc.getDeviceCount();
for(int address = 0; address < devices; address ++)
{
lc.shutdown(0, false);// включаем дисплей энергосбережение дисплей
lc.setIntensity(0,3);// устанавливаем яркость (0-минимум, 15-максимум)
lc.clearDisplay(0);// очищаем дисплей
}
delay(2000); // Пауза, чтобы «клавиатура» успела определиться в системе
}
void loop()
{
int dig1, dig2, dig3, dig4, dig5, dig6; // Цифры, которые будут последовательно вводиться
int keys[10] = { 39, 30, 31, 32, 33,
34, 35, 36, 37, 38 }; // Массив с ASCII кодами цифер от 0 до 9 соответственно
// Перебор с 000000 до 999999:
for(dig1=0; dig1<10; dig1++)
{
for(dig2=0; dig2<10; dig2++)
{
for(dig3=0; dig3<10; dig3++)
{
for(dig4=0; dig4<10; dig4++)
{
for(dig5=0; dig5<10; dig5++)
{
for(dig6=0; dig6<10; dig6++)
{
pressKey(keys[dig1]);
pressKey(keys[dig2]);
pressKey(keys[dig3]);
pressKey(keys[dig4]);
pressKey(keys[dig5]);
pressKey(keys[dig6]);
pressKey(40); // Клавиша Enter
for(int i=0; i<1200; i++)
{
//Здесь:
//0 - адрес устройства
//5 - порядковый номер разряда на дисплее
//dig - это и есть отображаемая цифра
//false - управление включением десятичной точки разряда
lc.setDigit(0, 7, dig1, false);
lc.setDigit(0, 6, dig2, false);
lc.setDigit(0, 5, dig3, false);
lc.setDigit(0, 4, dig4, false);
lc.setDigit(0, 3, dig5, false);
lc.setDigit(0, 2, dig6, false);
}
}
}
}
}
}
}
}
void pressKey(int dig) // Функция ввода
{
buf[2] = dig;
Serial.write(buf, 8); // Нажать клавишу
buf[0] = 0;
buf[2] = 0;
delay(20);
Serial.write(buf, 8); // Отпустить клавишу
delay(300);
}