我有這個奇怪的問題。當TMP 36傳感器是唯一連接到Arduino Uno板的東西時,它可以正常工作。電壓測量值和溫度值是準確且一致的。但是,當我將LCD屏幕連接到Uno並讓程序將TMP的測量結果打印到屏幕上時,這些值將變得不一致,並且從一個讀數到另一個讀數的最大變化範圍為10華氏度。 (我讓傳感器每秒進行一次測量。)當未插入LCD屏幕時,不會發生這種情況。我決定從屏幕上卸下單獨的連接器,然後查看測量結果何時再次保持一致。我嘗試了一次,發現當我反復從接地引腳上插入和移除接地線時,連接到屏幕上連接5的接地線導致值改變。即使除接地線外,LCD上沒有其他任何連接(未打開),TPM值也在改變。我不知道這是怎麼可能的,也不知道這是硬件還是軟件問題。
我從傳感器線開始,然後是接地線,然後是兩根,重新連接了LCD屏幕。 5V連接,其中一個具有220 ohm電阻。我在電路通電時進行了此操作,並觀察了任何大的變化的值。第一次更改是在我為最後一條5V電線接線後幾秒鐘。傳感器測量的溫度為80華氏度,然後一秒鐘後為85華氏度。然後到達81幾秒鐘,然後是87。這些值繼續變化,但變化不大。順便說一下,Arduino所在區域的溫度約為82華氏度。
當LCD未連接至屏幕時,TMP值的變化不會超過3華氏度。我不明白是什麼原因造成的。有沒有其他人以前有這個問題,或者知道原因?
這裡是佈局。
#include <LiquidCrystal.h>LiquidCrystal lcd(12,11,5,4,3,2); const int sensorPin = A5;
const float基線Temp = 20.0; void setup(){Serial.begin(9600);} void loop(){int sensorVal = AnalogRead(sensorPin); Serial.print(“ Sensor value:”); Serial.print(sensorVal);浮動電壓=(sensorVal / 1024.0)* 5.0; Serial.print(“,volts:”); Serial.print(電壓); Serial.print(“,攝氏度:”);浮點溫度=(電壓-.5)* 100; Serial.print(溫度); Serial.print(“,度F:”);浮華氏溫度=(溫度* 1.8 + 32); Serial.println(fahrenheit);延遲(1000); lcd.begin(16,2); lcd.print(華氏度); lcd.print(“華氏度”); float averageTemp; if(溫度<基線溫度){lcd.setCursor(0,1); lcd.print(“低於室溫”); }}