Набор программ у меня такой же как и у Soir.
А начинать, конечно же, нужно с обычной мигалки светиком. Затем можно кнопку добавить, поопрашивать её, и т.д..
PS: Не могу найти как подписаться на тему ((( Если кто знает, подскажите плиз.
Используется один счетчик - TMR0 для формирования временного интервала. При наступлении прерывания от переполнения TMR0 - счетчик количества прерываний (от 0 до 255 - количество градаций яркости) увеличивается на единицу. Затем по очереди значение этого счетчика сравнивается с установленными значениями яркости каждого канала, если значение счетчика меньше значения яркости - канал включается. Если больше - выключается. Вот фрагмент управляющей программы, показывающий работу со счетчиком, выполняется при каждом прерывании TMR0.breaker писал(а):расскажите а как именно по принципу работает ваши RGB , я так понимаю счётчики используете, а сколько? их в F628A вроде бы 3 шт., наводит на мысль что вы 3 и использовали.....а как кнопки опрашиваете?
Каждые примерно 0,1 сек проверяется состояние соответствующего входа от кнопки. Если кнопка нажата – выполняется увеличение или уменьшение установленного значения яркости для данного канала. На самом деле несколько сложнее. Вычисляется было ли длинное нажатие или короткое, подготавливается запись в EEPROM… Код не привожу его надо долго описывать. Я весь проект сбросил в Вам в личку, что не понятно – спрашивайте.breaker писал(а):…а как кнопки опрашиваете?
Отправил в личку два варианта - без кварца и с кварцем 20МГц.-Light- писал(а):а можно и мне исходники скинуть, какраз нечто похожее паяю
Давайте Ваш энкодер. Посмотрю, что можно сделать. Это их надо 3 штуки?lelic писал(а): Мне нужно тоже самое что в этой теме, только управление не от кнопок, а энкондером. Крутиш ручку и меняется палитра цветов, с памятью последнего состояния.
Дайте мне алгоритм по каждому цвету. То есть, покрутил на один шаг R=10, G=0, B=0; второй - R=10, G=10, B=20... Желательно, чтобы была какая-то закономерность в работе энкодера как на увеличение яркости каналов, так и на уменьшение.lelic писал(а):... смысл такой - крутишь меняется вся палитра...
Да и еще, 256 градаций по каждому цвету не надо, устанешь крутить, насколько я понимаю (поправте если не так) можно сделать примерно так 0-10-20-30 ...
, шаг можно будет и по крупнее.0-10-20-30
Кажется понял. Белого не будет?lelic писал(а):R255 G0 B0
R255 G100 B0
R255 G200 B0
R180 G255 B0
R70 G255 B0
лучше открыть paint или фотошоп там по палитре сразу будет понятен алгаритм смены цвета. Я даже переборщил
Я имел ввиду шкалу в процентах 0-10-20...100. То есть 10 градаций каждого цвета. Теперь, я так понимаю, линию палитры нужно разбить на 10 частей?lelic писал(а):шаг можно будет и по крупнее.
PIC16F628A.lelic писал(а):Т.к я планирую собрать с нуля, мне все равно на каком контроллере это будет реализованно.
Да я думаю 10-15 частей каждого цвета будет достаточно.То есть 10 градаций каждого цвета. Теперь, я так понимаю, линию палитры нужно разбить на 10 частей?
Может сделать так:lelic писал(а):Мда про белый я как то забыл, мне не критично, но если вас не затруднит, то может как то можно реализовать. На энкодере имеется кнопка, на нее бы повесить вкл/выкл..
Если белый вывести в ноль - будет соотвествовать выключенному.lelic писал(а):Тогда я бы остановился на этом
одно нажатие на кнопку включает белый и режим регулировки яркости белого;
второе нажатие включает цветной режим
И далее по кругу, т.е. нажатием будет переключаться белый/цветной, а выключать лучше тогда отдельным выключателем питания.