【Arduino】1、用LCD12864显示从18B20上读取的温度值

时间:2024-02-23 12:02:57

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

电路图: