Здравствуйте. Хочу попробовать сделать управление матрицей через родную STMовскую среду CubeIDE. По копался в сети, понял что нужно сканировать построчно записывая данные в R, G. B. Только не понял как управлять яркостью цвета. То есть если в строке 64 точки, то например если нам нужен цвет R, То пишем 64 единицы или для каждой точки пишем что то другое например байт информации с данными яркости цвета итого 64 байта для строки.
Заранее спасибо.
О каких матрицах речь? Их до хренища разных!
Например 64*32 такой
Я хочу понять принцип управления насыщенностью цвета(палитрой) ???
Понятно.
Я не знаю что такое
но по этой матрице у меня есть документация, включая даташит на драйвер, примеры работы с ней и т.п. Нужно?
Нужно если не жалко. Был бы рад почитать…Лучше на почту supergis2@yandex.ru
Stm32CubeIde
Это среда разработки выпущенная компанией STM для своих чипов, С++
Что на почту, я просто даю Вам ссылку на гугл-диск, там куча файлов (даташит, библиотека от адафрут и т.п.), скачивайте что нужно.
https://drive.google.com/drive/folders/11b-_n4B0VGRcEDBp7WxWYxIm_4PyPRQy?usp=sharing
Большой спасибо…Почитаю…
А вообще, если я ничего не путаю, то по этим матрицам, причём именно с STM, собаку съел @b707 . Попробуйте у него спросить, может он и для этой Вашей STM-IDE что-нить посоветует.
@ЕвгенийП
Насколько я понял, Вадим как раз не хочет использовать мои разработки и хочет разработать свое. Со мной он уже общался…
Не очень понимаю сути вопроса. Если говорить о яркости конкретного пикселя, то три компоненты RGB дают вам не только цвет. но и яркость. Если хотите, вы можете перевести RGB в представление HSV - там будет яркость в явном виде.
Если же вас интересует яркость матрицы в целом, то это делается через управление выводом OE
Исходный код моей библиотеки доступен на гитхабе. там все это есть.
Меня интересует пиксель, хочу все три цвета на полную, передаю R=1,B=1,G=1. А как например R зажечь на половину для конкретного пикселя
Передать на пиксель вы можете только 0 или 1. Поэтому чтобы зажечь один из пикселей на половину, нужно половину времени передавать на него 1, а половину времени - ноль.
Чтобы получить глубину цвета, например, 4 бита - нужно разделить все время работы матрицы на 16 (2**4) периодов и в соответствии с яркостью пикселя передавать на матрицу то единицы, то нули.
Подробнее почитайте здесь. особенно раздел “BCM”
Спасибо главное понял…
Всем привет !
По маленьку получается первая проблема при установке на входы A,B,C (PA1,PA2,PA3)
GPIOA->BRR = 0b0000000000001110;
GPIOA->BSRR = (0b000 << 1);
горит вторая строка с верху, а не первая не понимаю как первую зажечь…???
матрица 40*20
сканирование 1/5
Ещё обнаружил такой эффект при отключении сигнала OE нужная первая строка горит, но сильно тусклее чем вторая, вторая горит ярко.Также появляются тусклые контуры по оси Y на символах, также смещённые на один пиксель вверх.
При включении сигнала ОЕ , горит только вторая ярко.Бледные контуры пропадают.
Вот код вывода…
if(rows == 5) { rows = 0; rows_bit = 0b000;}
// GPIOA->BSRR = (1<<0);//OE
GPIOA->BSRR = (1<<4);// LAT HIGH
GPIOA->BRR = (1<<4);// LAT LOW
// Цикл вывода светодиодов в строке
for(uint8_t i=0; i < 80; i++)
{// Выставляем биты включения светодиодов
GPIOB->BSRR = (0b1111110000000000 << 16) ;//0b0100000 buffer[row][i]
GPIOB->BSRR = ( buffer_displ[rows][i] << 10 );
// Отправляем выставленное значение
GPIOB->BRR = (1<<9);//CLK Low
GPIOB->BSRR = (1<<9);//CLK High
}
// Выставляем адрес строки для отображения
GPIOA->BRR = 0b0000000000001110;
GPIOA->BSRR = ((rows_bit) << 1);
//GPIOA->BRR = (1<<0);//OE
rows++; rows_bit++;
Это вы на какой контроллер пишете?На стм32f4 нет brr регистра, если я не путаю.
f103c8t6 пока на нём пробую.
Пишите сразу совместимо.
Регистр BSRR заменяет сразу два - его нижняя половина устанавливает биты, а верхняя - сбрасывает. Строение BSRR одинаково на МК STM32F1 и F4