
AAMOI when you wrote your driver did you manage to track down a programming manual?
Code: Select all
def change_id(self, new_id):
self.writeReg(0x0001, new_id & 0x7F)
pyb.delay(50)
self.address = new_id
JonHylands wrote: ↑Fri Nov 27, 2020 9:59 pmSo I'm working on Roz, my bioloid quad walker, and I've built a new head with five VL53L1X sensors in it.
It turns out the OpenMV project has a perfectly functional VL53L1X library:
https://github.com/openmv/openmv/blob/m ... vl53l1x.py
That works for a single sensor. I added a new method to allow the user to change the id of the current sensor:
You need a lot of pauses in the right places to initialize 5 of the sensors, but it works, and I have it running.Code: Select all
def change_id(self, new_id): self.writeReg(0x0001, new_id & 0x7F) pyb.delay(50) self.address = new_id
Code: Select all
from machine import I2C
self.i2c = I2C(HEAD_I2C_BUS)
Code: Select all
HEAD_SHUTDOWN_LEFT = pyb.Pin.cpu.C3
HEAD_SHUTDOWN_FRONT_LEFT = pyb.Pin.cpu.B9
HEAD_SHUTDOWN_FRONT = pyb.Pin.cpu.B8
HEAD_SHUTDOWN_FRONT_RIGHT = pyb.Pin.cpu.C6
HEAD_SHUTDOWN_RIGHT = pyb.Pin.cpu.C7
HEAD_RANGE_DEFAULT_ADDRESS = 0x29
HEAD_RANGE_FRONT_ADDRESS = 0x30
HEAD_RANGE_FRONT_LEFT_ADDRESS = 0x31
HEAD_RANGE_FRONT_RIGHT_ADDRESS = 0x32
HEAD_RANGE_LEFT_ADDRESS = 0x33
HEAD_RANGE_RIGHT_ADDRESS = 0x34
def initializeRangeSensors(self):
shutdown_left_pin = pyb.Pin(HEAD_SHUTDOWN_LEFT, pyb.Pin.OUT_PP)
shutdown_front_left_pin = pyb.Pin(HEAD_SHUTDOWN_FRONT_LEFT, pyb.Pin.OUT_PP)
shutdown_front_pin = pyb.Pin(HEAD_SHUTDOWN_FRONT, pyb.Pin.OUT_PP)
shutdown_front_right_pin = pyb.Pin(HEAD_SHUTDOWN_FRONT_RIGHT, pyb.Pin.OUT_PP)
shutdown_right_pin = pyb.Pin(HEAD_SHUTDOWN_RIGHT, pyb.Pin.OUT_PP)
# Shut down all the sensors
shutdown_left_pin.value(0)
shutdown_front_left_pin.value(0)
shutdown_front_right_pin.value(0)
shutdown_right_pin.value(0)
shutdown_front_pin.value(0)
pyb.delay(250)
shutdown_front_pin.value(1)
pyb.delay(250)
self.front_lidar = VL53L1X(self.i2c, address=HEAD_RANGE_DEFAULT_ADDRESS)
pyb.delay(100)
self.front_lidar.change_id(HEAD_RANGE_FRONT_ADDRESS)
pyb.delay(100)
shutdown_front_left_pin.value(1)
pyb.delay(100)
self.front_left_lidar = VL53L1X(self.i2c, address=HEAD_RANGE_DEFAULT_ADDRESS)
pyb.delay(100)
self.front_left_lidar.change_id(HEAD_RANGE_FRONT_LEFT_ADDRESS)
pyb.delay(100)
shutdown_front_right_pin.value(1)
pyb.delay(100)
self.front_right_lidar = VL53L1X(self.i2c, address=HEAD_RANGE_DEFAULT_ADDRESS)
pyb.delay(100)
self.front_right_lidar.change_id(HEAD_RANGE_FRONT_RIGHT_ADDRESS)
pyb.delay(100)
shutdown_left_pin.value(1)
pyb.delay(100)
self.left_lidar = VL53L1X(self.i2c, address=HEAD_RANGE_DEFAULT_ADDRESS)
pyb.delay(100)
self.left_lidar.change_id(HEAD_RANGE_LEFT_ADDRESS)
pyb.delay(100)
shutdown_right_pin.value(1)
pyb.delay(100)
self.right_lidar = VL53L1X(self.i2c, address=HEAD_RANGE_DEFAULT_ADDRESS)
pyb.delay(100)
self.right_lidar.change_id(HEAD_RANGE_RIGHT_ADDRESS)
pyb.delay(100)