Подключение светодиодной матрицы 8x8 к Raspberry Pi

Ранее на нашем сайте мы уже рассматривали подключение к плате Raspberry Pi таких базовых устройств как светодиод, кнопка, ЖК дисплей, двигатель постоянного тока, серводвигатель, шаговый двигатель, АЦП модуль, регистр сдвига и т.д.. В этой же статье мы рассмотрим подключение к плате Raspberry Pi модуля светодиодной матрицы 8x8 и будем управлять отображением символов на этой матрице с помощью программы на Python. Ранее на нашем сайте мы уже рассматривали подключение подобной матрицы к плате Arduino и микроконтроллеру AVR.

Внешний вид подключения светодиодной матрицы 8x8 к Raspberry Pi

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Светодиодная матрица 8х8 (купить на AliExpress).
  3. Резистор 1 кОм – 8 шт. (купить на AliExpress).
  4. Конденсатор 1000 мкФ, соединенный по питанию (купить на AliExpress).
  5. Светодиод.
  6. Макетная плата.
  7. Соединительные провода.

Модуль светодиодной матрицы 8x8

Модуль светодиодной матрицы 8x8 содержит 64 светодиода, упорядоченных в форме матрицы, поэтому эта структура и называется светодиодной матрицей. Подобные модули доступны в различных размерах и цветовых решениях. Распиновка этого модуля показана на рисунке ниже. Помните о том, что контакты модуля светодиодной матрицы должны быть пронумерованы в точности так, как показано на представленном рисунке, чтобы не возникало ошибок в работе модуля.

Внешний вид светодиодной матрицы 8х8

У модуля светодиодной матрицы 8+8=16 выводов (контактов). Таким образом, мы имеем 8 общих положительных выводов и 8 общих отрицательных выводов, которые образуют 8 строк и 8 столбцов матрицы. Схему соединений модуля светодиодной матрицы 8x8 можно представить следующим рисунком:

Схема соединений модуля светодиодной матрицы 8x8

То есть для 8 строк мы имеем 8 общих положительных выводов (9, 14, 8, 12, 17, 2, 5). Если рассматривать первый столбец, то светодиоды с D1 по D8 имеют общий положительный вывод - PIN9. Если мы хотим зажечь один или светодиоды в этой строке, то на PIN9 необходимо будет подать +3.3v.

Аналогично, для 8 столбцов мы имеем 8 общих отрицательных выводов (13, 3, 4, 10, 6, 11, 15, 16). Чтобы зажечь один или несколько светодиодов в конкретном столбце, необходимо на общий отрицательный вывод этого столбца подать напряжение низкого уровня.

Схема проекта

Схема подключения светодиодной матрицы 8x8 к плате Raspberry Pi представлена на следующем рисунке.

Схема подключения светодиодной матрицы 8x8 к плате Raspberry PiВ схеме необходимо сделать соединения между платой Raspberry Pi и светодиодной матрицей, показанные в следующей таблице.

Контакт светодиодной матрицы Функция Контакт платы Raspberry Pi
13 POSITIVE0 GPIO12
3 POSITIVE1 GPIO22
4 POSITIVE2 GPIO27
10 POSITIVE3 GPIO25
6 POSITIVE4 GPIO17
11 POSITIVE5 GPIO24
15 POSITIVE6 GPIO23
16 POSITIVE7 GPIO18
9 NEGATIVE0 GPIO21
14 NEGATIVE1 GPIO20
8 NEGATIVE2 GPIO26
12 NEGATIVE3 GPIO16
1 NEGATIVE4 GPIO19
7 NEGATIVE5 GPIO13
2 NEGATIVE6 GPIO6
5 NEGATIVE7 GPIO5

Далее рассмотрим принципы работы проекта.

Объяснение работы проекта

В нашем проекте мы будем использовать технологию мультиплексирования чтобы показывать различные символы на светодиодной матрице 8x8. Допустим, к примеру, нам необходимо зажечь светодиод D10 в матрице. Для этого необходимо подать напряжение высокого уровня на PIN14 матрицы и напряжение низкого уровня на PIN3 как показано на следующем рисунке.

Включаем светодиод D10 в светодиодной матрице

А если мы хотим зажечь светодиод D1, то нам необходимо будет подать напряжение высокого уровня на PIN9 матрицы и напряжение низкого уровня на PIN13 как показано на следующем рисунке.

Включаем светодиод D1 в светодиодной матрице

