Skip to content

Commit 5b305da

Browse files
committed
finally fixed bulk read bug :|
1 parent 3240680 commit 5b305da

File tree

3 files changed

+32
-24
lines changed

3 files changed

+32
-24
lines changed

adafruit_as7341.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@
6060
_AS7341_STATUS = const(
6161
0x93
6262
) # Interrupt status registers. Indicates the occourance of an interrupt
63+
_AS7341_ASTATUS = const(
64+
0x94
65+
) # Spectral Saturation and Gain status. Reading from here latches the data
6366
_AS7341_CH0_DATA_L = const(0x95) # ADC Channel 0 Data
6467
_AS7341_CH0_DATA_H = const(0x96) # ADC Channel 0 Data
6568
_AS7341_CH1_DATA_L = const(0x97) # ADC Channel 1 Data
@@ -237,7 +240,9 @@ class AS7341: # pylint:disable=too-many-instance-attributes
237240
_gpio_to_adc = RWBit(_AS7341_GPIO, 1)
238241
_gpio_as_input = RWBit(_AS7341_GPIO2, 2)
239242

240-
_all_channels = Struct(_AS7341_CH0_DATA_L, "<HHHHHH")
243+
# "Reading the ASTATUS register (0x60 or 0x94) latches
244+
# all 12 spectral data bytes to that status read." Datasheet Sec. 10.2.7
245+
_all_channels = Struct(_AS7341_ASTATUS, "<BHHHHHH")
241246
_led_current_bits = RWBits(7, _AS7341_LED, 0)
242247
_led_enabled = RWBit(_AS7341_LED, 7)
243248
_cfg0 = UnaryStruct(_AS7341_CFG0, "<B")
@@ -290,12 +295,14 @@ def all_channels(self):
290295
"""The current readings for all six ADC channels"""
291296

292297
self._configure_f1_f4()
293-
low_channel_reads = self._all_channels
298+
adc_reads_f1_f4 = self._all_channels
299+
reads = adc_reads_f1_f4[1:-2]
294300

295301
self._configure_f5_f8()
296-
high_channel_reads = self._all_channels
302+
adc_reads_f5_f8 = self._all_channels
303+
reads += adc_reads_f5_f8[1:-2]
297304

298-
return low_channel_reads + high_channel_reads
305+
return reads
299306

300307
@property
301308
def channel_415nm(self):

examples/as7341_batched_readings.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,21 @@
99
sensor = AS7341(i2c)
1010

1111

12-
def bar_graph(value):
13-
sm = int(value / 1000)
14-
return sm * "*"
12+
def bar_graph(read_value):
13+
scaled = int(read_value / 1000)
14+
return "[%5d] " % read_value + (scaled * "*")
1515

1616

1717
while True:
1818
sensor_channels = sensor.all_channels
19-
print("F1 - 415nm/Violet %s" % bar_graph(sensor_channels[0]))
19+
print("F1 - 415nm/Violet %s" % bar_graph(sensor_channels[0]))
2020
print("F2 - 445nm//Indigo %s" % bar_graph(sensor_channels[1]))
21-
print("F3 - 480nm//Blue %s" % bar_graph(sensor_channels[2]))
22-
print("F4 - 515nm//Cyan %s" % bar_graph(sensor_channels[3]))
23-
print("F5 - 555nm/Green %s" % bar_graph(sensor_channels[4]))
24-
print("F6 - 590nm/Yellow %s" % bar_graph(sensor_channels[5]))
25-
print("F7 - 630nm/Orange %s" % bar_graph(sensor_channels[6]))
26-
print("F8 - 680nm/Red %s" % bar_graph(sensor_channels[7]))
21+
print("F3 - 480nm//Blue %s" % bar_graph(sensor_channels[2]))
22+
print("F4 - 515nm//Cyan %s" % bar_graph(sensor_channels[3]))
23+
print("F5 - 555nm/Green %s" % bar_graph(sensor_channels[4]))
24+
print("F6 - 590nm/Yellow %s" % bar_graph(sensor_channels[5]))
25+
print("F7 - 630nm/Orange %s" % bar_graph(sensor_channels[6]))
26+
print("F8 - 680nm/Red %s" % bar_graph(sensor_channels[7]))
2727
print("\n------------------------------------------------")
28+
2829
sleep(1)

examples/as7341_simpletest.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@
99
sensor = AS7341(i2c)
1010

1111

12-
def bar_graph(value):
13-
sm = int(value / 1000)
14-
return sm * "*"
12+
def bar_graph(read_value):
13+
scaled = int(read_value / 1000)
14+
return "[%5d] " % read_value + (scaled * "*")
1515

1616

1717
while True:
1818

19-
print("F1 - 415nm/Violet %s" % bar_graph(sensor.channel_415nm))
19+
print("F1 - 415nm/Violet %s" % bar_graph(sensor.channel_415nm))
2020
print("F2 - 445nm//Indigo %s" % bar_graph(sensor.channel_445nm))
21-
print("F3 - 480nm//Blue %s" % bar_graph(sensor.channel_480nm))
22-
print("F4 - 515nm//Cyan %s" % bar_graph(sensor.channel_515nm))
23-
print("F5 - 555nm/Green %s" % bar_graph(sensor.channel_555nm))
24-
print("F6 - 590nm/Yellow %s" % bar_graph(sensor.channel_590nm))
25-
print("F7 - 630nm/Orange %s" % bar_graph(sensor.channel_630nm))
26-
print("F8 - 680nm/Red %s" % bar_graph(sensor.channel_680nm))
21+
print("F3 - 480nm//Blue %s" % bar_graph(sensor.channel_480nm))
22+
print("F4 - 515nm//Cyan %s" % bar_graph(sensor.channel_515nm))
23+
print("F5 - 555nm/Green %s" % bar_graph(sensor.channel_555nm))
24+
print("F6 - 590nm/Yellow %s" % bar_graph(sensor.channel_590nm))
25+
print("F7 - 630nm/Orange %s" % bar_graph(sensor.channel_630nm))
26+
print("F8 - 680nm/Red %s" % bar_graph(sensor.channel_680nm))
2727
print("\n------------------------------------------------")
2828
sleep(1)

0 commit comments

Comments
 (0)