[ad_1]
やあ、
millis() カウンターがインクリメントすべきではないときにインクリメントしているようです。
秒数が 5831 と表示されていますが、最大でも 31 秒でした。かなり正確な温度モニターがあります。 58 は、LCD ドライバーが邪魔をしていることが原因である可能性があると推測していますが、If() は緑色のライトをオンにし、秒をリセットします。 ただし、画面上の値は保持されます。 Arduino IDE のファンではありません!
C++
if (temperature < Min_Temp) { Seconds = 0; digitalWrite(Green_LED, HIGH); digitalWrite(Blue_LED, LOW); digitalWrite(Red_LED,LOW); }else if(temperature >Min_Temp && temperature < Max_Temp) { digitalWrite(Green_LED,LOW); digitalWrite(Blue_LED,HIGH); digitalWrite(Red_LED,LOW); microsA = millis(); Seconds = (microsA /1000); }else if(temperature > Max_Temp) { Seconds = 0; digitalWrite(Green_LED,LOW); digitalWrite(Blue_LED,LOW); digitalWrite(Red_LED,HIGH); } lcd.setCursor(0, 1); lcd.print("Time:"); lcd.setCursor(5,1); lcd.print(Seconds); delay(500);
ただし、画面上の値は保持されます。 値は、温度を適切に行う I2C コマンドを介して送信されます。 コマンドを印刷するLCDコマンドに問題がある可能性があります
私が試したこと:
Seconds を 0 に設定すると、緑色の LED が点灯するので、if() のそのビットに入る必要があります。
解決策 2
こんにちは、みんな、
カウンターを正しく使用していなかった、使用していなかった
<
C++
startMillis = 0;
blah, blah, blah;
Timer = TimeValue - startMillis;
print (Timer);
答えを考えて質問することが常に起こります! ごめん!!
解決策 1
使用 Serial.Print(Seconds)
シリアルモニタを使用して出力を確認します。 これは、洞察を得る安価で迅速な方法です。
[ad_2]
コメント