Сообщение от miwutka
|
мужики есть вопрос. Матрицы RGB - у них 32 ножки. Это понятно. А принцип управления какой? Там наверно надо 8 шимов чтобы любой цвет делать....? И выгружать надо наверно не по столбцам как у нас было, а по точкам? Ну типо послал бит, и сразу отобразил его нужного увета, потом след и так 64 раза для одной матрицы?
|
такие "шимы" делаются программно, столбцов в три раза больше чем в обычной матрице. Поэкспериментировать можно сначала с основными цветами, комбинациями из трех бит.
ШИМ для таких вещей я делаю проще.
Один вызов таймера - одно действие. Один сдвиг по алгоритму, шаг (состояние) запоминается в глобальных переменных.
Делается шим в цикле. Например, для аналогии с RGB(255,255,255) делается цикл от 0 до 254. Делается для равномерности не for-ом а просто инкрементом и обнулением переменной. Так, чтобы можно было равномерно из быстрого таймера вызывать процедуру, и она делала один "шаг". Внутри цикла идет сравнение всех нужных нам пинов с переменной цикла. Удобно представлять цветные матрицы двумерным массивом, а еще лучше структурой. А еще лучше массивом структур.
matrix[2].red = 30; matrix[2].green = 60; matrix[2].blue = 120;
где matrix[] у нас массив, элементы которого сопоставлены с точкой (соответственно можно делать двумерный массив [x][y]) а тип массива - самостоятельно объявленная структура с тремя элементами типа uint_8
В цикле за один шаг обрабатываются все элементы массива, скажем так примерно:
.. 31 шаг
matrix[2]..red меньше 31, значит тушим.. остальные горят..
в итоге у нас полный цикл массива (255 раз) является одним "кадром ШИМ", одной единицей измерения ШИМ. Значит, если мы хотим частоту в 50 герц, нужно таймер делающий 50*255 вызовов в секунду.
Вроде не ошибся )