MRMS
mrm-lid2.h
1 #pragma once
2 #include "Arduino.h"
3 #include <Wire.h>
4 #include "VL53L1X_api.h"
5 
13 #define MAX_VL53L1XS 12 // Maximum number of sensors.
14 
15 typedef void(*ArgumenlessFunction)();
16 typedef bool(*BreakCondition)();
17 
18 class VL53L1Xs
19 {
20  uint16_t lastDistance[MAX_VL53L1XS]; // Last distance in mm
21  uint32_t lastMeasurement[MAX_VL53L1XS]; // Last distance measurement in ms
22  int nextFree = 0; // Sensor count + 1
23  uint8_t pins[MAX_VL53L1XS]; // Pins the LIDARs use for XSHUT.
24  HardwareSerial * serial; // Additional serial port
25  VL53L1_Dev_t *pDev[MAX_VL53L1XS];
26  bool warnings; // Display warnings.
27 
32  void errorVL(uint8_t sensorNumber, String message);
33 
37  void warning(String message);
38 
39  public:
44  enum RangeProfile { ShortRange, MidRange, LongRange };
45 
50  VL53L1Xs(HardwareSerial * hardwareSerial = 0, bool displayWarnings = false);
51 
54  ~VL53L1Xs();
55 
62  void add(uint8_t pin = 0xFF, uint8_t i2c_addr = 0x29);
63 
68  void begin(boolean verbose = false);
69 
74  uint16_t distance(uint8_t sensorNumber);
75 
81  void rangeProfileSet(RangeProfile value, uint8_t sensorNumber = 0xFF);
82 
92  void roi(uint8_t sensorNumber = 0xFF, uint8_t TopLeftX = 0, uint8_t TopLeftY = 15, uint8_t BottomRightX = 15, uint8_t BottomRightY = 0);
93 
98  void roiCenter(uint8_t sensorNumber, uint8_t &xCenter, uint8_t &yCenter);
99 
103  void stress(BreakCondition breakWhen = 0);
104 
108  void test(BreakCondition breakWhen = 0);
109 };
110 
111 /* Declaration of error function. Definition is in Your code. Recommended actions: stop the motors, display error message
112 and go into an endless loop.
113 @param message - error message.
114 */
115 void error(String message);
Functions definition.
Definition: mrm-lid2.h:19
void add(uint8_t pin=0xFF, uint8_t i2c_addr=0x29)
Definition: mrm-lid2.cpp:9
void stress(BreakCondition breakWhen=0)
Definition: mrm-lid2.cpp:275
void rangeProfileSet(RangeProfile value, uint8_t sensorNumber=0xFF)
Definition: mrm-lid2.cpp:198
uint16_t distance(uint8_t sensorNumber)
Definition: mrm-lid2.cpp:121
~VL53L1Xs()
Definition: mrm-lid2.cpp:336
void roiCenter(uint8_t sensorNumber, uint8_t &xCenter, uint8_t &yCenter)
Definition: mrm-lid2.cpp:264
void test(BreakCondition breakWhen=0)
Definition: mrm-lid2.cpp:298
void begin(boolean verbose=false)
Definition: mrm-lid2.cpp:33
void roi(uint8_t sensorNumber=0xFF, uint8_t TopLeftX=0, uint8_t TopLeftY=15, uint8_t BottomRightX=15, uint8_t BottomRightY=0)
Definition: mrm-lid2.cpp:244
VL53L1Xs(HardwareSerial *hardwareSerial=0, bool displayWarnings=false)
Definition: mrm-lid2.cpp:328
RangeProfile
Definition: mrm-lid2.h:44
Definition: vl53l1_platform.h:16