]> hydra-www.ietfng.org Git - acmetensortoys-esp-lua_core/commitdiff
1Wire utilities
authorNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Sat, 29 Jul 2017 20:16:37 +0000 (16:16 -0400)
committerNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Mon, 31 Jul 2017 11:59:12 +0000 (07:59 -0400)
util/ow-ds18b20.lua [new file with mode: 0644]
util/ow-scan.lua [new file with mode: 0644]

diff --git a/util/ow-ds18b20.lua b/util/ow-ds18b20.lua
new file mode 100644 (file)
index 0000000..85b1613
--- /dev/null
@@ -0,0 +1,20 @@
+return function(tq, pin, addr, power, k)
+ local function doread()
+  ow.reset(pin)
+  ow.select(pin, addr)
+  ow.write(pin,0xBE,power)
+
+  local data = string.char(ow.read(pin))
+  for i = 1, 8 do data = data .. string.char(ow.read(pin)) end
+
+  if data:byte(9) == ow.crc8(string.sub(data,1,8))
+   then k(data:byte(1) + 256*data:byte(2))
+   else k(nil)
+  end
+ end
+
+ ow.reset(pin)
+ ow.select(pin, addr)
+ ow.write(pin, 0x44, power)
+ tq:queue(1000,doread)
+end
diff --git a/util/ow-scan.lua b/util/ow-scan.lua
new file mode 100644 (file)
index 0000000..9b063a3
--- /dev/null
@@ -0,0 +1,13 @@
+return function(pin, reset)
+  local x = {}
+  local addr = nil
+  if reset then
+   ow.reset(pin)
+   ow.reset_search(pin)
+  end
+  repeat
+    addr = ow.search(pin)
+    x[#x+1] = addr
+  until (addr == nil) or (#x > 10)
+  return x
+end