Вы находитесь на странице: 1из 15

Светодиодная панель с Arduino [Амперка / Вики]

Содержание

Светодиодная панель с Arduino


Видеообзор

Что понадобится

Подключение и настройка

Шаг 1

Шаг 2

Шаг 3

Примеры работы

Тест матрицы

Вывод геометрических фигур


Анимация шариков

Вывод текста

Бегущая строка

Ресурсы

Светодиодная панель с Arduino


Светодиодные матрицы не содержат на борту микроконтроллеров, памяти и контроллеров ШИМ. По принципу своей работы панели рассчитаны на
использования технологии «CPLD» или «FPGA». Arduino Mega 2560 удалось адаптировать для управления матрицей, но для полной раскачки панели вам
необходимо найти более высокоскоростной контроллер.

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (1 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

Видеообзор

Что понадобится

Arduino Mega 2560

Светодиодная LED панель


Блок питания (5 вольт, 5 ампер)


Соединительные проводов «папа-папа»

Подключение и настройка

Перед подключением советуем ознакомиться с расспиновкой разъёма «HUB-75» и ответного шлейфа.

Шаг 1

Подключите 16-проводной шлейф к входному сигнальному разъёму матрицы DATA IN.

Шаг 2

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (2 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

С помощью проводов «папа-папа» подключите второй конец шлейфа к платформе Arduino Mega 2560.

Номера пинов изменять нельзя

Вывод шлейфа Вывод Arduino Mega


R1 24
G1 25
B1 26
GND GND
R2 27
G2 28
B2 29
GND GND
A A0
B A1
C A2
D A3
CLK 8
OE 9
LAT 10
GND GND

Шаг 3

Подключите питание на светодиодную матрицу через силовой шнур. Один конец провода к блоку питания, а второй — в разъём POWER на матрице.
Каждая LED панель питается строго от 5 вольт. Потребление тока зависит от вида матрицы.

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (3 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

Рекомендуем использовать блок питания с выходным напряжением 5 вольт и током не менее 4 ампер. Идеально подойдёт блок питания с
выходным напряжением 5 вольт и током 5 ампер.

При подключении нескольких светодиодных панелей, соответственно увеличивайте запас по току в N-раз, где N — количество матриц в
цепочке.

На схеме матрицы нет встроенного регулятора напряжения. При подаче напряжения более 5 вольт — вы убьёте LED панель.

Железо собрано. Теперь можно переходить к примерам работы.

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (4 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

Примеры работы
Для работы примеров скачайте и установите библиотеки RGBmatrixPanel и Adafruit GFX через менеджер библиотек Arduino.

Тест матрицы

Для начала сделаем простой тест светодиодов «битых пикселей» на матрице.

fillColorTest.ino

// библиотека для работы с матрицей


#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»

// управляющие пины матрицы


#define CLK 11
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3

// объявляем объект для работы с матрицей 64х32


// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);

int color;

void setup() {
// инициируем работу с матрицей
matrix.begin();
}

void loop() {
// закрашиваем матрицу в красный цвет
matrix.fillScreen(matrix.Color888(255, 0, 0));
// выводим цвет из буфера на экран
matrix.swapBuffers(false);
delay(1000);
// закрашиваем матрицу в зелёный цвет
matrix.fillScreen(matrix.Color888(0, 255, 0));
// выводим цвет из буфера на экран
matrix.swapBuffers(false);
delay(1000);
// закрашиваем матрицу в синий цвет
matrix.fillScreen(matrix.Color888(0, 0, 255));

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (5 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

// выводим цвет из буфера на экран


matrix.swapBuffers(false);
delay(1000);
// закрашиваем матрицу в белый цвет
matrix.fillScreen(matrix.Color888(255, 255, 255));
// выводим цвет из буфера на экран
matrix.swapBuffers(false);
delay(1000);
}

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (6 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

Вывод геометрических фигур

Методы библиотеки легко позволяют выводить геометрические фигуры.

geometricFigures.ino

// библиотека для работы с матрицей


#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»

// управляющие пины матрицы


#define CLK 11
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3

// объявляем объект для работы с матрицей 64х32


// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);

// выводимая строка на матрицу


const char textStr[] = "Hello, World!";
// переменная с X-координатой текста
int textX = matrix.width();

// минимальное значение координаты текста


// количество символов в строке умноженное на ширину одного символа,
// после которой текст начнёт повторно выводиться
int textMin = sizeof(textStr) * -6;

void setup() {
// инициируем работу с матрицей
matrix.begin();
int width = matrix.width();
int height = matrix.height();
// рисуем две диагонали
matrix.drawLine(0, 0, width - 1, height - 1, matrix.Color333(7, 0, 0));
matrix.drawLine(0, height - 1, width - 1, 0, matrix.Color333(7, 0, 0));
// рисуем окружность в центре дисплея и радиусом 12
matrix.drawCircle(width / 2, height / 2, 12 , matrix.Color333(7, 7, 0));
// рисуем диск (закрашенную окружность) в центре дисплея и радиусом 8
matrix.fillCircle(width / 2, height / 2, 8, matrix.Color333(0, 7, 7));
// выводим текст из буфера на матрицу
matrix.swapBuffers(false);
}

void loop() {

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (7 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

Анимация шариков

Заставим фигуры двигаться и отталкиваться от стен.

movingCircles.ino

// библиотека для работы с матрицей


#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»

// управляющие пины матрицы


#define CLK 11
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3

// объявляем объект для работы с матрицей 64х32


http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (8 of 15)28/12/2018 07:21:45 a.m.
Светодиодная панель с Arduino [Амперка / Вики]

// включаем двойную буферизацию


RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);

// массив с начальными координатами кругов и значениями смещения


// первые две координаты в каждой строке — координаты трёх кругов
// вторые две — координаты смещения кругов
int ball[3][4] = {
{ 6, 6, 1, 1 },
{ 17, 15, 1, -1 },
{ 27, 6, -1, 1 }
};

// цвет кругов
static const int ballColor[3] = {
matrix.Color333(3, 0, 0),
matrix.Color333(0, 3, 0),
matrix.Color333(0, 0, 3)
};

// радиус кругов
static int const ballRadius = 3;

void setup() {
// инициируем работу с матрицей
matrix.begin();
}

void loop() {
// очищаем экран
matrix.fillScreen(0);
// запускаем счётчик для смены координат кругов
for (int i = 0; i < 3; i++) {
// рисуем три круга с одинаковыми радиусами
// разными начальными координатами и цветами
matrix.fillCircle(ball[i][0], ball[i][1], ballRadius, ballColor[i]);
// обновляем Х-координату кругов
ball[i][0] += ball[i][2];
// Обновляем Y-координату кругов
ball[i][1] += ball[i][3];
// если круг по Х дошёл до границы экрана
if ((ball[i][0] == ballRadius) || (ball[i][0] == (matrix.width() - ballRadius))) {
// инициируем движение в обратную сторону
ball[i][2] *= -1;
}
// если круг по Y дошёл до границы экрана
if ((ball[i][1] == ballRadius) || (ball[i][1] == (matrix.height() - ballRadius))) {
// инициируем движение в обратную сторону
ball[i][3] *= -1;
}
}
// выводим объекты из буфера на экран
matrix.swapBuffers(false);
}

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (9 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

Вывод текста

Матрицы идеально подходят для объявлений и рекламных вывесок. Выведем цветной и яркий текст.

printString.ino

// библиотека для работы с матрицей


#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»

// управляющие пины матрицы

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (10 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

#define CLK 11
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3

// объявляем объект для работы с матрицей 64х32


// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);

// выводимая строка на матрицу


const char textStr[] = "Hello, World!";
// переменная с X-координатой текста
int textX = matrix.width();

// минимальное значение координаты текста


// количество символов в строке умноженное на ширину одного символа,
// после которой текст начнёт повторно выводиться
int textMin = sizeof(textStr) * -6;

void setup() {
randomSeed(analogRead(A5));
// инициируем работу с матрицей
matrix.begin();
// отключаем перенос текста на следующую строку
matrix.setTextWrap(false);
// устанавливаем размер текста
matrix.setTextSize(1);
// очищаем экран
matrix.fillScreen(0);
// выставляем курсор
matrix.setCursor(10, 0);
// печатаем первую строку
matrix.println("Amperka");
// выставляем курсор
matrix.setCursor(0, 15);
// выводимая вторая строка
char strText[] = "LED MATRIX!";
// перебираем по очереди каждый символ
for (int i = 0; i < strlen(strText); i++) {
// генерируем случайное число от 0 до 1536
int hue = random(0, 1536);
// устанавливаем случайный цвет по шкале «HSV»
matrix.setTextColor(matrix.ColorHSV(hue, 255, 255, false));
// печатаем символ текущего цикла
matrix.print(strText[i]);
}
// выводим текст из буфера на матрицу
matrix.swapBuffers(false);
}

void loop() {

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (11 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

Бегущая строка

Добавим тексту движения — сделаем бегущую строку.

runningString.ino

// библиотека для работы с матрицей


#include <RGBmatrixPanel.h>
// установите и скачайте также библиотеку «Adafruit GFX Library»
// «RGBmatrixPanel» наследуется от «Adafruit GFX Library»

// управляющие пины матрицы


#define CLK 11
#define OE 9
#define LAT 10
#define A A0
#define B A1
#define C A2
#define D A3
http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (12 of 15)28/12/2018 07:21:45 a.m.
Светодиодная панель с Arduino [Амперка / Вики]

// объявляем объект для работы с матрицей 64х32


// включаем двойную буферизацию
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, true, 64);

// выводимая строка на матрицу


const char textStr[] = "Hello, World!";
// переменная с X-координатой текста
int textX = matrix.width();

// минимальное значение координаты текста


// количество символов в строке умноженное на ширину одного символа,
// после которой текст начнёт повторно выводиться
int textMin = sizeof(textStr) * -6;

void setup() {
// инициируем работу с матрицей
matrix.begin();
// отключаем перенос текста на следующую строку
matrix.setTextWrap(false);
// устанавливаем размер текста
matrix.setTextSize(1);
}

void loop() {
// очищаем экран
matrix.fillScreen(0);
// устанавливаем цвет текста
matrix.setTextColor(matrix.Color888(255, 0, 255));
// указываем начальную координату вывода текста {textX; 12}
matrix.setCursor(textX, 12);
// выводим текст
matrix.print(textStr);
// сдвигаем текст на один пиксель при каждом выполнении цикла
textX--;
// если был отображён весь текст
if (textX < textMin) {
// начинаем выводить текст заново
textX = matrix.width();
}
// выводим текст из буфера на матрицу
matrix.swapBuffers(false);
}

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (13 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

Ресурсы

Светодиодная RGB Матрица 64×32 в магазине.


Техническая документация на светодиодную RGB Матрица 64×32


Библиотеки RGBmatrixPanel и Adafruit GFX для работы с матрицами через Arduino.


Примеры работы для Raspberry Pi.


Техническая документация на светодиодную RGB матрицу 64×32


Техническая документация на драйвер матрицы

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (14 of 15)28/12/2018 07:21:45 a.m.


Светодиодная панель с Arduino [Амперка / Вики]

За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Производные работы должны содержать ссылку на http://wiki.amperka.ru, как на первоисточник, непосредственно перед содержимым работы. Вики работает
на суперском движке DokuWiki.

projects/rgb-led-matrix-arduino.txt · Последние изменения: 2018/12/27 17:52 — igor


● Показать исходный текст

● История страницы

● Ссылки сюда

● Наверх

● Зарегистрироваться
● Войти
● Недавние изменения
● Управление медиафайлами
● Все страницы

http://wiki.amperka.ru/projects:rgb-led-matrix-arduino (15 of 15)28/12/2018 07:21:45 a.m.