diff --git a/examples/ds18b20.lua b/examples/ds18b20.lua new file mode 100644 index 00000000..8f4029f9 --- /dev/null +++ b/examples/ds18b20.lua @@ -0,0 +1,56 @@ +--[[ +-- 18b20 one wire example for NODEMCU +-- NODEMCU TEAM +-- LICENCE: http://opensource.org/licenses/MIT +-- Vowstar +--]] + +pin = 9 +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 \ No newline at end of file