Fade эффект при включение RGB ленты
- Войдите на сайт для отправки комментариев
Доброго времени суток.
Разбираюсь тут значит с RGB лентой, подключил её к ардуино через ULN, нашел программку на процессенги теперь можно выбирать цвет с компа - красота.
Но на месте прогресс мой не стоит. Сделал что бы выбраный цвет сохранялся в памити ардуинки, и когда включаем её в сеть, то она светится последним выбраным цветом - тоже кросата.
Но она включается резко. Хотелось бы сделать плавное включение, но вот не знаю как на сеё языке это сделать. Подскажите, мм?
Вот фрагмент кода:
void startDevice(){ int r = EEPROM.read(EPROM_ADDR_VALUE_R); int g = EEPROM.read(EPROM_ADDR_VALUE_G); int b = EEPROM.read(EPROM_ADDR_VALUE_B); //если в памяти пусто, светим белым if(r==255 && g==255 && b==255){ analogWrite(PIN_RED, 1023); analogWrite(PIN_GREEN, 1023); analogWrite(PIN_BLUE, 1023); }else{ analogWrite(PIN_RED, r); analogWrite(PIN_GREEN, g); analogWrite(PIN_BLUE, b); } }
Есть догадка:
Что если цвет хранить в HEX формате? А при включение увеличить значение от черного до нужного цвета, потом парсить в RGB в отправлять на analogWrite?
Но тут тоже вопрс, как HEX от #000000 скажем до #ff0000 увеличить?
P.S. А Hex - тут нафиг упал. Системы исчисления - это для людей. Для самой программы - это все не нужно. А конвертации в "человекочитаемость" и обратно - только лишний геморой, без которого лучше если он не обязателен.
Спасибо, заработало!))
А это вы к чему?))
Спасибо, заработало!))
А это вы к чему?))
Это я к тому, что нужно было пройти по ссылке и внимательно еще раз прочитать документацию. В частности строку "value: период рабочего цикла значение между 0 (полностью выключено) and 255 (сигнал подан постоянно). " . И как это соотностися со строками 8,9,10 вашего скетча из стартового поста.
p.s. Кстати обратите внимание, что и r,g,b я из int в byte переделал.
Про значение analogWrite - учту.
А почему байт?
Про значение analogWrite - учту.
А почему байт?
А какого типа возвращает значение EEPROM.read()? Заодно посмотрите что EEPROM.write принимает в качестве значения для записи.
Спасибо за помощь, теперь буду знать)
Спасибо за помощь, теперь буду знать)
OK. К тому же учтите, что это означает, что перед тем как сохранять в eeProm иди делать analogWrite с только что прочитанного analogRead - вначале нужно его привести к диапазону байт.
То есть
это лажа. будет "срезаться" 75% диапазона сверху.
а нужно