7
7
"""
8
8
import time
9
9
import board
10
- import busio
11
10
from digitalio import DigitalInOut
12
11
from adafruit_vl53l0x import VL53L0X
13
12
14
- # declare the singleton variable for the default I2C bus
15
- i2c = busio .I2C (board . SCL , board . SDA )
13
+ # declare the singleton variable for the default I2C bus
14
+ i2c = board .I2C ()
16
15
17
- # declare the digital output pins connected to the "SHDN" pin on each VL53L0X sensor (this
18
- # pin is labeled "XSHUT" on non-Adafruit breakout boards). Default behavior upon
19
- # instantiation is (direction=INPUT) + (pull=None) = LOW output signal
20
- x_shut = [
16
+ # declare the digital output pins connected to the "SHDN" pin on each VL53L0X sensor
17
+ xshut = [
21
18
DigitalInOut (board .D7 ),
22
19
DigitalInOut (board .D9 )
20
+ # add more sensors by defining their SHDN pins here
23
21
]
24
- # idealy you might want to use an IO extender as these pins are only used to control the
25
- # VL53L0X's power state.
26
22
27
- for power_pin in x_shut :
28
- # make sure these pins are an digital output, not a digital input
23
+ for power_pin in xshut :
24
+ # make sure these pins are a digital output, not a digital input
29
25
power_pin .switch_to_output (value = False )
30
26
# These pins are active when Low, meaning:
31
27
# if the output signal is LOW, then the VL53L0X sensor is off.
32
28
# if the output signal is HIGH, then the VL53L0X sensor is on.
33
- # (value=False) = LOW output signal; LOW output disables/shutsdown the VL53L0X
34
29
# all VL53L0X sensors are now off
35
30
36
31
# initialize a list to be used for the array of VL53L0X sensors
37
32
vl53 = []
38
33
39
34
# now change the addresses of the VL53L0X sensors
40
- for i , power_pin in enumerate (x_shut ):
35
+ for i , power_pin in enumerate (xshut ):
41
36
# turn on the sensor to allow hardware check
42
37
power_pin .value = True
43
38
# instantiate the VL53L0X sensors on the I2C bus & insert it into the "vl53" list
44
39
vl53 .insert (i , VL53L0X (i2c )) # also performs hardware check
45
40
# don't need to change the address of the last VL53L0X sensor
46
- if i < len (x_shut ) - 1 :
41
+ if i < len (xshut ) - 1 :
47
42
# default address is 0x29. Change that to something else
48
- vl53 [i ].set_address (i + 0x30 ) # address assigned should not be already in use
43
+ vl53 [i ].set_address (i + 0x30 ) # address assigned should NOT be already in use
49
44
# there is a helpful list of pre-designated I2C addresses for various I2C devices at
50
45
# https://learn.adafruit.com/i2c-addresses/the-list
51
- # According to this list 0x30-0x34 are available although the list may be outdated/incomplete.
52
- # you can scan for all I2C devices and detirmine their addresses using:
53
- # "i2cdetect 1 -y" (without quotes) on a Raspberry Pi terminal or
54
- # In the python REPR, execute the following commands:
46
+ # According to this list 0x30-0x34 are available, although the list may be incomplete.
47
+ # In the python REPR, you can scan for all I2C devices that are attached and detirmine
48
+ # their addresses using:
55
49
# >>> import busio
56
50
# >>> i2c = busio.I2C(board.SCL, board.SDA)
57
- # >>> i2c.try_lock() # if False is returned: something else is using the i2c bus
58
- # >>> [hex(x) for x in i2c.scan()]
59
- # >>> i2c.unlock() # free up the bus for something else to use it
51
+ # >>> if i2c.try_lock(): # i2c.scan() requires a lock on the I2C bus
52
+ # >>> [hex(x) for x in i2c.scan()]
53
+ # >>> i2c.unlock() # free up the bus for something else to use it
60
54
61
55
def detect_range (count = 5 ):
62
56
""" take count=5 samples """
@@ -66,6 +60,5 @@ def detect_range(count=5):
66
60
time .sleep (1.0 )
67
61
count -= 1
68
62
69
- print ("""\
70
- multiple VL53L0X sensors' addresses are assigned properly\n \
71
- execute detect_range() to read each sensors range readings""" )
63
+ print ("Multiple VL53L0X sensors' addresses are assigned properly\n "
64
+ "execute detect_range() to read each sensors range readings" )
0 commit comments