Сейчас попробую
А здесь менять надо, а то ошибку выдаёт
template<int COL_DEPTH>
class DMD_RGB RGB80x40_S10_sh0, COL_DEPTH> : public DMD_RGB_BASE2<COL_DEPTH>
{
Сейчас попробую
А здесь менять надо, а то ошибку выдаёт
template<int COL_DEPTH>
class DMD_RGB RGB80x40_S10_sh0, COL_DEPTH> : public DMD_RGB_BASE2<COL_DEPTH>
{
нет, ни в коем случае
А здесь что писать
class DMD_RGB RGB80x40_S10_sh0, COL_DEPTH> : public DMD_RGB_BASE2<COL_DEPTH>
А то я уже старое стёр
Если пишу
class DMD_RGB <RGB80x40_S10_sh, COL_DEPTH> : public DMD_RGB_BASE2<COL_DEPTH>
Ощибка
‘RGB80x40_S10_sh’ was not declared in this scope
ничего.
Смотрите - если ориентироватся по коду из #544 - все строчки начиная с 3 по 25 можете просто удалить.
0
https://disk.yandex.ru/d/Daerw7yMxFksLg?uid=218290814
1
https://disk.yandex.ru/d/xNyeYxsli9XfmA?uid=218290814
2
https://disk.yandex.ru/d/nSfBTLjqzDSWpg?uid=218290814
попробуйте вот это
#define RGB80x40_S10_sh 3,80,40,10,62
template<int COL_DEPTH>
class DMD_RGB <RGB80x40_S10_sh, COL_DEPTH> : public DMD_RGB_BASE2<COL_DEPTH>
{
public:
DMD_RGB(uint8_t* mux_list, byte _pin_nOE, byte _pin_SCLK, uint8_t* pinlist,
byte panelsWide, byte panelsHigh, bool d_buf = false) :
DMD_RGB_BASE2<COL_DEPTH>(3, mux_list, _pin_nOE, _pin_SCLK, pinlist,
panelsWide, panelsHigh, false, COL_DEPTH, 10, 80, 40)
{}
protected:
uint16_t get_base_addr(int16_t &x, int16_t &y) override {
this->transform_XY(x, y);
uint8_t pol_y = y % this->pol_displ;
x += (y / this->DMD_PIXELS_DOWN) * this->WIDTH;
uint16_t base_addr = (pol_y / this->multiplex) * this->x_len +
(x / 4) * this->multiplex * 4 +
(pol_y % this->multiplex) * 4 + x % 4;
return base_addr;
}
};
DMD_RGB_SHIFTREG_ABC <RGB80x40_S10_sh, COLOR_4BITS_Packed> dmd(mux_list, DMD_PIN_nOE, DMD_PIN_SCLK, custom_rgbpins, DISPLAYS_ACROSS, DISPLAYS_DOWN, ENABLE_DUAL_BUFFER);
Вадим, лучше заполнение, по этому видео ничего не понятно, кроме факта того, что не работает.
Отлично, приближаемся к развязке
Функцию base_addr в предыдущем коде замените вот на эту:
uint16_t get_base_addr(int16_t &x, int16_t &y) override {
this->transform_XY(x, y);
uint8_t pol_y = y % this->pol_displ;
x += (y / this->DMD_PIXELS_DOWN) * this->WIDTH;
uint16_t base_addr = (pol_y % this->nRows) * this->x_len +
(x / 4) * this->multiplex * 4 +
(pol_y / this->nRows) * 4 + x % 4;
return base_addr;
}
Видео писать не буду , заполняется построчно с верху вниз
Но тестовый скетч всё равно идёт некорректно…
Или видео тестового скетча записать ??
Начиная с 15й секунды и почти до конца текст показывается верно, есть только много шумов и наводок. Из этого следует что преобразование координат правильное.
Что касается наводок и того, что картинка “рассыпается” - это почти наверняка проблемы контактов. Из-за высоких частот подключение матрицы очень чувствительно к надежности соединений. Не используйте дюпонтовские перемычки - с ними невозможно добится качественного контакта. Используйте мнопиновые разъемы с плотной посадкой и пайку.
(добавка) Некоторые матрицы не воспринимают логический сигнал уровня 3.3в. Для таких нужен конвертер уровней на все 14 линий разъема HUB75
Хорошо. спасибо.
У меня действительно от Blue Pill дюпонтовские перемычки длинные, а после них ещё шлейф сантиметров 30…
К празднику ![]()
Добавил новый пример - многоцветные строчки и бегущая строка.
Всем доброго дня!
У меня совсем появилась совсем непонятная панель. Испробовал все шаблоны, но без результата ![]()
Qiangli Q3 PRO, 104x52, 13 по данным на сайте вроде такие параметры.
Подключения все вроде правильные.
Шаблоны от RGB64x32_S8_Eu057 и RGB104x52_S13_Craftish вроде немного подходят, но все равно не работают.
Использую BluePill STM32F103C8.
Ножки подлючал как на примерах.
Некоторые ножки указанные на шелкографии идут к земле (DI, D).
Думаю плата использует только A,B,C.
Буду рад любой помощи.
Драйвер SM16389 - это драйвер с памятью, работает совсем на иных принципах, нежели традиционные панели. Запустить его удаленно шансов нет.
Если у вас таких панелей много, то можно попробовать воткнуть панель в китайский лед-контроллер и посмотреть обмен данными логик-анализатором. Но это дело не быстрое и, как уже сказал. из-за одной панели смысла не имеет.
SM16389SC и
SM5368PF
ну значит наклейка на матрице не врет.
Шансов мало, но все попробуйте вот так - возьмите пример
dmd_rgb_pattern_test.ino
и строчку инициализации класса матрицы в примере поменяйте вот на эти две:
#define RGB104x52_S13_kroxus 3,104,52,13,1
DMD_RGB_SHIFTREG_ABC <RGB104x52_S13_kroxus, COLOR_4BITS_Packed> dmd(mux_list, DMD_PIN_nOE, DMD_PIN_SCLK, custom_rgbpins, DISPLAYS_ACROSS, DISPLAYS_DOWN, ENABLE_DUAL_BUFFER);
Если что-то заработает - на матрице один за другим должны загораться пиксели. Снимите этот процесс на видео - достаточно 5-6 строчек - и выложите сюда.
PS пины подключения в примере не забудьте поправить на те что у вас в схеме)
Тишина ![]()