Заголовок сообщения: Помогите подключить Led-матрицу к ардуино
Добавлено: Вс май 19, 2024 16:26:17
Родился
Зарегистрирован: Вс май 19, 2024 16:18:12 Сообщений: 9
Рейтинг сообщения:0
Доброго времени суток. Есть LED-матрица Q8S5V5 (эта матрица обычно используется для создания рекламы). Можно ли её "подружить" с Arduino Nano, выводить текст, время или любую информацию? Если это возможно, то как её подключить?
Заголовок сообщения: Re: Помогите подключить Led-матрицу к ардуино
Добавлено: Вс май 19, 2024 17:26:14
Родился
Зарегистрирован: Вс май 19, 2024 16:18:12 Сообщений: 9
Рейтинг сообщения:0
Это будет звучать достаточно глупо, но схемы на эту матрицу нет. Я изначально хотел подключить её по схеме (https://wiki.iarduino.ru/page/rgb-matrix/), указанной на этом сайте, но там нет ардуино нано (что не настолько критично, как я понимаю), и самое главное не хватает нескольких контактов на моей матрице. (фото моей матрицы: https://ibb.co/wpz47DR)
Насколько я вижу, и там и там HUB75 Какое-то описание и ссылки на примеры есть здесь: https://static.chipdip.ru/lib/244/DOC004244754.pdf Ну, писать за Вас код я не буду, а вот помочь разобраться, если начнёте сами - это возможно.
Мне будет достаточно, если поможете просто подключить матрицу к ардуинке, потому что я не совсем понимаю, чем заменяются недостающие контакты.
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/
Цитата:
При объявлении объекта необходимо указать требуемое разрешение:
Заголовок сообщения: Re: Помогите подключить Led-матрицу к ардуино
Добавлено: Пн май 20, 2024 10:35:17
Родился
Зарегистрирован: Вс май 19, 2024 16:18:12 Сообщений: 9
Рейтинг сообщения:0
Я сейчас посмотрел в интернете, и действительно, у меня матрица 32x16. "D" я закомментировал и вырезал, как требуется. Но куда подключать контакты "LAT" и "CLK"? (Крупный план разъёма: https://ibb.co/MGxsV3X).Для проверки я "LAT" подключил к "L" а "CLK" к "S" матрица заработала, но не корректно выводит изображение.
Заголовок сообщения: Re: Помогите подключить Led-матрицу к ардуино
Добавлено: Пн май 20, 2024 12:33:47
Родился
Зарегистрирован: Вс май 19, 2024 16:18:12 Сообщений: 9
Рейтинг сообщения:0
На пробу взял я код для вывода бегущей строки. Анимация движения текста есть, но вместо самого текста выводятся квадратики и различные непонятные фигуры, но не буквы. Или же другой код: вывод гаммы цвета в круге. Вместо круга выводятся два прямоугольника с 'вырезом'
Самостоятельно выведите одну точку в определённом заданном месте. Когда этого добьётесь, поймёте, как это работает (можно будет понять искажение) и все вопросы отпадут. Кроме того. надо всегда оставлять какую-то часть сомнений на исправность матрицы и корректность чужой программы и совместимость их и даже на то, что китайцы ошиблись с назначением выводов, а потому проследить их до ближайших чипов и убедиться.
Последний раз редактировалось Martian Пн май 20, 2024 12:47:37, всего редактировалось 1 раз.
Заголовок сообщения: Re: Помогите подключить Led-матрицу к ардуино
Добавлено: Пн май 20, 2024 12:54:23
Родился
Зарегистрирован: Вс май 19, 2024 16:18:12 Сообщений: 9
Рейтинг сообщения:0
На вывод текста:
Код:
#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); // Включаем пиксель с указанным цветом } } }
Самостоятельно выведите одну точку в определённом заданном месте. Когда этого добьётесь, поймёте, как это работает (можно будет понять искажение) и все вопросы отпадут. Кроме того. надо всегда оставлять какую-то часть сомнений на исправность матрицы и корректность чужой программы и совместимость их и даже на то, что китайцы ошиблись с назначением выводов, а потому проследить их до ближайших чипов и убедиться.
Матрица рабочая это 100%. А совсем остальным согласен.
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" возможно это существенно важно
_________________ все гениальное просто. чем проще - тем надежнее
Библиотека Adafruit RGBmatrixPanel работает только в паре с библиотекой Adafruit GFX, учитывайте это при работе с матрицей.
попробуйте ее подключить и еще
Цитата:
На заметку: Если у Вас матрица с драйверами FM6126A, то необходимо использовать библиотеку скаченную с нашего сайта или с нашего репозитория на Github.com, в которую мы добавили инициализацию этих драйверов.
_________________ все гениальное просто. чем проще - тем надежнее
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения