summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266
diff options
context:
space:
mode:
Diffstat (limited to 'esp8266')
-rw-r--r--esp8266/modules/ds18x20.py37
-rw-r--r--esp8266/modules/onewire.py (renamed from esp8266/scripts/onewire.py)45
2 files changed, 42 insertions, 40 deletions
diff --git a/esp8266/modules/ds18x20.py b/esp8266/modules/ds18x20.py
new file mode 100644
index 0000000000..66983f5bcc
--- /dev/null
+++ b/esp8266/modules/ds18x20.py
@@ -0,0 +1,37 @@
+# DS18x20 temperature sensor driver for MicroPython.
+# MIT license; Copyright (c) 2016 Damien P. George
+
+_CONVERT = const(0x44)
+_RD_SCRATCH = const(0xbe)
+_WR_SCRATCH = const(0x4e)
+
+class DS18X20:
+ def __init__(self, onewire):
+ self.ow = onewire
+
+ def scan(self):
+ return [rom for rom in self.ow.scan() if rom[0] == 0x28]
+
+ def convert_temp(self):
+ self.ow.reset(True)
+ self.ow.writebyte(self.ow.SKIP_ROM)
+ self.ow.writebyte(_CONVERT)
+
+ def read_scratch(self, rom):
+ self.ow.reset(True)
+ self.ow.select_rom(rom)
+ self.ow.writebyte(_RD_SCRATCH)
+ buf = self.ow.read(9)
+ if self.ow.crc8(buf):
+ raise Exception('CRC error')
+ return buf
+
+ def write_scratch(self, rom, buf):
+ self.ow.reset(True)
+ self.ow.select_rom(rom)
+ self.ow.writebyte(_WR_SCRATCH)
+ self.ow.write(buf)
+
+ def read_temp(self, rom):
+ buf = self.read_scratch(rom)
+ return (buf[1] << 8 | buf[0]) / 16
diff --git a/esp8266/scripts/onewire.py b/esp8266/modules/onewire.py
index 686616950a..af5675649b 100644
--- a/esp8266/scripts/onewire.py
+++ b/esp8266/modules/onewire.py
@@ -15,8 +15,11 @@ class OneWire:
self.pin = pin
self.pin.init(pin.OPEN_DRAIN)
- def reset(self):
- return _ow.reset(self.pin)
+ def reset(self, required=False):
+ reset = _ow.reset(self.pin)
+ if required and not reset:
+ raise OneWireError
+ return reset
def readbit(self):
return _ow.readbit(self.pin)
@@ -87,41 +90,3 @@ class OneWire:
def crc8(self, data):
return _ow.crc8(data)
-
-class DS18B20:
- CONVERT = const(0x44)
- RD_SCRATCH = const(0xbe)
- WR_SCRATCH = const(0x4e)
-
- def __init__(self, onewire):
- self.ow = onewire
-
- def scan(self):
- return [rom for rom in self.ow.scan() if rom[0] == 0x28]
-
- def convert_temp(self):
- if not self.ow.reset():
- raise OneWireError
- self.ow.writebyte(SKIP_ROM)
- self.ow.writebyte(CONVERT)
-
- def read_scratch(self, rom):
- if not self.ow.reset():
- raise OneWireError
- self.ow.select_rom(rom)
- self.ow.writebyte(RD_SCRATCH)
- buf = self.ow.read(9)
- if self.ow.crc8(buf):
- raise OneWireError
- return buf
-
- def write_scratch(self, rom, buf):
- if not self.ow.reset():
- raise OneWireError
- self.ow.select_rom(rom)
- self.ow.writebyte(WR_SCRATCH)
- self.ow.write(buf)
-
- def read_temp(self, rom):
- buf = self.read_scratch(rom)
- return (buf[1] << 8 | buf[0]) / 16