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

Описание

Модуль светодиодной матрицы предназначен для отображения символьной и графической информации. В основе модуля лежит светодиодная матрица из 64 красных 3 мм светодиодов. В зависимости от того какое количество светодиодов и в какой последовательности загорается - можно вывести практически любую информацию: от простейших символов, букв и цифр, до более сложных графических элементов, в том числе динамических. Особенностью светодиодных матриц, в отличие от дисплеев, является низкий уровень энергопотребления (максимально 70 мА при одновременном использовании всех светодиодов).

Для управления матрицей используется микросхема MAX7219. С ее помощью для управления 64 светодиодами потребуется всего три цифровых вывода контроллера. Кроме того модули можно объединять друг с другом используя все те же 3 вывода контроллера. Объединив несколько модулей - можно получить светодиодную панель или бегущую строку практически любых размеров.

Для удобства крепления на плате предусмотрены 4 монтажных отверстия под винты М3.

Технические характеристики

  • Рабочее напряжение: 3,3-5 В
  • Максимальный потребляемый ток: 70 мА
  • Размер матрицы: 32х32 мм
  • Диаметр светодиода: 3 мм

Размеры

  • Габаритные размеры Д х Ш х В: 46 х 33 х 9 мм

Подключение

Модуль индикатора подключается к контроллеру с помощью следующих выводов:

  • + - соединяется с пином питания контроллера (5V или 3,3V)
  • - - соединяется с пином контроллера GND (земля)
  • CLK - соединяется с цифровым пином контроллера
  • LD - соединяется с цифровым пином контроллера
  • DIN - соединяется с цифровым пином контроллера
  • DO - предназначен для соединения нескольких модулей друг с другом и подключается к выводу DIN следующего модуля

Файлы для загрузки

Буквы в шестнадцатиричном представлении

Для более удобного представления букв на матрице существует уже готовый алфавит, которым вы можете воспользоваться для своих проектов. Ниже представлены шеснадцатеричные изображения букв алфавита. Смотрите примеры 2 и 3, как ими воспользоваться.

Список символов и их представления (латинский алфавит)

Список символов и их представления (русский алфавит)

Примеры подключения и использования

Пример 1. Любовь

Описание В примере демонстрируется формирование изображения сердца и мигание им. Также показано как зажигать любой светодиод матрицы и помигать им.

Что нужно

Схема подключения

Скетч для загрузки

#include "LedControl.h" // подключение библиотеки для работы с дисплеем
 
/*
 * Создание объекта для работы с дисплеем с параметрами:
 * - вывод 12 - вывод DIN
 * - вывод 11 - вывод CLK
 * - вывод 10 - вывод LD
 */
LedControl matrix = LedControl(12, 11, 10); 
 
unsigned long delaytime=250; // время ожидания между выводом символов на дисплей
 
void setup() {
  /*
   * При старте микросхема MAX7219 находится в режиме
   * пониженного энергопотребления,
   * поэтому первым делом нам нужно вывести её 
   * из этого режима.
   */
  matrix.shutdown(0,false);
  matrix.setIntensity(0,8); // установим яркость дисплея на 8 - среднее значение (возможно установить от 0 до 15)
  matrix.clearDisplay(0); // очистка дисплея
}
 
 
/*
 * Эта функция зажигает все светодиоды матрицы поочерёдно,
 * мигая каждым следующим перед тем как его зажечь.
*/
void single() {
  for (int row = 0; row < 8; row++) { // цикл по строкам
    for (int col = 0; col < 8; col++) { // цикл по колонкам
      delay(delaytime); // задержка
      matrix.setLed(0, row, col, true); // зажечь ореденой светодиод
      delay(delaytime); // задержка
      for (int i = 0; i < 3; i++) { // три раза мигунть и оставить включенным светодиод
        matrix.setLed(0, row, col, false);
        delay(delaytime);
        matrix.setLed(0, row, col, true);
        delay(delaytime);
      }
    }
  }
}
 
/*
 * Функция отображает переданную матрицу 
 * светодиодов 8 * 8
 */
void display_matrix(byte matr[8][8]) {
 
  for(int col = 0; col < 8; col++)  // цикл по колонкам
  {  
    for(int row = 0; row < 8; row++)  // цикл по строкам
    {  
        matrix.setLed(0, row, col, matr[row][col]); // отобразить статус светодиода
    }  
    delay(1);  // задержка перед очередной колонкой
  }  
  delay(delaytime); // задержкать выведенное изображение
  matrix.clearDisplay(0); // очистить дисплей
}
 
/*
 * Функция мигает символом сердца на дисплее
 */
void love() {
 
  byte biglove[8][8] =     // изображение большого сердца
  {
    0, 0, 0, 0, 0, 0, 0, 0,
    0, 1, 1, 0, 0, 1, 1, 0,
    1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1,
    0, 1, 1, 1, 1, 1, 1, 0,
    0, 0, 1, 1, 1, 1, 0, 0,
    0, 0, 0, 1, 1, 0, 0, 0,
  };
 
  byte smalllove[8][8] =      // изображение маленького сердца
  {
    0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 1, 0, 0, 1, 0, 0,
    0, 1, 1, 1, 1, 1, 1, 0,
    0, 1, 1, 1, 1, 1, 1, 0,
    0, 0, 1, 1, 1, 1, 0, 0,
    0, 0, 0, 1, 1, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0,
  };
 
  for (int i = 0; i < 10; i++) { // поочередно вывести изображение сердец
    display_matrix(biglove);
    display_matrix(smalllove);
  }
}
 
