Изучаем возможности LED-матрицы 8×8: технологии и применение

Шаг 2: Работа

Точечные матричные блоки обычно имеют матрицу светодиодов 5×7 или 8×8. Светодиоды подключены в

матрица такая, что либо анод, либо катод каждого светодиода являются общими в каждом ряду. Другими словами, в

матричный блок светодиодов с общим анодом, каждый ряд светодиодов будет иметь все свои аноды в этом ряду

все вместе. Катоды светодиодов все были бы соединены вместе в каждой колонке. Причина этого будет

скоро станет очевидным.

Типичный одноцветный матричный модуль 8×8 будет иметь 16 контактов, 8 для каждой строки и 8 для каждого столбца.

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

Если бы это было не так, для одноцветного матричного блока 8×8 потребовалось бы 65 контактов, по одному на каждый светодиод и

общий анод или катодный разъем. При соединении строк и столбцов только 16 контактов

требуется.

Однако теперь это создает проблему, если вы хотите, чтобы конкретный светодиод загорался в определенной позиции. Если для

Например, у вас был общий анодный блок, и вы хотели зажечь светодиод в X, Y позиции 5, 3 (5-й столбец, 3-й ряд), тогда вы примените ток к 3-й строке и заземлите 5-й контакт столбца.

Светодиод в 5-м столбце и 3-м ряду теперь будет гореть.

Теперь давайте представим, что вы хотите также зажечь светодиод в столбце 3, строке 6. Таким образом, вы подаете ток на

6-й ряд и заземлите 3-й столбец булавки. Светодиод в столбце 3, строка 6 теперь горит. Но подождите …

Светодиоды в столбце 3, строке 6 и столбце 5, строке 6 также загорелись.

Это потому, что вы подаете питание на ряды 3 и 6 и заземляете столбцы 3 и 5. Вы не можете

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

Таким образом, вы можете зажечь только два необходимых светодиода, соединяя строки и столбцы, как они есть.

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

будет прыгать с 16 до 65. 65-контактный матричный модуль будет очень трудно подключить и контролировать, потому что

вам нужен микроконтроллер с как минимум 64 цифровыми выходами.

Есть ли способ обойти эту проблему? Да, есть, и это называется мультиплексирование (или muxing).

мультиплексирование это метод включения одного ряда дисплея за раз. Выбрав столбец

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

ряд (или наоборот для обычных катодных дисплеев), выбранные светодиоды в этом ряду будут

загореться. Затем этот ряд выключается и включается следующий ряд, опять же с соответствующим

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

дно, а затем начать снова на вершине.

Если это сделать достаточно быстро (с частотой более 100 Гц или 100 раз в секунду), то явление

постоянство зрения (когда остаточное изображение остается на сетчатке в течение приблизительно 1/25 секунды) будет означать

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

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

другие светодиоды в том же столбце или строке также горят.

Сканируя вниз строки и освещая соответствующие светодиоды в каждом столбце этой строки и

делая это очень быстро (более 100 Гц), человеческий глаз будет воспринимать изображение как устойчивое, а изображение

сердце будет узнаваемо на светодиодной схеме.

Вы используете эту технику мультиплексирования в коде проекта. Вот как вы должны отобразить

анимация сердца без отображения посторонних светодиодов.

07.Display: RowColumnScanning

В состав Android IDE входит пример для светодиодной матрицы File | Examples | 07.Display | RowColumnScanning. Суть в следующем – с помощью двух потенциометров считываем показания с аналоговых выводов в интервале от 0 до 7. Показания от первого потенциометра указывают на вывод из ряда, а от второго на вывод из колонки матрицы. Таким образом, мы можем крутить ручки двух потенциометров и выбирать, какой светодиод из матрицы следует включить.

Я предлагаю упростить пример. Уберём потенциометры и удалим функцию readSensors() из скетча. Теперь, чтобы включить любой светодиод, нужно указать номер ряда и номер колонки в двумерном массиве и подать на него LOW.

Включим светодиоды по диагонали.

Матрица с драйвером MAX7219

Существует более удобный вариант матрицы с драйвером MAX7219 в виде отдельного модуля. Есть полностью готовые модули, а есть вариант, когда детали поставляются в разобранном виде и нужно самостоятельно паять.

Благодаря применению SPI модуль имеет только пять выводов с двух сторон: питание, земля и три цифровых вывода.

Модули можно соединять между собой, получая большое табло.

Сначала попробуем вариант включения любого светодиода матрицы вручную. В коде используются несколько функций. Для одиночного модуля вызываем функцию maxSingle(). Если используется несколько модулей, то уберите комментарии с вызовов функций maxAll(), maxOne().

При вызове функции maxSingle() в первом аргументе указываем номер ряда, во втором число в степени двойки – 1, 2, 4, 8 и т.д.

Пробное подключение

У матрицы шестнадцать выводов, что представляет определённую проблему при прототипировании. Приходится задействовать практически все выводы платы. Но так как все светодиоды в матрице независимы, мы можем поиграться с одной. Соединим матрицу с платой по следующей схеме: вывод 9 от матрицы соединяем с выводом 2 на плате, а вывод 13 от матрицы с GND через резистор.

При таком подключении мы задействуем самый верхний левый светодиод матрицы. Запускаем скетч мигания светодиодом Blink, чтобы увидеть работу одного светодиода.

В реальных проектах мы должны соединить все выводы матрицы. Так как их шестнадцать, то кроме цифровых портов нам нужно задействовать и аналоговые, которые могут работать как цифровые. В этом случае порт A0 становится 14, A1 – 15 и т.д. Соединив все выводы матрицы, можно включить нужный светодиод, подавая HIGH на вывод ряда и LOW на вывод столбца. Включим светодиод из второй строки и первой колонки.

Like this post? Please share to your friends: