Мы создали серию учебных пособий Raspberry Pi, в которых мы рассмотрели взаимодействие Raspberry Pi со всеми основными компонентами, такими как светодиод, ЖК-дисплей, кнопка, двигатель постоянного тока, серводвигатель, шаговый двигатель, АЦП, регистр сдвига и т. Д. опубликовал несколько простых проектов Raspberry Pi для начинающих, а также несколько хороших проектов IoT. Сегодня, в продолжение этих руководств, мы рассмотрим модуль управления светодиодной матрицей 8x8 от Raspberry Pi. Мы напишем программу на Python для отображения символов в модуле матрицы.
Также проверьте взаимодействие светодиодной матрицы 8x8 с Arduino и светодиодной матрицы с AVR Microcontorller.
Необходимые компоненты:
Здесь мы используем Raspberry Pi 2 Model B с Raspbian Jessie OS. Все основные требования к оборудованию и программному обеспечению обсуждаются ранее, вы можете найти их во введении Raspberry Pi и мигании светодиода Raspberry PI, чтобы начать работу, кроме того, что нам нужно:
- Доска Raspberry Pi
- Источник питания (5В)
- Конденсатор 1000 мкФ (подключен к источнику питания)
- Резистор 1КОм (8 шт.)
Светодиодный матричный модуль 8x8:
Модуль светодиодной матрицы 8 * 8 содержит 64 светодиода (светоизлучающих диодов), которые скомпонованы в виде матрицы, отсюда и название - светодиодная матрица. Эти компактные модули доступны в разных размерах и во многих цветах. Их можно выбрать по удобству. Конфигурация PIN-кода модуля показана на рисунке. Имейте в виду, что распиновка модуля не в порядке, поэтому PIN-коды должны быть пронумерованы точно так, как показано на рисунке, чтобы избежать ошибок.
В модуле LED Matrix 8 + 8 = 16 общих клемм. Над ними у нас есть 8 общих положительных выводов и 8 общих отрицательных выводов в виде 8 строк и 8 столбцов для подключения 64 светодиодов в матричной форме. Если бы модуль был нарисован в виде принципиальной схемы, мы получили бы картинку, как показано ниже:
Итак, для 8 строк у нас есть 8 общих положительных выводов (9, 14, 8, 12, 17, 2, 5). Рассмотрим первый ряд, светодиоды от D1 до D8 имеют общий положительный вывод, а вывод выведен на PIN9 модуля LED Matrix. Когда мы хотим, чтобы один или все светодиоды в СТРОКЕ были включены, соответствующий вывод LED MODULE должен быть запитан с помощью + 3,3 В.
Подобно обычным положительным клеммам, у нас есть 8 общих отрицательных клемм в виде столбцов (13, 3, 4, 10, 6, 11, 15, 16). Для заземления любого светодиода в любом столбце необходимо заземлить соответствующую общую отрицательную клемму.
Описание схемы:
Соединения, которые выполняются между Raspberry Pi и модулем светодиодной матрицы, показаны в таблице ниже.
Модуль светодиодной матрицы № контакта |
Функция |
Номер контакта GPIO Raspberry Pi. |
13 |
ПОЛОЖИТЕЛЬНО0 |
GPIO12 |
3 |
ПОЛОЖИТЕЛЬНО1 |
GPIO22 |
4 |
ПОЛОЖИТЕЛЬНЫЙ2 |
GPIO27 |
10 |
ПОЛОЖИТЕЛЬНО3 |
GPIO25 |
6 |
ПОЛОЖИТЕЛЬНО4 |
GPIO17 |
11 |
ПОЛОЖИТЕЛЬНЫЙ5 |
GPIO24 |
15 |
ПОЛОЖИТЕЛЬНО6 |
GPIO23 |
16 |
ПОЛОЖИТЕЛЬНО7 |
GPIO18 |
9 |
ОТРИЦАТЕЛЬНЫЙ0 |
GPIO21 |
14 |
ОТРИЦАТЕЛЬНЫЙ1 |
GPIO20 |
8 |
ОТРИЦАТЕЛЬНЫЙ2 |
GPIO26 |
12 |
ОТРИЦАТЕЛЬНО3 |
GPIO16 |
1 |
ОТРИЦАТЕЛЬНО4 |
GPIO19 |
7 |
ОТРИЦАТЕЛЬНО5 |
GPIO13 |
2 |
ОТРИЦАТЕЛЬНО6 |
GPIO6 |
5 |
ОТРИЦАТЕЛЬНО7 |
GPIO5 |
Вот окончательная принципиальная схема для взаимодействия светодиодной матрицы 8x8 с Raspberry Pi:
Рабочее объяснение:
Здесь мы будем использовать технику мультиплексирования, чтобы показать символы на модуле светодиодной матрицы 8x8. Итак, давайте подробно обсудим это мультиплексирование. Скажем, если мы хотим включить светодиод D10 в матрице, нам нужно запитать PIN14 модуля и заземлить PIN3 модуля. При этом загорится светодиод D10, как показано на рисунке ниже. Это также следует сначала проверить, чтобы MATRIX знала, что все в порядке.
Теперь, скажем, если мы хотим включить D1, нам нужно запитать PIN9 матрицы и заземлить PIN13. При этом загорится светодиод D1. Текущее направление в этом случае показано на рисунке ниже.
Теперь перейдем к сложной части: мы хотим одновременно включить и D1, и D10. Таким образом, мы должны запитать оба PIN9, PIN14 и заземлить оба PIN13, PIN3. Это включит светодиоды D1 и D10, но вместе с этим также включатся светодиоды D2 и D9. Это потому, что у них общие клеммы. Поэтому, если мы хотим включить светодиоды по диагонали, нам придется включать все светодиоды по пути. Это показано на рисунке ниже:
Чтобы избежать этой проблемы, мы используем метод, называемый мультиплексированием. Мы также обсудили эту технику мультиплексирования при взаимодействии светодиодной матрицы 8x8 с AVR, здесь мы снова объясняем. Этот же метод мультиплексирования также используется при прокрутке текста на светодиодной матрице 8x8 с Arduino и с микроконтроллером AVR.
Человеческий глаз не может уловить частоту более 30 Гц. То есть, если светодиод постоянно горит и гаснет с частотой 30 Гц или более. Глаз видит, что светодиод постоянно включен. Однако это не так, и светодиод будет постоянно включаться и выключаться. Этот метод называется мультиплексированием.
Скажем, например, мы хотим включить только светодиод D1 и светодиод D10, не включая D2 и D9. Хитрость в том, что сначала мы подадим питание только на светодиод D1, используя контакты 9 и 13, и подождем 1 мсек, а затем выключим его. Затем мы подадим питание на светодиод D10 с помощью PIN 14 и 3 и подождем 1 мсек, а затем выключим его. Цикл идет непрерывно с высокой частотой, и D1 и D10 будут быстро включаться и выключаться, и оба светодиода будут постоянно гореть нашему глазу. Означает, что мы подаем питание только на один ряд (светодиод) за раз, что исключает возможность включения других светодиодов в других рядах. Мы будем использовать эту технику, чтобы показать всех персонажей.
Мы можем лучше понять это на одном примере, например, если мы хотим отобразить «A» на матрице, как показано ниже:
Как было сказано, мы сразу же включим одну строку, При t = 0 м SEC, PIN09 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), в это время PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 заземлены (другие выводы COLUMN в это время ВЫСОКИЙ)
При t = 1 м SEC, PIN14 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 заземлены (другие выводы COLUMN в это время ВЫСОКОЕ))
При t = 2 м SEC, PIN08 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), в это время PIN13, PIN3, PIN15, PIN16 заземлены (другие выводы COLUMN в это время ВЫСОКИЙ)
При t = 3 м SEC, PIN12 установлен ВЫСОКИЙ (другие контакты ROW в это время НИЗКИЕ), в это время PIN13, PIN3, PIN15, PIN16 заземлены (другие контакты COLUMN в это время ВЫСОКИЙ)
При t = 4 м SEC, PIN01 установлен ВЫСОКИЙ (другие контакты ROW в это время НИЗКИЕ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 заземлены (другие контакты COLUMN в это время ВЫСОКОЕ))
При t = 5 м SEC, PIN07 установлен ВЫСОКИЙ (другие контакты ROW в это время НИЗКИЕ), PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 заземлены (другие контакты COLUMN в это время ВЫСОКОЕ))
При t = 6 м сек., PIN02 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), в это время PIN13, PIN3, PIN15, PIN16 заземлены (другие выводы COLUMN в это время ВЫСОКОЕ)
При t = 7 м SEC, PIN05 установлен ВЫСОКИЙ (другие выводы ROW в это время НИЗКИЕ), в это время PIN13, PIN3, PIN15, PIN16 заземлены (другие выводы COLUMN в это время ВЫСОКИЙ)
На этой скорости дисплей будет постоянно отображать символ «A», как показано на рисунке.
Программа Python для отображения символов на светодиодной матрице с использованием Raspberry Pi приведена ниже. Программа хорошо объясняется комментариями. Значения порта для каждого символа указаны в программе. Вы можете отобразить любые символы, которые захотите, просто изменив значения 'pinp' в 'циклах for' в данной программе. Также посмотрите демонстрационное видео ниже.