void loop() {
  love(); // помигать сердцем
  single(); // поочередно зажечь все точки на дисплее
}

Пример 2. SmartElements

Описание В примере демонстрируется вывод надписи SmartElements по буквам.

Что нужно

Схема подключения

Скетч для загрузки

#include "LedControl.h" // подключение библиотеки для работы с дисплеем
 
/*
   Создание объекта для работы с дисплеем с параметрами:
   - вывод 12 - вывод DIN
   - вывод 11 - вывод CLK
   - вывод 10 - вывод LD
*/
LedControl matrix = LedControl(12, 11, 10);
 
unsigned long delaytime = 500; // время ожидания между выводом символов на дисплей
 
const uint64_t SMARTELEMENTS[] = {
  0x3c66603c06663c00, //S
  0xd6d6feeec6000000, //m
  0x7c667c603c000000, //a
  0x060666663e000000, //r
  0x1818187e18180000, //t
  0x7e06063e06067e00, //E
  0x1818181818181800, //l
  0x3c067e663c000000, //e
  0xd6d6feeec6000000, //m
  0x3c067e663c000000, //e
  0x6666667e3e000000, //n
  0x1818187e18180000, //t
  0x3e403c027c000000, //s
  0x0000000000000000  //пустое значение
};
 
 
void setup() {
  /*
     При старте микросхема MAX7219 находится в режиме
     пониженного энергопотребления,
     поэтому первым делом нам нужно вывести её
     из этого режима.
  */
  matrix.shutdown(0, false);
  matrix.setIntensity(0, 8); // установим яркость дисплея на 8 - среднее значение (возможно установить от 0 до 15)
  matrix.clearDisplay(0); // очистка дисплея
}
 
/*
 * Функция отображает шестнадцатиричное приедставление
 * на светодиодной матрице
*/
void displayImage(uint64_t image) {
 
  for (int i = 0; i < 8; i++) {
    byte row = (image >> i * 8) & 0xFF;
    for (int j = 0; j < 8; j++) {
      matrix.setLed(0, i, j, bitRead(row, j));
    }
  }
 
}
 
/*
 * Функция отображает символы из массива 
 */
void display_SmartElements() {
  int smel_len = sizeof(SMARTELEMENTS) / 8;
 
  for (int i = 0; i < smel_len; i++) {
    displayImage(SMARTELEMENTS[i]);
    delay(delaytime);
  }
 
}
 
void loop() {
  display_SmartElements();
}

Пример 3. УмныеЭлементы

Описание В примере демонстрируется вывод надписи УмныеЭлементы по буквам.

Что нужно

Схема подключения

Скетч для загрузки

#include "LedControl.h" // подключение библиотеки для работы с дисплеем
 
/*
   Создание объекта для работы с дисплеем с параметрами:
   - вывод 12 - вывод DIN
   - вывод 11 - вывод CLK
   - вывод 10 - вывод LD
*/
LedControl matrix = LedControl(12, 11, 10);
 
unsigned long delaytime = 500; // время ожидания между выводом символов на дисплей
 
const uint64_t SMARTELEMENTS[] = {
  0x3c66607c66666600, //У
  0xd6d6feeec6000000, //м
  0x667e666666000000, //н
  0xcfdbdbcfc3c30000, //ы
  0x3c067e663c000000, //е
  0x3c66607c60663c00, //Э
  0x6666667c78000000, //л
  0x3c067e663c000000, //е
  0xd6d6feeec6000000, //м
  0x3c067e663c000000, //е
  0x667e666666000000, //н
  0x181818187e000000, //т
  0xcfdbdbcfc3c30000, //ы
  0x0000000000000000  //пустое значение
};
 
 
void setup() {
  /*
     При старте микросхема MAX7219 находится в режиме
     пониженного энергопотребления,
     поэтому первым делом нам нужно вывести её
     из этого режима.
  */
  matrix.shutdown(0, false);
  matrix.setIntensity(0, 8); // установим яркость дисплея на 8 - среднее значение (возможно установить от 0 до 15)
  matrix.clearDisplay(0); // очистка дисплея
}
 
/*
 * Функция отображает шестнадцатиричное приедставление
 * на светодиодной матрице
*/
void displayImage(uint64_t image) {
 
  for (int i = 0; i < 8; i++) {
    byte row = (image >> i * 8) & 0xFF;
    for (int j = 0; j < 8; j++) {
      matrix.setLed(0, i, j, bitRead(row, j));
    }
  }
 
}
 
/*
 * Функция отображает символы из массива 
 */
void display_SmartElements() {
  int smel_len = sizeof(SMARTELEMENTS) / 8;
 
  for (int i = 0; i < smel_len; i++) {
    displayImage(SMARTELEMENTS[i]);
    delay(delaytime);
  }
 
}
 
void loop() {
  display_SmartElements();
}