VL53L4CD ToF hardware help needed


I have four Adafruit VL53L4CD sensors connected to an Arduino Micro via an Adafruit multiplexer (at the end of 2m RJ45 cables with active terminators adjacent the sensors).
And it’s working fine, as in, moving a hand up and down over the sensors, which is how I use them, generates accurate distance info (which I’m then processing in Max, mapping to note pitch).(Which suggests to me that the issue is in the sensors rather than the arduino sketch.)
I’ve used these sensors over the last couple of weeks in 2 different workshop settings (one very high ceiling (a school hall), one moderate (around 12 ft).
The sensors behave as I would expect if something (ie a hand) is placed and moved up and down in the sensor’s movement range.
if there is nothing in range, and the sensor is moved so that it isn’t pointing completely vertically, even slightly from vertical, then I start getting random distance numbers - 2130, 0, 187, 2350, 0 and so on. I can filter out the way out of range numbers in Max successfully, but the jumps are also getting into the detection range, which means I get random notes playing when there is nobody playing the sensor.
Is this behaviour what others see? Is it to be expected? Ie when the laser is directed into the far distance (further than its specified range) it generates random distance results? Is there anything that can be done about it?
(I’ve also tried taking the sensors out of the acrylic casings I have them in, thinking that perhaps light was being reflected back the the edges of the hole the laser exits through, but that didn’t make any difference).

thanks for any help/insight…

PS. I should add that this doesn’t happen with the short range and long range ToF sensors that I use from Adafruit.


in case it’s of help to anyone else, what you do is look at the behavior of results.range_status.
What I see is that when the sensor is actually reading an object within its range, the Status value is 0 (zero). When it’s generating random values because there is nothing in range, the Status values vary >0. So it’s (AFAI understand it) just a matter of filtering out the unwanted values, which is trivial in Max (and now I’ll see if I can figure out how to do that in the arduino sketch).