Помогите подключить Led-матрицу к ардуино

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

Доброго времени суток. Есть LED-матрица Q8S5V5 (эта матрица обычно используется для создания рекламы). Можно ли её "подружить" с Arduino Nano, выводить текст, время или любую информацию? Если это возможно, то как её подключить?
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Помогите подключить Led-матрицу к ардуино

Сообщение Martian »

Можно. Программировать умеете?
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Re: Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

Программировать плохо умею, боюсь моих познаний не хватит.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Помогите подключить Led-матрицу к ардуино

Сообщение Martian »

ну а документация на этот модуль есть?
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Re: Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

Это будет звучать достаточно глупо, но схемы на эту матрицу нет. Я изначально хотел подключить её по схеме (https://wiki.iarduino.ru/page/rgb-matrix/), указанной на этом сайте, но там нет ардуино нано (что не настолько критично, как я понимаю), и самое главное не хватает нескольких контактов на моей матрице. (фото моей матрицы: https://ibb.co/wpz47DR)
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Помогите подключить Led-матрицу к ардуино

Сообщение Martian »

Насколько я вижу, и там и там HUB75
Какое-то описание и ссылки на примеры есть здесь: https://static.chipdip.ru/lib/244/DOC004244754.pdf
Ну, писать за Вас код я не буду, а вот помочь разобраться, если начнёте сами - это возможно.
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Re: Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

Мне будет достаточно, если поможете просто подключить матрицу к ардуинке, потому что я не совсем понимаю, чем заменяются недостающие контакты.
AndyGU70
Прорезались зубы
Сообщения: 231
Зарегистрирован: Ср апр 17, 2019 01:53:29

Re: Помогите подключить Led-матрицу к ардуино

Сообщение AndyGU70 »

по аналогии с P10
https://habr.com/ru/articles/404867/
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Помогите подключить Led-матрицу к ардуино

Сообщение Martian »

недостающие - это какие?
Напишите сравнение контактов, какие у HUB75, а какие - у Вашей матрицы
Аватара пользователя
v1ct0r
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Вс мар 18, 2018 22:12:38

Re: Помогите подключить Led-матрицу к ардуино

Сообщение v1ct0r »

[uquote="oleg-maxsimus",url="/forum/viewtopic.php?p=4581118#p4581118"]Мне будет достаточно, если поможете просто подключить матрицу к ардуинке, потому что я не совсем понимаю, чем заменяются недостающие контакты.[/uquote]
1. УНО или НАНО абсолютно без разницы
2. разберитесь какая у вас матрица 32х64 или 16х32(32х32 исключается т.к. она была бы квадратной)

Добавлено after 1 hour 16 minutes 54 seconds:
подозреваю, что у вас матрица 16х32
в этом случае контакт "D", которого у вас нет, вам и не нужен
https://wiki.iarduino.ru/page/rgb-matrix/
При объявлении объекта необходимо указать требуемое разрешение:

RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false); // Матрица 32х16
RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false); // Матрица 32х32
а контакты обозначенные у вас "N" - есть "GND", в чем вы можете убедиться прозвонив их с "-" разъема питания
все гениальное просто. чем проще - тем надежнее
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Re: Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

