Адресация может быть сделана через сдвиговый регистр.
Посмотрите в библиотеке - самый последний шаблон в файле RGB.h описывает матрицу как раз с такой адресацией.
Но тогда все равно надо три линии управления - клок, дата и латч.
Мало что понял, мне б алгоритм на пальцах , что подавать на А В С D
Сейчас у меня такие симптомы, если писать в строки 0, 2, 4, 6, 8 каким то цветом ,то заполняются все строки но по две одним цветом. если писать в 1, 3, 5, 7, 9 другим цветом то заменится то что записано ранее.Вобщем строки пишутся по две с одинаковыми адресами
0,1 2,3 4,5 и т.д.
Может это не скан 1/10, а 1/20 ? Тогда надо еще линию Е задействовать.
А что касается управлением через регистр - принцип простой. Стоит сдвиговый с числом выходов по числу строчек, каждый выход включает свою строку. Если ваша матрица 1/10 - значит регистр с 10 линиями. Чтобы включить, например, пятую линию - надо в регистр задвинуть одинарный бит, сдвинутый на 5 позиций влево, то есть число 32 = 0b00100000
Управление как любым другим сдвиговым регистром - защелку подняли, подали на вход сигнал, подали тактовый импульс…
Спасибо за ответ. Как работает сдвиговый регистр понимаю, какими входами на матрице он может управляться.
По поводу скана 1/20 не думаю, если пишу только R1G1B1 то работаю как раз с половиной матрицы, если добавляю R2G2B2 то подключается вторая нижняя половина…
теми же A B C D E
это ни о чем не говорит, абсолютно у всех матриц с любыми типами скана R1G1B1 управляет одной половиной матрицы, а R2G2B2 другой
А , B, C, D
А какой из них обычно бывает “защёлкой”, “data”, “тактовый импульс”
см пост 61
Попробовал вот так выбрать строку(думаю вторую)
GPIOA->BSRR = (1 << 2);//B high
GPIOA->BSRR = (1 << 3);//C 1
GPIOA->BSRR = (1 << 1);//A high
GPIOA->BRR = (1 << 1);//A Low
GPIOA->BRR = (1 << 2);//B Low
пусто…
По поводу скана 1/20 Если у меня заполнение идёт 4 бита в одной строке, а потом 4 бита ровно на 10 строк ниже, разве может быть 1/20 ?
Заметил на распиновке(к сожалению только сейчас) модуля есть вход DI он находится между между G0 и G1 что это за вход может быть…?
вы правы, это вряд ли может быть 1/20, похоже на 1/10
не встречался с таким
Померил его , короткое с землёй, наверное просто опечатались,
Попробовал другое отсоединил B от контроллера и подсоединял к земле и к +3.3В
ничего не менялось похоже матрицу прислали неисправную…
Добрый вечер профессионалам .
Матрица не даёт покоя сегодня попробовал следующие
сделал выбор строки статическим, то есть чтобы адрес не менялся вообще и всё выводилось в одну строку
GPIOA->BSRR = (1 << 1); например PA1 у меня младший бит выбора строки
перепробовал все варианты от 000 до 111 ничего не выводится
из чего делаю вывод что строка выбирается , как то по другому…
Вадим, вы не хотите попробовать матрицу с моей библиотекой?
Интересная мысль, сейчас буду пробовать…
DMD_PIN_SCLK PA5 Это Lat ???
Выбрал RGB80x40plainS20
горят несколько вертикальных полос синих(3 по 10п и 2 по 20п) в правой нижней части экрана…
как вы быстро…
Нет. так не выйдет. Нужно создать новый шаблон под 80х40 скан10 матрицу.
Сейчас не могу, попробую ближе к вечеру.
Спасибо, не торопитесь,
Зашёл на сайт QiangLi пытаюсь Даташит найти…
Кьянгли - это тема… Помню, со своей тоже долго мучался, пока разгадал.
Обещанный шаблон для вашей матрицы
Вставьте это в скетч (не в библиотеку!) сразу после строчки #include "DMD_RGB.h"
#define RGB80x40plainS10 38 // 80x40 s10
template<int COL_DEPTH>
class DMD_RGB<RGB80x40plainS10, 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>(4, mux_list, _pin_nOE, _pin_SCLK, pinlist,
panelsWide, panelsHigh, d_buf, COL_DEPTH, 10, 80, 40)
{}
};
Инициализацию матрицы, соответствено, заменить на это:
DMD_RGB <RGB80x40plainS10 , COLOR_4BITS> dmd(mux_list, DMD_PIN_nOE, DMD_PIN_SCLK, custom_rgbpins, DISPLAYS_ACROSS, DISPLAYS_DOWN, ENABLE_DUAL_BUFFER);
Больше ничего менять не надо.
Запустите тестовый скетч, который последовательно зажигает все точки на матрице. Точка может бегать зигзагами, пока это не важно - главное чтобы она пробегала все точки строго по одному разу.
Сделал как Вы сказали запустил dmd_rgb_pattern_test.ino
Не работает.
Но есть интересный эффект ,если нажимать Reset , то матрица начиная справа начинает при каждом нажатии постепенно заполнятся вертикальными линиями по 10px синего цвета. Нижняя часть матрицы 20-40 заполняется плотно, верхняя, редкими линиями…
P.S. Попросил у китайцев Даташит, пока не прислали…
Можете переписать обозначения всех микросхем на матрице?