Теперь, допустим, что нам необходимо одновременно зажечь светодиоды D1 и D10. Для этого нам необходимо подать напряжение высокого уровня на PIN9 и PIN14 матрицы и напряжение низкого уровня на PIN13 и PIN3. Светодиоды D1 и D10 при этом зажгутся, однако при этом начнут светиться и светодиоды D2 и D9 поскольку они имеют общие выводы со светодиодами D1 и D10. Эта ситуация показана на следующем рисунке.

Включаем светодиоды D1 и D10 в светодиодной матрице

Чтобы предотвратить эту проблему, мы будем использовать так называемую технологию мультиплексирования. Подробно суть этой технологии рассмотрена в статье про подключение светодиодной матрицы 8x8 к микроконтроллеру AVR. Также эта же технология использована в статье про скроллинг текста на светодиодной матрице 8x8 с помощью микроконтроллера AVR.

Суть технологии мультиплексирования заключается в следующем. Человеческий глаз не может различить частоту более 30 Гц. То есть если светодиод будет включаться и выключаться с частотой 30 Гц или больше, то человеческий глаз будет воспринимать его непрерывно горящим.

К примеру, мы хотим включить только светодиоды D1 и D10 в матрице, чтобы при этом не зажглись светодиоды D2 и D9. Для этого мы можем сначала подать соответствующие уровни напряжения на контакты PIN 9 и 13 чтобы зажечь светодиод D1. Затем подождать 1 мсек и выключить светодиод D1. После этого мы подадим соответствующие уровни напряжения на контакты PIN 14 и 3 чтобы зажечь светодиод D10. Затем подождать 1 мсек и выключить светодиод D10. Этот цикл будет продолжаться непрерывно, в котором светодиоды D1 и D10 будут с высокой частотой включаться и выключаться, поэтому человеческий глаз будет воспринимать их непрерывно горящими. Аналогичным образом можно поступать если мы хотим зажечь любые другие светодиоды в матрице.

К примеру, мы хотим отобразить на светодиодной матрице букву “A” как показано на следующем рисунке. Для этого нам необходимо выполнить следующую последовательность действий.

Отображение на светодиодной матрице буквы “A”

В момент времени t=0 мс (миллисекунд) на PIN09 устанавливается HIGH (на остальные выводы данного ряда в это время подается LOW), на контакты PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 подается земля (низкий уровень) (на остальные контакты столбцов в это время подается уровень HIGH).

В момент времени t=1 мс на PIN14 устанавливается HIGH (на остальные выводы данного ряда в это время подается LOW), на контакты PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 подается земля (на остальные контакты столбцов в это время подается уровень HIGH).

В момент времени t=2 мс на PIN08 устанавливается HIGH (на остальные выводы данного ряда в это время подается LOW), на контакты PIN13, PIN3, PIN15, PIN16 подается земля (на остальные контакты столбцов в это время подается уровень HIGH).

В момент времени t=3 мс на PIN12 устанавливается HIGH (на остальные выводы данного ряда в это время подается LOW), на контакты PIN13, PIN3, PIN15, PIN16 подается земля (на остальные контакты столбцов в это время подается уровень HIGH).

В момент времени t=4 мс на PIN01 устанавливается HIGH (на остальные выводы данного ряда в это время подается LOW), на контакты PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 подается земля (на остальные контакты столбцов в это время подается уровень HIGH).

В момент времени t=5 мс на PIN07 устанавливается HIGH (на остальные выводы данного ряда в это время подается LOW), на контакты PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 подается земля (на остальные контакты столбцов в это время подается уровень HIGH).

В момент времени t=6 мс на PIN02 устанавливается HIGH (на остальные выводы данного ряда в это время подается LOW), на контакты PIN13, PIN3, PIN15, PIN16 подается земля (на остальные контакты столбцов в это время подается уровень HIGH).

В момент времени t=7 мс на PIN05 устанавливается HIGH (на остальные выводы данного ряда в это время подается LOW), на контакты PIN13, PIN3, PIN15, PIN16 подается земля (на остальные контакты столбцов в это время подается уровень HIGH).

В результате этих операций человеческий глаз будет видеть на светодиодной матрице непрерывно горящий символ “A” как показано на рисунке выше.

Исходный код программы на Python

В тексте программы имеются комментарии, поясняющие смысл отдельных команд. Значения портов для показа каждого символа приведены в программе. Вы можете выводить любые символы на светодиодной матрице просто поменяв значения переменных ‘pinp’ в соответствующих циклах в приведенной программе. Более подробно работу проекта можно посмотреть на видео, приведенном в конце статьи.

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
36 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *