Обзор светодиодной матрицы 8×8 на MAX7219

Обзор светодиодной матрицы 8x8 на MAX7219

При проектировании различных устройств, часто необходимо отображать информацию на дисплее, таких как LCD1602, TFT и OLED, но бывает что необходимость в большом размере дисплеи и как правило они на порядок дороже. Наверное, лучшем решение, воспользоваться светодиодной матрицей 8 x 8, которая включает в себя 64 светодиода, а драйвер MAX7219 позволит управлять всеми ими используя всего 3 вывода, а так же позволяет подключать не сколько модулей в один большой дисплей.

Технический параметры

► Драйвер: MAX7219;
► Тип индикаторов 1088BS: общий катод;
► Количество светодиодов на индикаторе 1088BS: 64;
► Диаметр одного светодиода: 3 мм;
► Цвет светодиодов: красный, синий, зеленый;
► Интерфейс подключения матрицы: SPI;
► Напряжение питания: 5 В;
► Размер матрицы: 32 х 32 х 14 мм;

Общие сведения.

Модуль состоит из двух частей, снизу расположена печатная плата на которой установлена микросхема MAX7219 с небольшой электрическая обвязка, а сверху устанавливается светодиодная матрица 1088BS с общим катодом (32 мм x 32 мм x 8 мм). Матрица 1088BS содержит 16 штыревых выводов, 8 из которых отвечают за ряды, а другие 8 за столбцы, общее количество светодиодов 64 шт.

Обзор светодиодной матрицы 8x8 на MAX7219

Давайте подробнее рассмотрим MAX7219. Микросхема способна управлять 64 отдельными светодиодами, используя всего 3 провода для связи с контроллером Arduino, а так же, используя эти же провода подключить несколько MAX7219 в одну большую матрицу.

Обзор светодиодной матрицы 8x8 на MAX7219

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

Подключение светодиодной матрицы 8×8 на MAX7219 к Arduino

Необходимые детали:
► 
Arduino UNO R3 x 1 шт.
► Светодиодная матрицы 8×8 на MAX7219 x 1 шт.
► Провода DuPont, 2,54 мм, 20 см x 1 шт.

Подключение
В примере используем Arduino UNO R3 и светодиодная матрица на драйвере MAX7219. Подключение не сложное, необходимо пять проводов, первым делом подключаем вывод CLK (MAX7219 ) к выводу 13 (Arduino), вывод CS подключаем к выводу 9 (Arduino), вывод DIN подключаем к выводу 11 (Arduino , затем подключаем питание VCC к +5В и GND к GND. Так же, приведу схему подключения.

Обзор светодиодной матрицы 8x8 на MAX7219

Программа №1:
Для работы скетча необходимо библиотека «Adafruit_GFX.h» и «Max72xxPanel.h», который не входят в среду разработки IDE Arduino, дополнительно устанавливаем их, скачать можно в конце статьи.
В первый пример не сложный, будем управлять двумя светодиодами в матрице.

#include <SPI.h>                             // Подключаем библиотеку SPI
#include <Adafruit_GFX.h>                    // Подключаем библиотеку Adafruit_GFX
#include <Max72xxPanel.h>                    // Подключаем библиотеку Max72xxPanel

int pinCS = 9;                               // Указываем к какому выводу подключен контакт CS
int numberOfHorizontalDisplays = 1;          // Количество матриц по горизонтали
int numberOfVerticalDisplays = 1;            // Количество матриц по-вертикали

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

void setup() {
  matrix.setIntensity(10);                    // Задаем яркость от 0 до 15
  matrix.setRotation(3);                      // Направление текста 1,2,3,4  
}

void loop() {
    matrix.drawPixel(2, 2, HIGH);            // Включаем светодиод 
    matrix.write();                          // Вывод всех пикселей на матрицу
    delay(500);                              // Пауза
    matrix.drawPixel(5, 5, HIGH);            // Включаем светодиод 
    matrix.write();                          // Вывод всех пикселей на матрицу
    delay(500);                              // Пауза
    matrix.drawPixel(5, 5, LOW);             // Выключаем светодиод
    matrix.write();                          // Вывод всех пикселей на матрицу
    delay(500);                              // Пауза
    matrix.drawPixel(2, 2, LOW);             // Выключаем светодиод
    matrix.write();                          // Вывод всех пикселей на матрицу
    delay(500);                              // Пауза
    matrix.drawPixel(5, 5, LOW);             // Выключаем светодиод
    matrix.write();                          // Вывод всех пикселей на матрицу
    delay(500);                              // Пауза
}

 Скачать скетч

Обзор светодиодной матрицы 8x8 на MAX7219

Описание скетча:
Первым делом, мы подключаем библиотеки «SPI«, «Adafruit_GFX» и «Max72xxPanel«. Далее, мы указываем к какому выводу Arduino подключен контакт «int pinCS» в нашем случае это вывод 9, а так же указываем количество матриц по горизонтали «numberOfHorizontalDisplays» и по вертикали «numberOfVerticalDisplays«, затем передаем все эти данные.
В setup(), указываем яркость «matrix.setIntensity» от 0 до 15, задаем направление текста «matrix.setRotation«, возможные варианты 1, 2, 3 и 4.
В loop(), функцией «drawPixel«, мы указываем что нужно включить светодиод с координатами 2 x 2 и помощью функции «matrix.write()» выводим данные на матрицу.

Программа №2:
Теперь можно приступить ко второму примере, схему менять не нужно. В программной части, изменения коснулись только в функции void loop(), в примере отобразим картинку виде смайла.

#include <SPI.h>                             // Подключаем библиотеку SPI
#include <Adafruit_GFX.h>                    // Подключаем библиотеку Adafruit_GFX
#include <Max72xxPanel.h>                    // Подключаем библиотеку Max72xxPanel

int pinCS = 9;                               // Указываем к какому выводу подключен контакт CS
int numberOfHorizontalDisplays = 1;          // Количество матриц по горизонтали
int numberOfVerticalDisplays = 1;            // Количество матриц по-вертикали

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

void setup() {
  matrix.setIntensity(10);                    // Задаем яркость от 0 до 15
  matrix.setRotation(3);                      // Направление текста 1,2,3,4  
}
void loop() 
{
    const byte data[8] = {                    // Создаем массив "Смайл"
    0b00111100,                               //    ####   
    0b01000010,                               //   #    #
    0b10100101,                               //  # #  # #
    0b10000001,                               //  #      #
    0b10100101,                               //  # #  # #
    0b10011001,                               //  #  ##  #
    0b01000010,                               //   #    #
    0b00111100 };                             //    ####

matrix.fillScreen(LOW);                       // Обнуление матрицы
   
    for (int y = 0; y < 8; y++ ) {            // Передача массива
        for (int x = 0; x < 8; x++ ) {
           matrix.drawPixel(x, y, data[y] & (1<<x));
        }
    }
    matrix.write();                           // Вывод всех пикселей на матрицу
}

 Скачать скетч

Обзор светодиодной матрицы 8x8 на MAX7219

Описание скетча:
Так как программа изменилась только в функции loop(), ее и опишу, первое что мы делаем это создаем массив data.

    const byte data[8] = {                    
    0b00111100,                              
    0b01000010,                               
    0b10100101,                               
    0b10000001,                               
    0b10100101,                               
    0b10011001,                               
    0b01000010,                               
    0b00111100 };                             

Далее мы обнуляем дисплей и передаем данные с массива на дисплей, затем мы вызываем функцию write.

matrix.fillScreen(LOW);                       // Обнуление матрицы
   
    for (int y = 0; y < 8; y++ ) {            // Передача массива
        for (int x = 0; x < 8; x++ ) {
           matrix.drawPixel(x, y, data[y] & (1<<x));
        }
    }
    matrix.write();                           // Вывод всех пикселей на матрицу
}

Программа №3:
В третьем примере, подключим матрицу из шести дисплеев 8 x 8 и сделаем бегущий строку.

Обзор светодиодной матрицы 8x8 на MAX7219
#include <SPI.h>                             // Подключаем библиотеку SPI
#include <Adafruit_GFX.h>                    // Подключаем библиотеку Adafruit_GFX
#include <Max72xxPanel.h>                    // Подключаем библиотеку Max72xxPanel

int pinCS = 9;                               // Указываем к какому выводу подключен контакт CS
int numberOfHorizontalDisplays = 1;          // Количество матриц по горизонтали
int numberOfVerticalDisplays = 6;            // Количество матриц по-вертикали

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

String tape = "RobotChip";                    // Отображаемый текст
int wait = 50;                                // Скорость
int spacer = 1;                               // Расстояние между буквами
int width = 5 + spacer;                       // Размер шрифта

void setup() {
  matrix.setIntensity(5);                     // Задаем яркость от 0 до 15
  matrix.setRotation(3);                      // Направление текста 1,2,3,4  
}

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; 

    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);
  }
}

  Скачать скетч

Обзор светодиодной матрицы 8x8 на MAX7219

Ссылки
Библиотека Adafruit_GFX
Библиотека Max72xxPanel

Купить на Aliexpress
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
 Модуль светодиодной матрицы 8×8 на MAX7219 
  Комплект проводов DuPont, 2,54 мм, 20 см

Купить в Самаре и области
  Контроллер Arduino UNO R3 на CH340G
  Контроллер Arduino UNO R3 на Atmega16U2
  Модуль светодиодной матрицы 8×8 на MAX7219 
 Провода DuPont, 2,54 мм, 20 см

Вам может также понравиться...

комментариев 5

  1. Макс:

    Скажите пожалуйста как на основе этих примеров сделать не бегущую строку а бегущий массив. И например что бы он при этом еще бегал или останавливался на какое то время. То есть нужно выполнить определенную анимацию

  2. Сергей:

    Библиотека Max72xxPanel не работает в Arduino IDE 1.8.15
    Выдаёт сообщение при компиляции:
    #
    Adafruit_SPIDevice.cpp:79:19: error: ‘nullptr’ was not declared in this scope
    #

  3. можете подсказать как выводить кирилицу?

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

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