new_thea/Embedded/libraries/Adafruit_VL53L0X/src/Adafruit_VL53L0X.h
2021-10-03 15:01:42 +01:00

127 lines
4.3 KiB
C++

/*!
* @file Adafruit_VL53L0X.h
This is a library for the Adafruit VL53L0X Sensor Breakout
Designed specifically to work with the VL53L0X sensor from Adafruit
----> https://www.adafruit.com/products/3317
These sensors use I2C to communicate, 2 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#ifndef ADAFRUIT_VL53L0X_H
#define ADAFRUIT_VL53L0X_H
#if (ARDUINO >= 100)
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include "Wire.h"
#include "vl53l0x_api.h"
#define VL53L0X_I2C_ADDR 0x29 ///< Default sensor I2C address
/**************************************************************************/
/*!
@brief Class that stores state and functions for interacting with VL53L0X
time-of-flight sensor chips
*/
/**************************************************************************/
class Adafruit_VL53L0X {
public:
// Helper function to configure sensor for the different configurations
// shown in ST library example sketches.
typedef enum {
VL53L0X_SENSE_DEFAULT = 0,
VL53L0X_SENSE_LONG_RANGE,
VL53L0X_SENSE_HIGH_SPEED,
VL53L0X_SENSE_HIGH_ACCURACY
} VL53L0X_Sense_config_t;
boolean begin(uint8_t i2c_addr = VL53L0X_I2C_ADDR, boolean debug = false,
TwoWire *i2c = &Wire,
VL53L0X_Sense_config_t vl_config = VL53L0X_SENSE_DEFAULT);
boolean setAddress(uint8_t newAddr);
uint8_t getAddress(void);
/**************************************************************************/
/*!
@brief get a ranging measurement from the device
@param pRangingMeasurementData the pointer to the struct the data will be
stored in
@param debug Optional debug flag. If true debug information will print via
Serial.print during execution. Defaults to false.
@returns True if address was set successfully, False otherwise
*/
/**************************************************************************/
VL53L0X_Error
rangingTest(VL53L0X_RangingMeasurementData_t *pRangingMeasurementData,
boolean debug = false) {
return getSingleRangingMeasurement(pRangingMeasurementData, debug);
};
VL53L0X_Error getSingleRangingMeasurement(
VL53L0X_RangingMeasurementData_t *pRangingMeasurementData,
boolean debug = false);
void
printRangeStatus(VL53L0X_RangingMeasurementData_t *pRangingMeasurementData);
VL53L0X_Error Status =
VL53L0X_ERROR_NONE; ///< indicates whether or not the sensor has
///< encountered an error
// Add similar methods as Adafruit_VL6180X class adapted to range of device
uint16_t readRange(void);
// float readLux(uint8_t gain);
uint8_t readRangeStatus(void);
boolean startRange(void);
boolean isRangeComplete(void);
boolean waitRangeComplete(void);
uint16_t readRangeResult(void);
boolean startRangeContinuous(uint16_t period_ms = 50);
void stopRangeContinuous(void);
// void setTimeout(uint16_t timeout) { io_timeout = timeout; }
// uint16_t getTimeout(void) { return io_timeout; }
boolean timeoutOccurred(void) { return false; }
boolean configSensor(VL53L0X_Sense_config_t vl_config);
// Export some wrappers to internal setting functions
// that are used by the above helper function to allow
// more complete control.
boolean setMeasurementTimingBudgetMicroSeconds(uint32_t budget_us);
uint32_t getMeasurementTimingBudgetMicroSeconds(void);
boolean setVcselPulsePeriod(VL53L0X_VcselPeriod VcselPeriodType,
uint8_t VCSELPulsePeriod);
uint8_t getVcselPulsePeriod(VL53L0X_VcselPeriod VcselPeriodType);
boolean setLimitCheckEnable(uint16_t LimitCheckId, uint8_t LimitCheckEnable);
uint8_t getLimitCheckEnable(uint16_t LimitCheckId);
boolean setLimitCheckValue(uint16_t LimitCheckId,
FixPoint1616_t LimitCheckValue);
FixPoint1616_t getLimitCheckValue(uint16_t LimitCheckId);
private:
VL53L0X_Dev_t MyDevice;
VL53L0X_Dev_t *pMyDevice = &MyDevice;
VL53L0X_DeviceInfo_t DeviceInfo;
uint8_t _rangeStatus;
};
#endif