Урок 19: 8x8 Светодиодная Матрица
1. Зачем нужна светодиодная матрица

8x8 Светодиодная матрица
Светодиодная матрица может удовлетворить потребности различных приложений и поэтому имеет широкие перспективы развития. Благодаря низковольтной развертке, светодиодная матрица имеет ряд преимуществ, таких как экономия энергии, долгий срок службы, низкая стоимость, высокая яркость, широкий угол обзора, дальность видимости, водонепроницаемость и множество спецификаций. В этом проекте мы проведем эксперимент со светодиодной матрицей, чтобы на собственном опыте ощутить ее прелести.
2. Необходимое оборудование
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
8x8 Точечная Матрица |
8 |
Резистор 220 Ом |
1 |
Макетная плата (breadboard) |
1 |
USB Кабель |
— |
Несколько перемычек |
3. Принцип работы
Светодиодный драйвер MAX7219 можно использовать для управления 7-сегментными дисплеями до 8 цифр, гистограммными дисплеями или 64 отдельными светодиодами. Драйвер взаимодействует с Arduino через SPI, поэтому для управления дисплеем вам нужно всего три провода.
Поскольку MAX7219 может управлять максимум 64 светодиодами, максимальный размер матричного дисплея, который он может управлять, составляет 8×8 пикселей. Однако вы можете объединить несколько драйверов и матриц в единую цепочку и легко управлять дисплеями гораздо большего размера, такими как 8×32, 8×64 или даже больше. Тем не менее, вам нужно всего три провода для управления всеми микросхемами, поэтому вам понадобится очень мало контактов ввода-вывода Arduino.
Примечание
Вы можете нарисовать свой дизайн и вставить его в код, изменяя массивы байтов.
4. Схема подключения

DIN на 12 пин Arduino
CLK на 11 пин Arduino
CS на 10 пин Arduino
5. Пример кода
//MAX7219 https://github.com/wayoda/LedControl
#include "LedControl.h"
#include "binary.h"
LedControl lc = LedControl(12, 11, 10, 1);
unsigned long delaytime = 1000;
byte zero_f[8] = { 0b00111100,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b00111100
};
byte one_f[8] = {0b00011000,
0b00111000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000
};
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
}
void drawNum() {
lc.setRow(0, 0, zero_f[0]);
lc.setRow(0, 1, zero_f[1]);
lc.setRow(0, 2, zero_f[2]);
lc.setRow(0, 3, zero_f[3]);
lc.setRow(0, 4, zero_f[4]);
lc.setRow(0, 5, zero_f[5]);
lc.setRow(0, 6, zero_f[6]);
lc.setRow(0, 7, zero_f[7]);
delay(delaytime);
lc.setRow(0, 0, one_f[0]);
lc.setRow(0, 1, one_f[1]);
lc.setRow(0, 2, one_f[2]);
lc.setRow(0, 3, one_f[3]);
lc.setRow(0, 4, one_f[4]);
lc.setRow(0, 5, one_f[5]);
lc.setRow(0, 6, one_f[6]);
lc.setRow(0, 7, one_f[7]);
delay(delaytime);
}
void loop() {
drawNum();
}
6. Результат теста
Загрузите программу на плату, и точечная матрица отобразит 0.
7. Идеи для расширения
Нарисуйте свои символы или анимации, изменяя массивы байтов
Объедините несколько матриц для создания бегущей строки или больших дисплеев
Используйте библиотеку LedControl для динамических эффектов