????while(1) ????{ ????????sum+=ADC_ConvertedValue; ????????if(++count==1000) ????????{ ????????????currpwm=map(sum/count,0,826,25,499); ????????????printf("lastpwm=%d,currpwm=%d\r\n",lastpwm,currpwm); ????????????ColorToColor(lastpwm,currpwm);//漸變調(diào)光 ????????????lastpwm=currpwm; ????????????sum=0;count=0; ????????} ????????Delay_Ms(1); ????} ???? ???? ????/*********************************************************************************** *?漸變算法 *?誤差?<=?2 ************************************************************************************/ u32?ColorToColor(u32?last_pwm,?u32?_pwm) { ????u32?NStep=0,i=0,temp=0;????????????????????????????//?需要幾步 ????int32_t?differPWM=0; ????float??avrStep=0; ????(last_pwm<_pwm)?(NStep=_pwm-last_pwm):(NStep=last_pwm-_pwm); ????differPWM=_pwm-last_pwm; ????//?漸變開始 ????avrStep???=?(float)differPWM???/?NStep; ????for(i=0;?i
利用ch32v003的ADC采光強(qiáng),再轉(zhuǎn)PWM控制LCD屏幕亮度遇到的問題:
1.一致性不好,雖然都是200Hz的PWM,但是不同屏響應(yīng)不同;
2.光敏二極管靈敏度很高,雖然有做算術(shù)均平濾波,1S周期采樣完成進(jìn)入PWM漸變調(diào)控
3.但客戶反饋有兩段變化,手一揮過就能檢測(cè)到由亮變暗,由暗變亮過程。
所以希望各位能夠不吝賜教,如何進(jìn)行AD采樣和PWM調(diào)整。
熱門產(chǎn)品 :
CH592: RISC-V內(nèi)核BLE5.4無(wú)線MCU