|
發布時間: 2019-9-9 09:55
正文摘要:本帖最后由 如癡百感生 于 2019-9-9 16:49 編輯 圖中的判定值c>20是單片機內部AD采集值計算出來的溫度,當到達那個20時 會有上下小幅波動的情況,引腳電平也會跟著上下跳動 求如何在這程序中解決這 ... |
| 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,這樣可以去掉小幅波動的值的影響,希望可以幫到你 |