Внезапный сбой в работе модулей max7219

Всё, умолкаю. Подожду, что ТС ответит))

На всякий случай проверил ту же ардуину на простом скетче «счета секунд» с выводом в сериал - считает правильно. Моя ардуина исправна.

Что-то посмотрел внимательней твой пример, и не понял нифига - что ты хочешь показать. Цикл луп длится 12+X(?) секунд, а ты измеряешь секунды. Как по мне - это не сброс
Объясни тупому, в чём смысл этих замеров?

P.S. Запустил в WOKWI - подобный пример, без никакой библиотеки - примерно тоже самое показывает:

Спойлер
uint32_t old;

void setup() {
 
  //===========
  Serial.begin(9600);
  old = millis();
 
}
void loop() {

  if (millis() - old >= 1000) {
    old = millis();
    
    Serial.print("Seconds:");
    Serial.println((millis() % 1000));
  }
  delay(2111);
}
Спойлер

Интересно, чего вы ожидали с таким кодом:

Не вижу никакого сброса

даже не секунды, а остаток миллисекунд от целой секунды.

Как по мне, в коде от @BOOM в Сериал выводится почти рандомное число. То что оно выглядит как увеличивающийся счетчик - чистая случайность.

Не используется

Вот именно.
Протеус, кстати код BOOMа, точно так же выводит:

Спойлер

Виноват, признаю :slight_smile:
Значит код рабочий…

Точнее никак?

Точнее - вот она: GitHub - wayoda/LedControl: библиотека Arduino для драйверов светодиодных дисплеев MAX7219 и MAX7221

Владимир, залил Ваш скетч (библиотека установлена). При компиляции ИДЕ ругается следующим образом:
no matching function for call to ‘shMAX72xx7Segment<12, 3, 8>::setChar(int, int, uint8_t, bool, bool)’

Скетч использует 3696 байт (12%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 230 байт (11%) динамической памяти, оставляя 1818 байт для локальных переменных. Максимум: 2048 байт.

Used library Version Path
shMAX72xxMini 1.5.10 /mnt/B6F0D77CF0D74173/_Documents/Vladimir/YandexDisk/Arduino/libraries/shMAX72xxMini
SPI 1.0 /home/vladimir/.arduino15/packages/arduino/hardware/avr/1.8.6/libraries/SPI

Все компилируется. Возможно, нужно обновить библиотеку, я ее вчера правил, может быть вы скачали раньше

Обновил по Вашей ссылке. Компилируется и загружается, но горят полной яркостью все “8.” только на первом девайсе (который 0).

Подключили правильно? Так бывает, когда пины перепутаны

// вывод CS модуля подулючен к пину D10 Ардуино, выводы DIN и CLK модуля подключены к пинам D11 и D13 Ардуино соответственно

У меня трех семисегментников нету, но на матрицах скетч работает как надо, только в методах clearDevice() нужно добавить второй параметр true

lc_test.clearDevice(0, true);    //Очистить дисплей

для всех трех модулей

Вывод CS модуля подключен к пину D12 Ардуино, выводы DIN и CLK модуля подключены к пинам D11 и D13 Ардуино соответственно. Ошибки подключения нет. Проверил. Второй параметр true всем модулям добавил. Картина та же: первый модуль выдает восемь восьмёрок. Остальные не горят.

#define CS_PIN 10

В скетче указал #define CS_PIN 12
Или надо именно #define CS_PIN 10?

В скетче указан #define CS_PIN 10, я оттуда скопировал. На пине 12 сидит MISO, поэтому его использовать не нужно

Щас попробую. Попробовал перекинуть на 10. Заработало. Пока не срывается в мерцание.

Большое спасибо за помощь, Владимир. Буду ваять дальше (надо разобраться с масками символов, тогда все будет ОК).