Светодиодный матричный дисплей с разной яркостью

До сих пор я видел в проектах, связанных со светодиодными матрицами, что яркость полностью контролируется. Это означает, что яркость всего экрана может быть как уменьшена, так и увеличена. Как можно отображать только часть дисплея с большей яркостью, чем остальная матрица? Благодарю, если кто-нибудь предоставит некоторую псевдологику для достижения этого.

, 👍0

Обсуждение

Допустим, матрица сделана из простой сетки светодиодов (монохромных), а для управления дисплеем используется метод мультиплексирования сдвиговыми регистрами. Согласен, яркостью можно управлять по скважности, если она одинарная. Мой вопрос заключается в том, как добиться разной яркости в матричной светодиодной матрице с помощью методов ШИМ / рабочего цикла. Например, если я хочу отображать время в формате ЧЧ:ММ, в котором часть дисплея ЧЧ будет ярче, чем часть ММ., @Ram


4 ответа


0

Короткий ответ: скорее всего, на аппаратном уровне это невозможно.

Единственный способ сделать это – изменить рабочий цикл каждого отдельного светодиода в матрице (процент времени включения по сравнению со временем выключения).

Устройство должно поддерживать это. Отредактируйте свой вопрос, указав номер модели светодиодной матрицы, которую вы используете, и ее технические характеристики.

(Обратите внимание, что если вы используете простую сетку светодиодов и адресацию строк/столбцов, вы можете использовать ШИМ, чтобы получить некоторый контроль над яркостью, но вы, вероятно, уже используете мультиплексирование светодиодов, что приводит к изменению яркости в зависимости от Светодиод более сложный.)

,

1

Есть два варианта:

  1. Используйте драйвер матрицы, поддерживающий различную яркость на пиксель, или:
  2. Быстро отображать различное расположение пикселей в быстрой последовательности. Пиксели, которые горят чаще, ярче.

Вариант 1 фактически выполняет вариант 2 в аппаратном обеспечении.

Теория проста: для одного светодиода вы можете изменять яркость с помощью ШИМ, который очень быстро включает и выключает светодиод. Чем дольше он горит, тем ярче выглядит.

То же самое можно сделать с матрицей пикселей. Вместо того, чтобы иметь дело с одним пикселем, вы, по сути, имеете дело с серией «изображений». Каждое «изображение» имеет разную комбинацию пикселей. Чем больше «изображений» у вас есть, тем больше вариаций яркости пикселей вы можете получить.

Например, если вы сначала отобразите кадр:

. . . . . . . .
. . # # # # . .
. # . . . . # .
. # . . . . # .
. # . . . . # .
. # . . . . # .
. . # # # # . .
. . . . . . . .

и изображение:

. . . . . . . #
. . # # # # # .
. # . . . # # .
. # . . # . # .
. # . # . . # .
. # # . . . # .
. # # # # # . .
# . . . . . . .

тогда вы получите яркую круглую форму с более тусклой косой чертой.

Единственная проблема с этим методом — мерцание. Ваша матрица должна очень быстро обновляться. Чем больше «изображений» вы должны отобразить последовательно, тем больше они будут мерцать и тем быстрее вам придется обновлять матрицу, чтобы компенсировать это.

,

0

Яркость светодиода обычно регулируется продолжительностью свечения данного светодиода. Светодиод, который горит 70 мс и выключается на 30 мс, будет ярче, чем светодиод, который горит всего 30 мс и выключается на 70 мс.

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

Обычно это называется рабочим циклом светодиода. В Arduino функция встроенного процессора ШИМ или широтно-импульсного модулятора обычно используется для создания сигнала рабочего цикла. для светодиода.

,

0

Зависит от того, из каких светодиодов сделана ваша матрица. Одним из вариантов было бы сделать его из «умных» светодиодов в каждом месте, таких как WS2812B. Это чип и 3 светодиода в одном корпусе, обычно SMD-корпус размером 5050, но они также могут быть в корпусах со сквозными отверстиями, а также могут быть встроены в платы (например, посмотрите на Sparkfun и Adfruit). Последовательные данные отправляются со значением 0-255 для каждого светодиода, затем микросхема управления управляет 3 светодиодами с заданным уровнем ШИМ - 0/255 для выключения, 128/255 для 1/2, например, 255/255 на полную. Данные передаются от устройства к устройству для их загрузки, поэтому, например, матрице 8x8 потребуется 8x8x3 = 192 байта данных, отправляемых для загрузки дисплея. После этого Arduino больше не нужно ничего делать, пока матрица не изменится. WS2812B требует причудливой синхронизации для отправки данных 0/1 в комбинированной линии данных / тактового сигнала, варианты — библиотека Neopixel или библиотека FastLed.h для Arduino, чтобы отправлять данные со скоростью до 800 кГц. Существует также другая версия чипа, в которой используются отдельные линии синхронизации и данных. SPI.transfer, я думаю, может использоваться для еще более быстрой отправки данных. Я не помню артикул этого устройства навскидку, я им не пользовался.

Для готовых модулей 8x8 с использованием одноцветных светодиодов, как описано в других ответах, часто используется MAX7219 с 15 уровнями яркости, доступными для всего дисплея.

,