大神,请教一个关于rgb的调光的问题:
我在调节亮度的时候,得到一个PWM 的调光曲线,R,G,B 的取值范围为(0~255)
然后通过如下的公式
u16Red = (uint16)((uint32)u8CurrRed * (uint32)au16DimmerCurve[u8CurrLevel]/(uint32)255);
u16Green = (uint16)((uint32)u8CurrGreen * (uint32)au16DimmerCurve[u8CurrLevel]/(uint32)255);
u16Blue = (uint16)((uint32)u8CurrBlue * (uint32)au16DimmerCurve[u8CurrLevel]/(uint32)255);
得到r,g,b的值,然后输出PWM,但是调 {MOD}的时候还好,调节亮度的时候会有点抖动,请问有没有什么好的建议?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
轉換過程用 float, 最後 +0.5 轉 uint16,pwm 用 12 bit
增加:
用 float 就不要用查表了,而是每次計算公式得出結果,一般對數調光 stm8 跑的動。
還要加差補,譬如電腦下發 8 bit 數據從 5 -> 6, 那麼要做一個平滑效果:5.0 -> 5.1 -> 5.2 -> 5.3 -> 5.4 -> ... -> 6.0, 譬如這個過程持續 1 秒走完。
为什么要加0.5 我在其他地方也看到这种操作 不明白什么目的
强行四舍五入
一周热门 更多>