兩天前拿到的板子。首先試的就是18B20,可惜讀取不到值。剛開始我是直接接在了模擬口上的,后來才知道這不是模擬傳感器,是數字的。又換到數字口上的,可模擬的可以通過不同的電壓表示不同的溫度,可數字的,就肯定有一套機制了。
再Google,知道了OneWire庫和DallasTemperature庫。按照Demo程序還是讀取不到值,一直是0.00。
從網上也見過直接用的18B20芯片讀取溫度的,他們都是接了4.7K的上拉電阻的。可我想我買的是一體的芯片,直接用就可以了吧。
弄不出來就先放下了,先去整的LCD,LCD也是山寨的,板子上沒有焊排針,第一個晚上,我80%的時間都用在焊排針上了。不過還好,最終得以成功。
我買的這塊LCD很便宜,所以它是一個山寨貨。所以,它沒有使用說明。只是賣家有一句話,要使用串口“把R9上的電阻換到R10上”。實際按他說的做就沒錯。不過,不管電阻是放在R9上還是R10上,PSB腳就不要接了。在R9上(並行),PSB接了+5V還沒事,如果再把PSB接地(想換成串口模式),那就短路了。后果可想而知。
接線對照表如下:
/* LCD Arduino PIN1 = GND PIN2 = 5V PIN4(CS) = 8; PIN5(SID) = 9; PIN6(SCLK) = 10; PIN19 =5V PIN20 =GND
注意跟庫文件中的定義對應 */
19、20腳可以跟2、1腳用線直接連起來。不過我沒有這么做,我是直接接的面包板。
通電,上載程序,顯示成功。趕緊睡覺去了。
第二天,我把溫度傳感器加了4.8K(我沒有4.7K的電阻,用了兩個2.4K的串連)的上拉電阻,然后就一下出來了。高興。
圖1:上拉電阻
圖2:溫度傳感器
圖3:整體圖(左下角那一縷線是接到LCD的)
圖4:當前室溫
圖5、用手把傳感器捂一會,溫度就上來了。
然后再在LCD上顯示出來吧。結果,溫度是Float的,LCD的函數用的是unsigned char*,對我這個對C++一竅不通的人來說,浪費了一晚上的時間啊。郁悶、氣憤。
在QQ群里,也沒人能幫一把。寒心。
媽的,一切還得靠自己啊。
還好,在我要放棄的時候,它突然就好了。
實驗視頻:http://v.youku.com/v_show/id_XMzQxNjc3MjUy.html
電路圖: