if((C>19.8)&&(C<20.2)) 这样是否可以,注意定义C的类型。 |
lele5211314 发表于 2019-9-10 09:57 我采集的是温度 它是会不断变化的 ,在变化的时候,判定其中一个数值,这个数值会上下波动 因为判定的结果是拉低引脚控制继电器,它波动就会让继电器嗒嗒嗒 |
egypt 发表于 2019-9-10 11:21 你好 能具体描叙一下吗 不是很懂,或者有没有相关类似的例子可参考一下 非常感谢 |
楼主提及的问题就像 万用电表 测量显示值一样 打个简化的比方:当误差(均方差或者平均值误差之类)低于阈值时,以缓存队列平均值做显示。当高于阈值时,以当前值显示。(相当于误差小,就忽略误差,以平均值显示) 处理手法很多样。简化的做法就先把数据缓存为先进先出队列,求求平均数,看看队列每笔和平均数误差再决定以何种方式显示呗。搜索一下均方差、权重 之类的相关了解一下 |
判断两边最高点两边的阈值,然后找出最高点 |
imxuheng 发表于 2019-9-9 15:13 采集计算的值可能会波动 例如采集 计算的值是20 这个值可能会在19.8和20.2之间跳动 那么这个LED就闪烁了 我希望 到这个值就稳定的LED=0;不跳动 |
temp是什么变量,你截取的程序片段里面看不出是什么。要是只是用c只是变量判断的话,把你图片里面选中的蓝色if判断部分改成 if(c>20) LED=0;//LED亮起 if(c<20) LED=1;//LED熄灭 |
jsbjzy 发表于 2019-9-9 11:15 你好 是这样吗 if(c>20&&c==20.2) |
jsbjzy 发表于 2019-9-9 11:15 具体怎么处理的能帮我写一下吗 非常感谢 |
可以在if(c>20)的函数里面加个标志位,表示已经检测到大于20的值,下次再执行到此处时,如果检测值在(20-波动值)以下才认为值下降,否则认为值还是超过20,这样可以去掉小幅波动的值的影响,希望可以帮到你 |