打印

NodeMCU3.0.0如何操作一个DS18B20

[复制链接]
655|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
因为新版本更改了很多,功能更全了。所以操作上也变了。操作函数也变了。
-- 18b20 Example
pin = 2
ow.setup(pin)
count = 0
repeat
  count = count + 1
  addr = ow.reset_search(pin)
  addr = ow.search(pin)
  tmr.wdclr()
until (addr ~= nil) or (count > 100)
if addr == nil then
  print("No more addresses.")
else
  print(addr:byte(1,8))
  crc = ow.crc8(string.sub(addr,1,7))
  if crc == addr:byte(8) then
    if (addr:byte(1) == 0x10) or (addr:byte(1) == 0x28) then
      print("Device is a DS18S20 family device.")
        repeat
          ow.reset(pin)
          ow.select(pin, addr)
          ow.write(pin, 0x44, 1)
          tmr.delay(1000000)
          present = ow.reset(pin)
          ow.select(pin, addr)
          ow.write(pin,0xBE,1)
          print("P="..present)
          data = nil
          data = string.char(ow.read(pin))
          for i = 1, 8 do
            data = data .. string.char(ow.read(pin))
          end
          print(data:byte(1,9))
          crc = ow.crc8(string.sub(data,1,8))
          print("CRC="..crc)
          if crc == data:byte(9) then
             t = (data:byte(1) + data:byte(2) * 256) * 625
             t1 = t / 10000
             t2 = t % 10000
             print("Temperature="..t1.."."..t2.."Centigrade")
          end
          tmr.wdclr()
        until false
    else
      print("Device family is not recognized.")
    end
  else
    print("CRC is not valid!")
  end
end


使用特权

评论回复

相关帖子

沙发
gaoyang9992006|  楼主 | 2020-2-23 21:32 | 只看该作者
如果你不确定自己的板子上的端口对应哪个IO,你可以通过一个blink例子进行测试。
pin = 2
gpio.mode(pin,gpio.OUTPUT)
while 1 do
        gpio.write(pin,gpio.HIGH)
        tmr.delay(1000000)
        gpio.write(pin,gpio.LOW)
        tmr.delay(1000000)
end

使用特权

评论回复
评论
gaoyang9992006 2020-2-23 21:32 回复TA
只需要修改第一行的数字,然后运行,通过一个二极管或者小灯泡进行测试即可。 
板凳
gaoyang9992006|  楼主 | 2020-2-23 21:35 | 只看该作者



使用特权

评论回复
发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1961

主题

15931

帖子

208

粉丝