Подключение MAX7219 к Arduino

26-02-2020, 17:36 0 комментариев
Сегодня речь пойдет о том, как подключить модуль MAX7219 к Ардуино, и что собственно он собой представляет. Начнем с последнего пункта. Речь идет о функциональной микросхеме-драйвере светодиодных матриц, которая позволяет сократить число используемых пинов до трех и получить возможность собирать большие бегущие строки текста!

Нуждаетесь в выводе текста на полноценный экран ∕ табло ∕ собственно спроектированные часы? Хотите сэкономить средства, но не знаете как? Задаетесь вопросом, где отыскать аж 64 вывода для управления? Ответ один - приобретите светодиодную LED матрицу MAX7219 8х8!

Матричный модуль имеет следующие базовые технические характеристики:
  • индивидуальное управление сегментами;
  • режимы анализа данных "с декодированием" или "без декодирования";
  • потребление тока 150 мкА (в "спящем" режиме);
  • цифровая и аналоговая регулировка яркости;
  • SPI, QSPI, MICROWIRE последовательные интерфейсы;
  • напряжение питания: от 4 до 5 В;
  • подача тока для всех светодиодов с помощью только одного резистора.

Подключение MAX7219 к Arduino

Рассмотрим принципиальную схему сборки:

В ней мы использовали такие компоненты: плату расширения Arduino Uno, матрицу, соединительные провода, USB-кабель для соединения с ПК.
К слову, одновременно можно подключить до восьми матриц. Круто, не так ли?

Для управления микросхемой понадобятся специализированные библиотеки. Тут есть 2 варианта:
Добавляем их, затем заливаем небольшой скетч для тестирования работоспособности, например:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>

int pinCS = 9;
int numberOfHorizontalDisplays = 1; // количество матриц по-горизонтали
int numberOfVerticalDisplays = 1; // количество матриц по-вертикали

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

void setup() {
    matrix.setIntensity(4); // яркость от 0 до 15
}

void loop() {
    matrix.drawPixel(3, 4, HIGH); // зажигаем пиксель с координатами {3,4}
    matrix.write(); // вывод всех пикселей на матрицу
    delay(300);
    matrix.drawPixel(3, 4, LOW); // гасим пиксель
    matrix.write();
    delay(300);
}
Можно пойти еще дальше. Существует небольшая программка - бегущая строка на MAX7219 (название говорит само за себя). Правда, для ее осуществления придется создать цепочку матриц, см. скриншот:
Прошивка с кодами в этом случае будет выглядеть так:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>

int pinCS = 9;
int numberOfHorizontalDisplays = 6; // теперь у нас по-горизонтали 6 матриц
int numberOfVerticalDisplays = 1; // а по-вертикали, по-прежнему, одна

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

String tape = "RobotClass.ru"; // текст, который будет плыть
int wait = 20; // время между крайними перемещениями букв

int spacer = 1; // расстояние между буквами
int width = 5 + spacer; // размер шрифта

void setup() {
    matrix.setIntensity(7); // яркость
}

void loop() {
    for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) {
        matrix.fillScreen(LOW);

        int letter = i / width;
        int x = (matrix.width() - 1) - i % width;
        int y = (matrix.height() - 8) / 2; // center the text vertically

        while ( x + width - spacer >= 0 && letter >= 0 ) {
            if ( letter < tape.length() ) {
                matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
            }
            letter--;
            x -= width;
        }
        matrix.write();
        delay(wait);
    }
}
Если нужен русский шрифт, придется немного постараться. Следует русифицировать библиотеку AdafruitGFX. Для этого следует извлечь из архива русский фонт (glcdfont.c ) и «закинуть» его в папку библиотеки AdafruitGFX-master. Остальные файлы необходимо перекодировать в кодировку фонта 1251 (функция utf8rus). 

Светодиоды и светодиодные индикаторы - вполне достойные устройства отображения информации с неплохими преимуществами. Не превышайте максимально допустимые температурные показатели кристалла, max протекающий ток и обратное напряжение, используйте специализированные светодиодные драйверы типа MAX7219 - тогда все у вас получится!
Поделись в социальных сетях:
О авторе
Калугин Антон

Программист микроконтроллеров с 8-ми летним стажем, работал в таких компаниях как IBM, ASUS, Microsoft.

В комментариях с радостью отвечу на ваши вопросы.

Все статьи автора
Похожие новости

Сегодня поговорим о том, как воплотить в жизнь подключение FPM10A к Arduino, что это за модуль, где используется, каковы параметры его работы и т.д. Речь идет...

В новом информационном обзоре рассматриваем GSM модуль SIM800L к Arduino. Почему выбрано именно это устройство? Во-первых, оно достаточно известно и популярно...

В этой статье мы рассмотрим подключение ADS1115 к Ардуино. Речь идет о 16-битном аналого-цифровом преобразователе, оснащенном 4 входами непосредственно для...

На повестке дня - подключение AM2320 к Ардуино. Тема очень занятная по той простой причине, что подобные датчики являются просто «мастхевом» для современных...

Модуль энкодер KY-040 является электромеханическим устройством, а точнее - датчиком угла поворота и вращения оси различных девайсов. Непосредственно сам прибор...

Оставить комментарий