Подключение светодиодного матричного дисплея MAX7219 к Arduino


Когда вы хотите добавить дисплей в какой либо свой электронный проект, то у вас всегда есть широкий выбор по поводу того какой дисплей выбрать: OLED, ЖК 16x2, семисегментный или даже E-Paper/электронные чернила. Но есть еще один недорогой вид дисплея, который почему то значительно реже освещается в сети интернет – это светодиодный матричный дисплей (Dot Matrix Display). И в данной статье мы рассмотрим подключение светодиодного матричного дисплея MAX7219 к плате Arduino.

Внешний вид проекта подключения светодиодного матричного дисплея MAX7219 к Arduino

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

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

Обзор модуля светодиодного матричного дисплея 8x8 MAX7219

Существует все версии модуля светодиодного матричного дисплея 8x8 MAX7219 (MAX7219 8x8 LED Matrix Display module) – универсальный модуль (generic) и FC-16. Обе эти версии будут рассмотрены в нашей статье.

Светодиодный матричный дисплей

Модуль светодиодного матричного дисплея MAX7219 состоит из 64 светодиодов, объединенных в форме матрицы 8х8, благодаря чему им удобно управлять с помощью техники мультиплексирования. Обычный монохромный матричный дисплей 8×8 имеет 16 контактов, 8 для строк и 8 для столбцов. Его внешний вид показан на следующем рисунке.

Внешний вид модуля светодиодного матричного дисплея MAX7219

Чип драйвера светодиодного дисплея MAX7219

Чип MAX7219 – это микросхема драйвера светодиодных дисплеев с общим катодом, которая позволяет подключать к микропроцессорам различные типы светодиодных дисплеев, начиная от семисегментных цифровых и до 8-символьных, в том числе и графические дисплеи из 64 индивидуальных светодиодов. Микросхема MAX7219 совместима с интерфейсами SPI, QSPI и MICROWIRE и имеет набор драйверов для уменьшения электромагнитных излучений.

Внешний вид микросхемы MAX7219

Наиболее частой проблемой при использовании технологии мультиплексирования является то, что при ее применении микроконтроллер будет постоянно занят обновлением состояния дисплея и у него не будет свободных ресурсов для выполнения других задач. Но при использовании драйвера MAX7219 вам не стоит беспокоиться об этой проблеме поскольку большинство этих задач данный драйвер возьмет на себя. Вам необходимо будет всего лишь передавать необходимые последовательные данные по интерфейсу SPI.

MAX7219 может полностью контролировать 64 индивидуальных светодиода и одновременно он может обновлять состояние дисплея с частотой до 800 Гц. Также он позволяет управлять и яркостью свечения светодиодов дисплея – и это он может делать не прекращая выполнение других задач.

Установка яркости дисплея с помощью драйвера MAX7219

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

Резистор для настройки яркости модуля MAX7219

Данный резистор отвечает за верхний предел тока и, таким образом, он ограничивает общую яркость светодиодов дисплея. В следующей таблице представлены номиналы этого резистора, которые вам необходимо использовать в соответствии с напряжением и прямым током для вашей светодиодной матрицы, то есть, к примеру, если у вас светодиоды на 2.5V 10 mA, то значение сопротивления данного резистора должно быть равно 59,3 кОм.

Возможные номиналы резистора для настройки яркости модуля MAX7219

Далее в статье мы рассмотрим и программное управление яркостью свечения светодиодов дисплея.

Распиновка модуля светодиодного матричного дисплея MAX7219

Распиновка модуля светодиодного матричного дисплея MAX7219 показана на рисунке ниже. Он имеет 5 существенных контактов: VCC, GND, DIN, CS и SCK. Все контакты модуля дисплея цифровые, за исключением VCC и Ground. Модуль может работать только от напряжения 5V. Если вы используете его в режиме максимальной яркости, то вы можете подать до 1A тока для питания светодиодов дисплея.

Распиновка модуля светодиодного матричного дисплея MAX7219

Назначение контактов:

VCC подключается к источнику питания с напряжением 5V. Но имейте ввиду, что модуль дисплея потребляет 1A тока, поэтому рекомендуется использовать внешний источник питания 5V.

GND – общий провод (земля) модуля дисплея, его можно подключить к любому контакту микроконтроллера.

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

CS/LOAD – контакт выбора чипа (chip select pin) модуля дисплея, можно подключить к любому цифровому контакту платы Arduino.

CLK – контакт синхронизации модуля дисплея, можно подключить к любому цифровому контакту платы Arduino.

Как работает светодиодный матричный дисплей 8x8

