|
楼主 |
发表于 2020-3-3 11:27
|
显示全部楼层
本帖最后由 createskyblue 于 2020-3-3 11:42 编辑
第一点是这样的IrisSideList = IrisSideList[i + 1];
0 1 2 3 4 5 6
a b c d e f g 处理前
b c d e f g g 处理后
是丢弃最后一个数字
IrisSide += IrisSideList;
IrisSide=b+c+d+e+f+g+g <--注意有两个g
并让数列向前移位
第二点实际上原本是没问题的,因为g重复两遍!但是刚刚发现第一步处理中忘记不要把第7个数加进去导致了误差,感谢提出这个问题,我会发布修复更新
修复后
[mw_shl_code=arduino,true]void iris(int x, int y) {
u8g2.setDrawColor(0);
//u8g2.drawFilledEllipse(64, 32, map(analogRead(A0), 0, 1023, 1, 64), 25);
/*
平滑光线变化
*/
IrisSide = 0;
for (byte i = 0; i < 7; i++) {
//丢弃列表最后一个数据并写入新的环境光线强度采样
IrisSideList = IrisSideList[i + 1];
if (i!=6) IrisSide += IrisSideList;
//Serial.println(String("[") + i + String("]") + String(" : ") + IrisSideList + String(" "));
}
IrisSideList[7] = (analogRead(A1) + analogRead(A2)) / 2;
// Serial.println(IrisSide);
IrisSide = IrisSide / 6;
//Serial.println(IrisSide);
u8g2.drawFilledEllipse(64 + x, 32 + y, map(IrisSide, 0, 1023, 21, 9), map(IrisSide, 0, 1023, 24, 21));
}[/mw_shl_code]
|
|