Я сейчас посмотрел в интернете, и действительно, у меня матрица 32x16. "D" я закомментировал и вырезал, как требуется. Но куда подключать контакты "LAT" и "CLK"? (Крупный план разъёма: https://ibb.co/MGxsV3X).Для проверки я "LAT" подключил к "L" а "CLK" к "S" матрица заработала, но не корректно выводит изображение.
Аватара пользователя
v1ct0r
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Вс мар 18, 2018 22:12:38

Re: Помогите подключить Led-матрицу к ардуино

Сообщение v1ct0r »

что значит не корректно?
oleg-maxsimus, загружайте изображения сразу, не нужно их куда то выкладывать, а потом давать ссылки на сторонние ресурсы
Изображение
все гениальное просто. чем проще - тем надежнее
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Re: Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

На пробу взял я код для вывода бегущей строки. Анимация движения текста есть, но вместо самого текста выводятся квадратики и различные непонятные фигуры, но не буквы. Или же другой код: вывод гаммы цвета в круге. Вместо круга выводятся два прямоугольника с 'вырезом'

Изображение
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Помогите подключить Led-матрицу к ардуино

Сообщение Martian »

Самостоятельно выведите одну точку в определённом заданном месте. Когда этого добьётесь, поймёте, как это работает (можно будет понять искажение) и все вопросы отпадут. Кроме того. надо всегда оставлять какую-то часть сомнений на исправность матрицы и корректность чужой программы и совместимость их и даже на то, что китайцы ошиблись с назначением выводов, а потому проследить их до ближайших чипов и убедиться.
Последний раз редактировалось Martian Пн май 20, 2024 12:47:37, всего редактировалось 1 раз.
Аватара пользователя
v1ct0r
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Вс мар 18, 2018 22:12:38

Re: Помогите подключить Led-матрицу к ардуино

Сообщение v1ct0r »

выложите ВАШИ скетчи, которые загружаете в ардуину
все гениальное просто. чем проще - тем надежнее
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Re: Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

На вывод текста:

Код: Выделить всё

#include <RGBmatrixPanel.h>                                   // Подключаем библиотеку для работы с матрицей

// Используем эти выводы, если матрица подключена к Arduino UNO
#define CLK  8
#define OE   9
#define LAT 10

// Используем эти выводы, если матрица подключена к Arduino MEGA
//#define CLK 11
//#define OE   9
//#define LAT 10

// Используем эти выводы, если матрица подключена к Piranha ULTRA
//#define CLK 11                                                // Вывод Arduino, к которому подключён вывод CLK матрицы
//#define OE  12                                                // Вывод Arduino, к которому подключён вывод OE матрицы
//#define LAT 13                                                // Вывод Arduino, к которому подключён вывод LAT матрицы

#define A   A0                                                // Вывод Arduino, к которому подключён вывод A матрицы
#define B   A1                                                // Вывод Arduino, к которому подключён вывод B матрицы
#define C   A2                                                // Вывод Arduino, к которому подключён вывод C матрицы
//#define D   A3                                                // Вывод Arduino, к которому подключён вывод D матрицы

RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, true);    // Объявляем объект matrix для работы с матрицей 64х32, всключаем двойную буферизацию

const char str[] = "Test Text!";                   // Массив для хранения текста, выводимого на матрицу
int16_t    textX         = matrix.width();                    // Переменная с X-координатой текста

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

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

void loop() {
  matrix.fillScreen(0);                                       // Очищаем экран
  matrix.setTextColor(matrix.Color333(3,3,3));                // Устанавливаем цвет текста
  matrix.setCursor(textX,12);                                // Указываем начальную координату вывода текста {textX; 12}
  matrix.print(str);                                          // Выводим текст
  --textX;                                                    // Сдвигаем текст на 1 пиксель при каждом выполнении цикла
  if(textX < textMin) textX = matrix.width();                 // Если был отображён весь текст, то начинаем его выводить заново
  matrix.swapBuffers(false);                                  // Выводим текст из буфера на матрицу
}
Круг с гаммой:

Код: Выделить всё

#include <RGBmatrixPanel.h>                                             // Подключаем библиотеку для работы с матрицей

// Используем эти выводы, если матрица подключена к Arduino UNO
#define CLK  8
#define OE   9
#define LAT 10

// Используем эти выводы, если матрица подключена к Arduino MEGA
//#define CLK 11
//#define OE   9
//#define LAT 10

// Используем эти выводы, если матрица подключена к Piranha ULTRA
//#define CLK 11                                                          // Вывод Arduino, к которому подключён вывод CLK матрицы
//#define OE  12                                                          // Вывод Arduino, к которому подключён вывод OE матрицы
//#define LAT 13                                                          // Вывод Arduino, к которому подключён вывод LAT матрицы

#define A   A0                                                          // Вывод Arduino, к которому подключён вывод A матрицы
#define B   A1                                                          // Вывод Arduino, к которому подключён вывод B матрицы
#define C   A2                                                          // Вывод Arduino, к которому подключён вывод C матрицы
//#define D   A3                                                          // Вывод Arduino, к которому подключён вывод D матрицы

RGBmatrixPanel matrix(A, B, C, CLK, LAT, OE, false);             // Объявляем объект matrix для работы с матрицей 64х32, включаем двойную буферизацию

