每秒抓一次光感測器資料, 並使用陣列來儲存. 並取前3筆歷史資料進行平均, 這樣可避免突發的過高/低值影響機器人運作。
移動平均法每筆資料比重相同, N筆資料的比重就是1/N。 我們可以將較舊的資料比重調低. 例如 0.4 + 0.3 + 0.2 + 0.1。 最舊的資料只占比重的10%, 這稱為加權平均法。
此方法常應用在二輪平衡車, 用來平滑Gyro 的突發震盪。
================================================================
task main(){
int sum, i=0, arr[4]
SetSensorLight(S2){
while(true){
arr[0] = Sensor(S2); Wait(1000); //sample once per second
for(i=1 ; i<4; i++){
arr[i] = arr[i-1]; //前一筆資料往後推
}
sum = (arr[0] + arr[1] + arr[2] + arr[3] )/4; //求平均
NumOut(20, LCD_LINE1, Sensor(S2)); //顯示即時光值
NumOut(20, LCD_LINE2, sum); //顯示平均光值
}
}
}