Skip to content

Commit 3b68fc7

Browse files
committed
fixed reads
1 parent c39aa8a commit 3b68fc7

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

adafruit_pcf8591/pcf8591.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
* Adafruit's Register library: https://github.com/adafruit/Adafruit_CircuitPython_Register
2727
"""
2828

29-
# imports
30-
3129
__version__ = "0.0.0-auto.0"
3230
__repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_PCF8591.git"
3331
# from time import sleep
@@ -39,13 +37,12 @@
3937
_PCF8591_ENABLE_DAC = const(0x40) # control bit for having the DAC active
4038

4139
# Pin constants
42-
A0 = 0
43-
A1 = 1
44-
A2 = 2
45-
A3 = 3
46-
47-
OUT = 0
40+
A0 = const(0)
41+
A1 = const(1)
42+
A2 = const(2)
43+
A3 = const(3)
4844

45+
OUT = const(0)
4946

5047
class PCF8591:
5148
"""Driver for the PCF8591 DAC & ADC Combo breakout.
@@ -66,6 +63,8 @@ def __init__(self, i2c_bus, address=_PCF8591_DEFAULT_ADDR, reference_voltage=3.3
6663
raise ValueError("reference_voltage must be from 2.5 - 6.0")
6764
self._buffer = bytearray(2)
6865
print("self.reference_voltage = ", self.reference_voltage)
66+
# possibly measure each channel here to prep readings for
67+
# user calls to `read`
6968

7069
@property
7170
def reference_voltage(self):
@@ -78,20 +77,34 @@ def read(self, channel):
7877
7978
param: :adcnum The single-ended ADC to read from, 0 thru 3
8079
"""
81-
self._buffer = bytearray(2)
8280
if self._dac_enabled:
8381
self._buffer[0] = _PCF8591_ENABLE_DAC
8482
self._buffer[1] = self._dacval
83+
else:
84+
self._buffer[0] = 0
85+
self._buffer[1] = 0
8586

8687
if channel < 0 or channel > 3:
8788
raise ValueError("channel must be from 0-3")
88-
# adc_channel cannot be larger than 3
89-
channel = min(channel, 3)
89+
90+
self._buffer[0] |= channel & 0x3
91+
92+
with self.i2c_device as i2c:
93+
i2c.write_then_readinto(self._buffer, self._buffer)
94+
95+
if self._dac_enabled:
96+
self._buffer[0] = _PCF8591_ENABLE_DAC
97+
self._buffer[1] = self._dacval
98+
else:
99+
self._buffer[0] = 0
100+
self._buffer[1] = 0
90101
self._buffer[0] |= channel & 0x3
91-
# TODO: Add an Argument error raise here
102+
103+
# final read before render
92104

93105
with self.i2c_device as i2c:
94106
i2c.write_then_readinto(self._buffer, self._buffer)
107+
95108
return unpack_from(">B", self._buffer[1:])[0]
96109

97110
@property

0 commit comments

Comments
 (0)