Принцип работы светодиодного матричного дисплея основан на использовании технологии мультиплексирования. При данной технологии каждый столбец дисплея запитывается на определенный период времени и переключение между столбцами происходит так быстро (несколько тысяч раз в секунду) что человеческий глаз воспринимает дисплей непрерывно горящим. Наглядно этот процесс показан на следующей gif картинке.

Компоненты светодиодного матричного дисплея MAX7219

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

Компоненты светодиодного матричного дисплея MAX7219

Кроме самой микросхемы MAX7219 на печатной плате модуля присутствуют два коннектора типа "папа" (male headers) – один для ввода данных, а другой для вывода. Также модуль содержит фильтрующий и развязывающий конденсаторы. И, конечно же, на плате модуля вы можете увидеть токоограничивающий резистор, с помощью которого можно регулировать яркость свечения светодиодов дисплея.

Наиболее часто задаваемые вопросы про модуль светодиодного матричного дисплея MAX7219

Какое назначение у контакта 18 модуля MAX7219?
Данный контакт предназначен для установки выходного тока модуля при помощи подключения к данному контакту резистора. Второй конец резистора подключен к земле.

Как можно управлять матричным дисплеем MAX7219 с помощью WIFI модуля ESP8266?
Очень просто. Поскольку микросхема MAX7219 имеет возможность обмена данными по протоколам SPI и QSPI, то ее можно непосредственно подключить к SPI контактам модуля ESP8266.

Схема модуля светодиодного матричного дисплея MAX7219

Схема модуля светодиодного матричного дисплея MAX7219Как вы можете видеть, в ней нет ничего сложного. Линия управления сегментами и цифрами подключена к микросхеме MAX7219. Фильтрующий и развязывающий конденсаторы подключены к линии питания поскольку они осуществляют фильтрацию выбросов напряжения на этой линии. Токоограничивающий резистор необходимо выставить пользователю для регулировки яркости свечения светодиодов дисплея.

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

Схема подключения светодиодного матричного дисплея MAX7219 к плате Arduino представлена на следующем рисунке.

Схема подключения светодиодного матричного дисплея MAX7219 к плате ArduinoЕсли у вас модуль дисплея FC-16, то вам необходимо просто подключить 4 провода к Arduino и подключить к модулю внешний источник питания 5V 1A. После этого все параметры работы дисплея можно будет настраивать в программе.

Подключение одиночного модуля MAX7219 осуществить немного сложнее поскольку в этом случае вам необходимо подключить контакт dout модуля к контакту Din другого модуля, а контакты clock и data подключить к плате Arduino и другим модулям.

Объяснение программы для Arduino

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

В коде программы мы используем шину интерфейса SPI (более подробно об использовании данного интерфейса в плате Arduino вы можете прочитать в этой статье) вместе с линией выбора чипа. Для корректного функционирования программы необходимо установить библиотеки MD_MAX72XX и MD_Parolaby от marco. Обе эти библиотеки можно установить с помощью менеджера библиотек Arduino IDE.

Для модуля MAX7219 универсального типа (одиночный модуль)

Первым делом в коде программы подключим все необходимые библиотеки, зададим тип аппаратного обеспечения, укажем число модулей и контакт выбора чипа (chip select pin).

Далее создадим объект библиотеки md parola.

В функции setup() инициализируем объект для работы с дисплеем с помощью метода begin. Затем установим яркость дисплея и очистим его экран.

В функции void loop() зададим выравнивание, выведем символ на дисплей и добавим задержку 1000 мс. Это мы сделаем для всех символов, которые хотим вывести на экран дисплея. В нашем случае мы выведем на экран дисплея текст "circuit digest".

На этом написание программы для одиночного модуля мы закончили, перейдем к коду для модуля типа FC16.

Для модуля MAX7219 типа FC16

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

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

Далее необходимо изменить число используемых устройств (MAX_DEVICES) на 4 чтобы код программы мог понять что мы работаем с 4 дисплеями.

Затем в функции setup необходимо добавить еще одну дополнительную строку:

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

И, наконец, в функции loop() необходимо будет вызвать функции displayAnimate() и displayReset().

Тестирование работы проекта

На следующем видео показано тестирование работы модуля MAX7219. Поскольку мы тестируем два типа дисплея, то кодов программы у нас будет тоже два. Сначала мы загрузим в плату Arduino код программы для одиночного модуля MAX7219, который будет выводить на него фразу CIRCUIT DIGEST, по одной букве в каждый момент времени.

Для модуля FC-16 мы будем использовать пример hello из библиотеки и делать дисплей со скроллингом как показано на следующем видео.

Исходный код программы (скетча)

Источник статьи

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

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

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