两天前拿到的板子。首先试的就是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
电路图: