linkxia 发表于 2019-11-13 11:25:26

关于zigbee控制RGBW灯问题

新人一枚求教!目前用的CC2530,接触发现,RGBW灯混色控制是由网关下发一个X、Y值下来,然后转换成RGB,经过校准后,转换成RGBW,输出四路PWM控制!关于这个校准算法移植的时候发现POW()导致程序运行错误!请问这个校准算法或者RGBW算法 有可替换的吗
下面是校准算法!
void hwLight_GammaCorrectRGB(float *R, float *G, float *B)
{
if ( *R > 0.003 ) *R = (1.22 * ( pow(*R, ( 1/1.5 ) )) - 0.040);
else                      *R = 0; //1.8023 * var_R;
if ( *G > 0.003) *G = (1.22 * ( pow(*G, ( 1/1.5 ) )) - 0.040);
else                     *G = 0; //1.8023 * var_G;
if ( *B > 0.003 ) *B = (1.09 * ( pow(*B, ( 1/1.5 ) )) - 0.050);
else                     *B = 0; //1.8023 * var_B;
}
还有RGB转白光的算法
static void hwLight_RGB_to_RGBW( uint16 *R, uint16 *G, uint16 *B, uint16 *W )
{
uint16 w;
if ( MAX3(*R,*G,*B) == 0 )
{
    *W = 0;
    return;
}
w = (uint16)( ( (uint32)MIN3(*R,*G,*B) * ( *R + *G + *B ) ) / ( MAX3(*R,*G,*B) * 3 ) );
*R += w;
*G += w;
*B += w;
*W = MIN3(*R,*G,*B);
*W = (*W > PWM_FULL_DUTY_CYCLE) ? PWM_FULL_DUTY_CYCLE : *W;
*R -= *W;
*G -= *W;
*B -= *W;
}
页: [1]
查看完整版本: 关于zigbee控制RGBW灯问题