MRMS
mrm-lid1.h
1 #pragma once
2 #include "Arduino.h"
3 #include <Wire.h>
4 #include "vl53l0x_api.h"
5 
13 #define MAX_VL53L0XS 12 // Maximum number of sensors.
14 #define SAMPLE_COUNT_AVG 0 // Sample count for averages measurement - it takes a lot of memory if not 0!
15 
16 typedef void(*ArgumenlessFunction)();
17 typedef bool(*BreakCondition)();
18 
19 class VL53L0Xs
20 {
21 #if SAMPLE_COUNT_AVG > 0
22  uint16_t averageSamples[MAX_VL53L0XS][SAMPLE_COUNT_AVG];
23  uint8_t averageCounter[MAX_VL53L0XS];
24 #endif
25  bool continuous; // Ranging continuously
26  uint16_t lastDistance[MAX_VL53L0XS]; // Last distance in mm
27  uint32_t lastMeasurement[MAX_VL53L0XS]; // Last distance measurement in ms
28  int nextFree = 0; // Sensor count + 1
29  uint8_t pins[MAX_VL53L0XS]; // Pins the LIDARs use for XSHUT.
30  HardwareSerial * serial; //Additional serial port
31  VL53L0X_Dev_t *pDev[MAX_VL53L0XS];
32 
37  void errorVL(uint8_t sensorNumber, String message);
38 
43  void print(String message, bool eol = false);
44 
45  public:
52  enum RangeProfile { DefaultMode, HighAccuracy, LongRange, HighSpeed };
53 
57  VL53L0Xs(HardwareSerial * hardwareSerial = 0);
58 
65  void add(uint8_t pin, uint8_t i2c_addr = 0x29);
66 
72  void begin(bool continuousMeasurement = true, boolean verbose = false, uint8_t sensorNumber = 0xFF);
73 
79  uint16_t distance(uint8_t sensorNumber, bool average = false);
80 
86  void rangeProfileSet(RangeProfile value, uint8_t sensorNumber = 0xFF);
87 
91  void reset(uint8_t sensorNumber = 0xFF);
92 
97  void test(BreakCondition breakWhen = 0, bool average = false);
98 };
99 
100 /* Declaration of error function. Definition is in Your code. Recommended actions: stop the motors, display error message
101  and go into an endless loop.
102 @param message - error message.
103 */
104 void error(String message);
Definition: mrm-lid1.h:20
void add(uint8_t pin, uint8_t i2c_addr=0x29)
Definition: mrm-lid1.cpp:10
void reset(uint8_t sensorNumber=0xFF)
Definition: mrm-lid1.cpp:269
void rangeProfileSet(RangeProfile value, uint8_t sensorNumber=0xFF)
Definition: mrm-lid1.cpp:216
void begin(bool continuousMeasurement=true, boolean verbose=false, uint8_t sensorNumber=0xFF)
Definition: mrm-lid1.cpp:37
RangeProfile
Definition: mrm-lid1.h:52
void test(BreakCondition breakWhen=0, bool average=false)
Definition: mrm-lid1.cpp:286
uint16_t distance(uint8_t sensorNumber, bool average=false)
Definition: mrm-lid1.cpp:121
VL53L0Xs(HardwareSerial *hardwareSerial=0)
Definition: mrm-lid1.cpp:304
Generic PAL device type that does link between API and platform abstraction layer.
Definition: vl53l0x_platform.h:58