Модуль светодиодной матрицы
Описание
Модуль светодиодной матрицы предназначен для отображения символьной и графической информации. В основе модуля лежит светодиодная матрица из 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. Любовь
Описание В примере демонстрируется формирование изображения сердца и мигание им. Также показано как зажигать любой светодиод матрицы и помигать им.
Что нужно
Что нужно | Сколько |
---|---|
Контроллер Smart Uno | 1 |
Модуль светодиодной матрицы | 1 |
Провода папа-мама | 5 |
Схема подключения
Скетч для загрузки
#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 по буквам.
Что нужно
Что нужно | Сколько |
---|---|
Контроллер Smart Uno | 1 |
Модуль светодиодной матрицы | 1 |
Провода папа-мама | 5 |
Схема подключения
Скетч для загрузки
#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. УмныеЭлементы
Описание В примере демонстрируется вывод надписи УмныеЭлементы по буквам.
Что нужно
Что нужно | Сколько |
---|---|
Контроллер Smart Uno | 1 |
Модуль светодиодной матрицы | 1 |
Провода папа-мама | 5 |
Схема подключения
Скетч для загрузки
#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();
}