Skip to content

Commit e848dcd

Browse files
orangecmsbessman
authored andcommitted
BMP180: migrate to new I2C API
1 parent 8a5bd49 commit e848dcd

File tree

1 file changed

+22
-31
lines changed

1 file changed

+22
-31
lines changed

pslab/external/BMP180.py

Lines changed: 22 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,24 @@
1-
from __future__ import print_function
2-
31
import time
4-
52
from numpy import int16
6-
7-
8-
def connect(route, **args):
9-
return BMP180(route, **args)
10-
11-
12-
class BMP180:
13-
ADDRESS = 0x77
14-
REG_CONTROL = 0xF4
15-
REG_RESULT = 0xF6
16-
CMD_TEMP = 0x2E
17-
CMD_P0 = 0x34
18-
CMD_P1 = 0x74
19-
CMD_P2 = 0xB4
20-
CMD_P3 = 0xF4
3+
from pslab.bus import I2CSlave
4+
5+
class BMP180(I2CSlave):
6+
_ADDRESS = 0x77
7+
_REG_CONTROL = 0xF4
8+
_REG_RESULT = 0xF6
9+
_CMD_TEMP = 0x2E
10+
_CMD_P0 = 0x34
11+
_CMD_P1 = 0x74
12+
_CMD_P2 = 0xB4
13+
_CMD_P3 = 0xF4
2114
oversampling = 0
2215
NUMPLOTS = 3
2316
PLOTNAMES = ['Temperature', 'Pressure', 'Altitude']
24-
name = 'Altimeter BMP180'
25-
26-
def __init__(self, I2C, **args):
27-
self.ADDRESS = args.get('address', self.ADDRESS)
17+
name = 'BMP180 Altimeter'
2818

29-
self.I2C = I2C
19+
def __init__(self, **args):
20+
self._ADDRESS = args.get('address', self._ADDRESS)
21+
super().__init__(self._ADDRESS)
3022

3123
self.MB = self.__readInt__(0xBA)
3224

@@ -50,26 +42,25 @@ def __init__(self, I2C, **args):
5042
print('calib:', self.c3, self.c4, self.b1, self.c5, self.c6, self.mc, self.md, self.x0, self.x1, self.x2,
5143
self.y0, self.y1, self.p0, self.p1, self.p2)
5244
self.params = {'setOversampling': [0, 1, 2, 3]}
53-
self.name = 'BMP180 Altimeter'
45+
5446
self.initTemperature()
55-
self.readTemperature()
5647
self.initPressure()
5748
self.baseline = self.readPressure()
5849

5950
def __readInt__(self, addr):
60-
return int16(self.__readUInt__(addr))
51+
return int16(self.read_byte(addr))
6152

6253
def __readUInt__(self, addr):
63-
vals = self.I2C.readBulk(self.ADDRESS, addr, 2)
54+
vals = self.read(2, addr)
6455
v = 1. * ((vals[0] << 8) | vals[1])
6556
return v
6657

6758
def initTemperature(self):
68-
self.I2C.writeBulk(self.ADDRESS, [self.REG_CONTROL, self.CMD_TEMP])
59+
self.write([self._REG_CONTROL, self._CMD_TEMP])
6960
time.sleep(0.005)
7061

7162
def readTemperature(self):
72-
vals = self.I2C.readBulk(self.ADDRESS, self.REG_RESULT, 2)
63+
vals = self.read(2, self._REG_RESULT)
7364
if len(vals) == 2:
7465
T = (vals[0] << 8) + vals[1]
7566
a = self.c5 * (T - self.c6)
@@ -84,11 +75,11 @@ def setOversampling(self, num):
8475
def initPressure(self):
8576
os = [0x34, 0x74, 0xb4, 0xf4]
8677
delays = [0.005, 0.008, 0.014, 0.026]
87-
self.I2C.writeBulk(self.ADDRESS, [self.REG_CONTROL, os[self.oversampling]])
78+
self.write([self._REG_CONTROL, os[self.oversampling]])
8879
time.sleep(delays[self.oversampling])
8980

9081
def readPressure(self):
91-
vals = self.I2C.readBulk(self.ADDRESS, self.REG_RESULT, 3)
82+
vals = self.read(3, self._REG_RESULT)
9283
if len(vals) == 3:
9384
P = 1. * (vals[0] << 8) + vals[1] + (vals[2] / 256.0)
9485
s = self.T - 25.0

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy