关于RGB 调光抖动的问题

2019-12-15 12:04发布

大神,请教一个关于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}的时候还好,调节亮度的时候会有点抖动,请问有没有什么好的建议?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
ap0705307
1楼-- · 2019-12-16 11:49
要用算法处理的
raywongm78
2楼-- · 2019-12-16 14:05
指数曲线调光 x 2
huangqi412
3楼-- · 2019-12-16 16:38
 精彩回答 2  元偷偷看……
dukelec
4楼-- · 2019-12-16 19:18
本帖最后由 dukelec 于 2018-11-11 14:27 编辑

轉換過程用 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 秒走完。
xiepan2010
5楼-- · 2019-12-16 23:09
dukelec 发表于 2018-11-10 22:52
轉換過程用 float, 最後 +0.5 轉 uint16,pwm 用 12 bit

为什么要加0.5  我在其他地方也看到这种操作  不明白什么目的
walle531
6楼-- · 2019-12-17 01:13
xiepan2010 发表于 2018-11-11 09:14
为什么要加0.5  我在其他地方也看到这种操作  不明白什么目的

强行四舍五入

一周热门 更多>