void setup() {
  int      x, y, hue;                                                   // Задаём переменные для координат X и Y и параметра оттенка цвета
  float    dx, dy, d;                                                   // переменные для диаметра окружности по Y, X и общему
  uint8_t  sat, val;                                                    // Задаём переменные для значений насыщенности и яркости
  uint16_t c;                                                           // Задаём переменную для задания цвета пикселя
  matrix.begin();                                                       // Инициируем работу с матрицей
  for (y = 0; y < matrix.height(); y++) {                               // Запускаем цикл, пока координата по Y меньше значения высоты матрицы
    dy = 15.5 - (float)y;                                               // Задаём функцию, при которой в матрицу впишется окружность, радиусом 15,5 пикселей по оси Y
    for (x = 0; x < matrix.height(); x++) {                             // Запускаем цикл, пока координата по X меньше значения высоты матрицы
      dx = 15.5 - (float)x;                                             // Задаём функцию, при которой в матрицу впишется окружность, радиусом 15,5 пикселей по оси X
      d  = dx * dx + dy * dy;                                           // Находим значение диаметра
      if (d <= (16.5 * 16.5)) {                                         // Если окружность с полученными диаметрами вписывается в матрицу, то
        hue = (int)((atan2(-dy, dx) + PI) * 1536.0 / (PI * 2.0));       // Определяем цвет пикселя
        d = sqrt(d);                                                    // Вычисляем квадратный корень из диаметра
        if (d > 15.5) {                                                 // Если диаметр больше 15.5 пикселей(окружность не вписывается в матрицу), то
          sat = 255;                                                    // Задаём максимальную насыщенность
          val = (int)((1.0 - (d - 15.5)) * 255.0 + 0.5);                // По границе окружности гасим светодиоды
        } else {                                                        // Если диаметр меньше 15.5 пикселей (окружность вписывается в матрицу), то
          sat = (int)(d / 15.5 * 255.0 + 0.5);                          // Меняем цвет от края окружности к центру (в центре белый цвет)
          val = 255;                                                    // Задаём максимальную яркость
        }
        c = matrix.ColorHSV(hue, sat, val, true);                       // Задаём цвет пикселя
      } else {                                                          // Если пиксель не попадает в окружность, то
        c = 0;                                                          // гасим его
      }
      matrix.drawPixel(x, y, c);                                        // Включаем пиксель с указанным цветом
    }
  }
}

void loop() {}
Добавлено after 3 minutes 29 seconds:
[uquote="Martian",url="/forum/viewtopic.php?p=4581517#p4581517"]Самостоятельно выведите одну точку в определённом заданном месте. Когда этого добьётесь, поймёте, как это работает (можно будет понять искажение) и все вопросы отпадут. Кроме того. надо всегда оставлять какую-то часть сомнений на исправность матрицы и корректность чужой программы и совместимость их и даже на то, что китайцы ошиблись с назначением выводов, а потому проследить их до ближайших чипов и убедиться.[/uquote]
Матрица рабочая это 100%. А совсем остальным согласен.
Аватара пользователя
v1ct0r
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Вс мар 18, 2018 22:12:38

Re: Помогите подключить Led-матрицу к ардуино

Сообщение v1ct0r »

oleg-maxsimus, у меня нет такой матрицы, поэтому проверить "в железе" не могу, но сравнивая и анализируя оригинал и ваш скетчи обнаружил несоответствие

1 скетч - бегущая строка

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

void setup() {
matrix.begin(); // Инициируем работу с матрицей
matrix.setTextWrap(false); // Отключаем перенос текста на следующую строку
matrix.setTextSize(1); // Устанавливаем размер текста равным 1 (6 пикселей на символ)
}
---------------------------------------------------------------------
ваш:
-----------------------------------------------------------------------------
// Минимальное значение координаты текста (количество символов в строке, помноженное на ширину одного символа), после которой текст начнёт повторно выводиться
int16_t textMin = sizeof(str) * -6;

void setup() {
matrix.begin(); // Инициируем работу с матрицей
matrix.setTextWrap(false); // Отключаем перенос текста на следующую строку
matrix.setTextSize(2); // Устанавливаем размер текста равным 1 (6 пикселей на символ)
}
------------------------------------------------------------------------------
в оригинале размер текста "1", а у вас "2"
но количество пикселей на символ равно "6"
возможно это существенно важно
все гениальное просто. чем проще - тем надежнее
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Re: Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

Размер текста не влияет. Проверил все значения.
Аватара пользователя
v1ct0r
Нашел транзистор. Понюхал.
Сообщения: 189
Зарегистрирован: Вс мар 18, 2018 22:12:38

Re: Помогите подключить Led-матрицу к ардуино

Сообщение v1ct0r »

интересная ремарка
Библиотека Adafruit RGBmatrixPanel работает только в паре с библиотекой Adafruit GFX, учитывайте это при работе с матрицей.
попробуйте ее подключить
и еще
На заметку: Если у Вас матрица с драйверами FM6126A, то необходимо использовать библиотеку скаченную с нашего сайта или с нашего репозитория на Github.com, в которую мы добавили инициализацию этих драйверов.
все гениальное просто. чем проще - тем надежнее
oleg-maxsimus
Родился
Сообщения: 9
Зарегистрирован: Вс май 19, 2024 16:18:12

Re: Помогите подключить Led-матрицу к ардуино

Сообщение oleg-maxsimus »

С самого начала я установил "оригинальные" библиотеки
Ответить

Вернуться в «Arduino»