From 28ae87e2cdc1c06027fbf56c7dc66838bc01c8ca Mon Sep 17 00:00:00 2001 From: Joseph Duchesne Date: Sun, 11 Oct 2020 12:12:35 -0400 Subject: [PATCH] Added One-Shot Ranging trigger --- src/SparkFun_VL53L1X.cpp | 4 ++++ src/SparkFun_VL53L1X.h | 1 + src/vl53l1x_class.cpp | 10 +++++++++- src/vl53l1x_class.h | 5 +++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/SparkFun_VL53L1X.cpp b/src/SparkFun_VL53L1X.cpp index 39c7fa2..8b24de0 100644 --- a/src/SparkFun_VL53L1X.cpp +++ b/src/SparkFun_VL53L1X.cpp @@ -133,6 +133,10 @@ void SFEVL53L1X::startRanging() _device->VL53L1X_StartRanging(); } +void SFEVL53L1X::startOneshotRanging() { + _device->VL53L1X_StartOneshotRanging(); +} + void SFEVL53L1X::stopRanging() { _device->VL53L1X_StopRanging(); diff --git a/src/SparkFun_VL53L1X.h b/src/SparkFun_VL53L1X.h index 712233d..423fdf9 100644 --- a/src/SparkFun_VL53L1X.h +++ b/src/SparkFun_VL53L1X.h @@ -47,6 +47,7 @@ class SFEVL53L1X void setInterruptPolarityLow(); //Set the polarity of an active interrupt to Low uint8_t getInterruptPolarity(); //get the current interrupt polarity void startRanging(); //Begins taking measurements + void startOneshotRanging(); // Start one-shot ranging void stopRanging(); //Stops taking measurements bool checkForDataReady(); //Checks the to see if data is ready void setTimingBudgetInMs(uint16_t timingBudget); //Set the timing budget for a measurement diff --git a/src/vl53l1x_class.cpp b/src/vl53l1x_class.cpp index 4b05cef..338d7b5 100644 --- a/src/vl53l1x_class.cpp +++ b/src/vl53l1x_class.cpp @@ -223,11 +223,19 @@ VL53L1X_ERROR VL53L1X::VL53L1X_GetInterruptPolarity(uint8_t *pInterruptPolarity) VL53L1X_ERROR VL53L1X::VL53L1X_StartRanging() { VL53L1X_ERROR status = 0; - + // Consider: maybe also VL53L1_WrByte(Device, SYSTEM__INTERRUPT_CLEAR, 0x01); /* clear interrupt trigger */ status = VL53L1_WrByte(Device, SYSTEM__MODE_START, 0x40); /* Enable VL53L1X */ return status; } +VL53L1X_ERROR VL53L1X::VL53L1X_StartOneshotRanging() +{ + VL53L1X_ERROR status = 0; + VL53L1_WrByte(Device, SYSTEM__INTERRUPT_CLEAR, 0x01); /* clear interrupt trigger */ + status = VL53L1_WrByte(Device, SYSTEM__MODE_START, 0x10); /* Enable VL53L1X one-shot ranging */ + return status; +} + VL53L1X_ERROR VL53L1X::VL53L1X_StopRanging() { VL53L1X_ERROR status = 0; diff --git a/src/vl53l1x_class.h b/src/vl53l1x_class.h index 606aabf..458014b 100644 --- a/src/vl53l1x_class.h +++ b/src/vl53l1x_class.h @@ -304,6 +304,11 @@ class VL53L1X : public RangeSensor */ VL53L1X_ERROR VL53L1X_StartRanging(); + /** + * @brief This function starts a one-shot ranging distance operation\n + */ + VL53L1X_ERROR VL53L1X_StartOneshotRanging(); + /** * @brief This function stops the ranging. */