Наложение символов на светодиодный дисплей P10 с помощью библиотеки DMD

esp32 led spi led-matrix esp32-s3

Привет! Я использую светодиодный дисплей P10 и пытаюсь сделать цифровые часы. Всё работает нормально, но через две или более недели без выключения начинают накладываться символы. Почему это происходит, я не понимаю. Я использую классическую библиотеку DMD, но вот результат:

Одно и то же число едва заметно над цифрой, но немного выше и ниже. Я использую ESP32 S3, также подающий питание напрямую от USB 5 В к VCC панели. Мой адаптер рассчитан на 25 Вт для быстрой зарядки телефонов Samsung. Я даже запускаю команду clearScreen каждые 30 минут, но это не работает.

dmd.clearScreen( true ); // true — нормально (все пиксели выключены), false — негатив (все пиксели включены)

Почему это происходит и как решить? Спасибо.

, 👍0

Обсуждение

Я бы рассмотрел возможность использования другой библиотеки. В [репозитории DMD GIT](https://github.com/freetronics/DMD) есть вопросы без ответов, которым уже больше года. [Этот вопрос](https://github.com/freetronics/DMD/issues/22) похож на ваш., @st2000

измените свой код так, чтобы второй строки не было... это немного лучше покажет степень повреждения, @jsotola

пожалуйста, добавьте ссылку на спецификацию дисплея к вашему вопросу ... также добавьте код, который вы используете, @jsotola


1 ответ


1

Похоже, что буфер памяти повреждён, что приводит к появлению неожиданных артефактов на дисплее. Поскольку такие дисплеи обычно полностью обновляются после каждого кадра, повреждённая память, скорее всего, находится в процессоре.

Рассмотрите возможность добавления:

 dmd.clearScreen(true);

... в цикле обновления, прежде чем полностью описать, что должно отображаться. Эта строка кода была найдена на строке 84 этого примера кода DMD в репозитории DMD GITLAB .


Добавлено позже...

Другие возможные причины, которые следует учитывать:

  • Некоторые платы Arduino оснащены линейными стабилизаторами напряжения, которым требуется более высокое напряжение, чем требуется для работы процессора. Если вы используете такую плату Arduino, обязательно учитывайте это непредвиденное потребление напряжения.
  • Дисплеи типа HUB 75 требуют постоянного обновления и согласованной синхронизации. Хотя это может сделать проект бессмысленным, рекомендуется удалить любой условно выполняемый код, который может нарушить синхронизацию управляющих сигналов типа HUB 75. Проверьте полученный код на наличие непредвиденного поведения дисплея в течение аналогичного времени и при аналогичных условиях питания.
  • Если вы подключаете дисплей типа HUB 75 отдельно, убедитесь, что Arduino и дисплей типа HUB 75 соединены надежным общим заземляющим проводом.
  • Все провода и кабели должны быть максимально короткими. Во многих случаях длина кабеля дисплея, например, HUB 75, составляет менее 30 см.
,

Завтра попробую, но не думаю, что это решит проблему. Не думаю, что буфер может сломаться спустя несколько недель. Потому что нежелательные светодиоды видны очень слабо. Если буфер сломан, наложенные символы должны быть яркими, как обычные., @mehmet

Подумайте о том, чтобы ответить на комментарии под вашим вопросом. Также учтите, что некоторые блоки питания могут быть сложными. Блок питания USB C может работать при разных напряжениях и может не достичь заявленной мощности при использовании с устройством, которое не взаимодействует с блоком питания. Кроме того, некоторые блоки питания отличаются низкой стоимостью . Рассмотрите возможность тестирования с другим источником питания., @st2000

ну, я проверил, и результат почти тот же. Эффект мерцания все еще есть @st2000, @mehmet

Извините за вопрос, какой тест вы могли провести? 1) Очищали буфер при каждом обновлении дисплея? 2) Меняли блок питания на более мощный?, @st2000

Стоит добавить, что некоторые платы Arduino оснащены линейными стабилизаторами питания, которым требуется более высокое напряжение, чем требуется для работы процессора. Кроме того, дисплеи типа HUB 75 требуют постоянного обновления и согласованной синхронизации. Возможно, проблемы с синхронизацией возникают из-за условно выполняемого кода. Добавлю эти моменты в свой ответ., @st2000