Добрый день! В завалах накопилась кучка 7-сегментных модулей max7219. Часть из них (помню) страдали выпадением или низкой светимостью отдельных элементов. Написал скетчик для выбраковки покалеченных.
//АРДУИНО УНО
//Подключаем библиотеку индикаторов
#include "LedControl.h"
//создаём объекты класса LedControl (din,clk,cs,X)\, четвертая цифра "X" - количество модулей
LedControl lc = LedControl(4,2,3,1);
boolean dot=true;
unsigned long max7219;
void setup()
{
// Инициация пинов индикации на выход
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
// Инициация состояния индикатора
lc.shutdown(0, false); //Выводим из спящего режима
lc.setIntensity(0,2); //Яркость дисплея. Всего возможных режимов яркости от 0 до 15
lc.clearDisplay(0); //Очистить дисплей
}
void loop()
{
if (millis()-max7219>333)
{
for (int ind=0;ind<=8;ind++)
{
lc.setDigit(0, ind, 8, dot);
}
if (dot==true) {dot=false;}
else {dot=true;}
max7219=millis();
}
}
После загрузки программа отрабатывает вполне адекватно: на всех разрядах “восьмерки”, десятичная точка мигает. Однако через некоторое время (подсчитал количество миганий, их 77) программа замирает. Что я сделал не так?