NodeMCU3.0.0如何操作一个DS18B20

[复制链接]
 楼主| gaoyang9992006 发表于 2020-2-23 21:31 | 显示全部楼层 |阅读模式
因为新版本更改了很多,功能更全了。所以操作上也变了。操作函数也变了。
  1. -- 18b20 Example
  2. pin = 2
  3. ow.setup(pin)
  4. count = 0
  5. repeat
  6.   count = count + 1
  7.   addr = ow.reset_search(pin)
  8.   addr = ow.search(pin)
  9.   tmr.wdclr()
  10. until (addr ~= nil) or (count > 100)
  11. if addr == nil then
  12.   print("No more addresses.")
  13. else
  14.   print(addr:byte(1,8))
  15.   crc = ow.crc8(string.sub(addr,1,7))
  16.   if crc == addr:byte(8) then
  17.     if (addr:byte(1) == 0x10) or (addr:byte(1) == 0x28) then
  18.       print("Device is a DS18S20 family device.")
  19.         repeat
  20.           ow.reset(pin)
  21.           ow.select(pin, addr)
  22.           ow.write(pin, 0x44, 1)
  23.           tmr.delay(1000000)
  24.           present = ow.reset(pin)
  25.           ow.select(pin, addr)
  26.           ow.write(pin,0xBE,1)
  27.           print("P="..present)
  28.           data = nil
  29.           data = string.char(ow.read(pin))
  30.           for i = 1, 8 do
  31.             data = data .. string.char(ow.read(pin))
  32.           end
  33.           print(data:byte(1,9))
  34.           crc = ow.crc8(string.sub(data,1,8))
  35.           print("CRC="..crc)
  36.           if crc == data:byte(9) then
  37.              t = (data:byte(1) + data:byte(2) * 256) * 625
  38.              t1 = t / 10000
  39.              t2 = t % 10000
  40.              print("Temperature="..t1.."."..t2.."Centigrade")
  41.           end
  42.           tmr.wdclr()
  43.         until false
  44.     else
  45.       print("Device family is not recognized.")
  46.     end
  47.   else
  48.     print("CRC is not valid!")
  49.   end
  50. end


 楼主| gaoyang9992006 发表于 2020-2-23 21:32 | 显示全部楼层
如果你不确定自己的板子上的端口对应哪个IO,你可以通过一个blink例子进行测试。
  1. pin = 2
  2. gpio.mode(pin,gpio.OUTPUT)
  3. while 1 do
  4.         gpio.write(pin,gpio.HIGH)
  5.         tmr.delay(1000000)
  6.         gpio.write(pin,gpio.LOW)
  7.         tmr.delay(1000000)
  8. end

评论

只需要修改第一行的数字,然后运行,通过一个二极管或者小灯泡进行测试即可。  发表于 2020-2-23 21:32
 楼主| gaoyang9992006 发表于 2020-2-23 21:35 | 显示全部楼层
个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2045

主题

16350

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2045

主题

16350

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部