hello

Committer:
shalutha
Date:
Tue Oct 01 14:08:33 2019 +0000
Revision:
0:69ce6d469c71
hello

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shalutha 0:69ce6d469c71 1 # VL53L0X library for mbed OS 5
shalutha 0:69ce6d469c71 2
shalutha 0:69ce6d469c71 3 [![GitHub release](https://img.shields.io/github/release/dbaba/vl53l0x-mbedos.svg)](https://github.com/dbaba/vl53l0x-mbedos/releases/latest)
shalutha 0:69ce6d469c71 4 [![Build Status](https://travis-ci.org/dbaba/vl53l0x-mbedos.svg?branch=master)](https://travis-ci.org/dbaba/vl53l0x-mbedos)
shalutha 0:69ce6d469c71 5
shalutha 0:69ce6d469c71 6 ## Summary
shalutha 0:69ce6d469c71 7
shalutha 0:69ce6d469c71 8 This is a library for mbed OS that helps interface with ST's [VL53L0X time-of-flight distance sensor](https://www.pololu.com/product/2490). The library makes it simple to configure the sensor and read range data from it via I²C.
shalutha 0:69ce6d469c71 9
shalutha 0:69ce6d469c71 10 This project is a fork of [www.pololu.com](https://www.pololu.com/)'s [vl53l0x-arduino](https://github.com/pololu/vl53l0x-arduino).
shalutha 0:69ce6d469c71 11
shalutha 0:69ce6d469c71 12 ## Supported platforms
shalutha 0:69ce6d469c71 13
shalutha 0:69ce6d469c71 14 This library is designed to work with the mbed-cli v0.9.1 or later. This library should support any mbed enabled board with mbed OS 5.
shalutha 0:69ce6d469c71 15
shalutha 0:69ce6d469c71 16 ## Getting started
shalutha 0:69ce6d469c71 17
shalutha 0:69ce6d469c71 18 ### Hardware
shalutha 0:69ce6d469c71 19
shalutha 0:69ce6d469c71 20 A [VL53L0X carrier](https://www.pololu.com/product/2490) can be purchased from Pololu's website. Before continuing, careful reading of the [product page](https://www.pololu.com/product/2490) as well as the VL53L0X datasheet is recommended.
shalutha 0:69ce6d469c71 21
shalutha 0:69ce6d469c71 22 Make the following connections between the mbed and the VL53L0X board:
shalutha 0:69ce6d469c71 23
shalutha 0:69ce6d469c71 24 #### mbed boards with [pololu VL53L0X board](https://www.pololu.com/product/2490)
shalutha 0:69ce6d469c71 25
shalutha 0:69ce6d469c71 26 * internal pull-up resistors are implemented
shalutha 0:69ce6d469c71 27
shalutha 0:69ce6d469c71 28
shalutha 0:69ce6d469c71 29 mbed VL53L0X board
shalutha 0:69ce6d469c71 30 ------- -------------
shalutha 0:69ce6d469c71 31 3V3 - VDD
shalutha 0:69ce6d469c71 32 GND - GND
shalutha 0:69ce6d469c71 33 SDA - SDA
shalutha 0:69ce6d469c71 34 SCL - SCL
shalutha 0:69ce6d469c71 35
shalutha 0:69ce6d469c71 36 #### mbed boards with ST VL53L0X
shalutha 0:69ce6d469c71 37
shalutha 0:69ce6d469c71 38 e.g. [53L0-SATEL-I1](http://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/proximity-sensors-and-imaging-ics-eval-boards/53l0-satel-i1.html)
shalutha 0:69ce6d469c71 39
shalutha 0:69ce6d469c71 40 mbed VL53L0X / 53L0-SATEL-I1
shalutha 0:69ce6d469c71 41 ------- -------------
shalutha 0:69ce6d469c71 42 3V3 -+--+- VDD
shalutha 0:69ce6d469c71 43 | |
shalutha 0:69ce6d469c71 44 <4K7>|
shalutha 0:69ce6d469c71 45 |<4K7>
shalutha 0:69ce6d469c71 46 | |
shalutha 0:69ce6d469c71 47 SDA -+--|- SDA
shalutha 0:69ce6d469c71 48 SCL ----+- SCL
shalutha 0:69ce6d469c71 49 GND ------ GND
shalutha 0:69ce6d469c71 50
shalutha 0:69ce6d469c71 51 ### Software
shalutha 0:69ce6d469c71 52
shalutha 0:69ce6d469c71 53 Use [`mbed-cli`](https://github.com/ARMmbed/mbed-cli) to install this library.
shalutha 0:69ce6d469c71 54
shalutha 0:69ce6d469c71 55 ```
shalutha 0:69ce6d469c71 56 mbed add https://github.com/dbaba/vl53l0x-mbedos
shalutha 0:69ce6d469c71 57 ```
shalutha 0:69ce6d469c71 58
shalutha 0:69ce6d469c71 59 ## ST's VL53L0X API and this library
shalutha 0:69ce6d469c71 60
shalutha 0:69ce6d469c71 61 Most of the functionality of this library is based on the [VL53L0X API](http://www.st.com/content/st_com/en/products/embedded-software/proximity-sensors-software/stsw-img005.html) provided by ST (STSW-IMG005), and some of the explanatory comments in the code are quoted or paraphrased from the API source code, API user manual (UM2039), and the VL53L0X datasheet. For more explanation about the library code and how it was derived from the API, see the comments in VL53L0X.cpp.
shalutha 0:69ce6d469c71 62
shalutha 0:69ce6d469c71 63 This library is intended to provide a quicker and easier way to get started using the VL53L0X with an Arduino-compatible controller, in contrast to customizing and compiling ST's API for the Arduino. The library has a more streamlined interface, as well as smaller storage and memory footprints. However, it does not implement some of the more advanced functionality available in the API (for example, calibrating the sensor to work well under a cover glass), and it has less robust error checking. For advanced applications, especially when storage and memory are less of an issue, consider using the VL53L0X API directly.
shalutha 0:69ce6d469c71 64
shalutha 0:69ce6d469c71 65 ## Library reference
shalutha 0:69ce6d469c71 66
shalutha 0:69ce6d469c71 67 * `uint8_t last_status`<br>
shalutha 0:69ce6d469c71 68 The status of the last I&sup2;C write transmission. See the [`Wire.endTransmission()` documentation](http://arduino.cc/en/Reference/WireEndTransmission) for return values.
shalutha 0:69ce6d469c71 69
shalutha 0:69ce6d469c71 70 * `VL53L0X(void)`<br>
shalutha 0:69ce6d469c71 71 Constructor.
shalutha 0:69ce6d469c71 72
shalutha 0:69ce6d469c71 73 * `void setAddress(uint8_t new_addr)`<br>
shalutha 0:69ce6d469c71 74 Changes the I&sup2;C slave device address of the VL53L0X to the given value (7-bit).
shalutha 0:69ce6d469c71 75
shalutha 0:69ce6d469c71 76 * `uint8_t getAddress(void)`<br>
shalutha 0:69ce6d469c71 77 Returns the current I&sup2;C address.
shalutha 0:69ce6d469c71 78
shalutha 0:69ce6d469c71 79 * `bool init(bool io_2v8 = true)`<br>
shalutha 0:69ce6d469c71 80 Iniitializes and configures the sensor. If the optional argument `io_2v8` is true (the default if not specified), the sensor is configured for 2V8 mode (2.8 V I/O); if false, the sensor is left in 1V8 mode. The return value is a boolean indicating whether the initialization completed successfully.
shalutha 0:69ce6d469c71 81
shalutha 0:69ce6d469c71 82 * `void writeReg(uint8_t reg, uint8_t value)`<br>
shalutha 0:69ce6d469c71 83 Writes an 8-bit sensor register with the given value.
shalutha 0:69ce6d469c71 84
shalutha 0:69ce6d469c71 85 Register address constants are defined by the regAddr enumeration type in VL53L0X.h.<br>
shalutha 0:69ce6d469c71 86 Example use: `sensor.writeReg(VL53L0X::SYSRANGE_START, 0x01);`
shalutha 0:69ce6d469c71 87
shalutha 0:69ce6d469c71 88 * `void writeReg16Bit(uint8_t reg, uint16_t value)`<br>
shalutha 0:69ce6d469c71 89 Writes a 16-bit sensor register with the given value.
shalutha 0:69ce6d469c71 90
shalutha 0:69ce6d469c71 91 * `void writeReg32Bit(uint8_t reg, uint32_t value)`<br>
shalutha 0:69ce6d469c71 92 Writes a 32-bit sensor register with the given value.
shalutha 0:69ce6d469c71 93
shalutha 0:69ce6d469c71 94 * `uint8_t readReg(uint8_t reg)`<br>
shalutha 0:69ce6d469c71 95 Reads an 8-bit sensor register and returns the value read.
shalutha 0:69ce6d469c71 96
shalutha 0:69ce6d469c71 97 * `uint16_t readReg16Bit(uint8_t reg)`<br>
shalutha 0:69ce6d469c71 98 Reads a 16-bit sensor register and returns the value read.
shalutha 0:69ce6d469c71 99
shalutha 0:69ce6d469c71 100 * `uint32_t readReg32Bit(uint8_t reg)`<br>
shalutha 0:69ce6d469c71 101 Reads a 32-bit sensor register and returns the value read.
shalutha 0:69ce6d469c71 102
shalutha 0:69ce6d469c71 103 * `void writeMulti(uint8_t reg, uint8_t const * src, uint8_t count)`<br>
shalutha 0:69ce6d469c71 104 Writes an arbitrary number of bytes from the given array to the sensor, starting at the given register.
shalutha 0:69ce6d469c71 105
shalutha 0:69ce6d469c71 106 * `void readMulti(uint8_t reg, uint8_t * dst, uint8_t count)`<br>
shalutha 0:69ce6d469c71 107 Reads an arbitrary number of bytes from the sensor, starting at the given register, into the given array.
shalutha 0:69ce6d469c71 108
shalutha 0:69ce6d469c71 109 * `bool setSignalRateLimit(float limit_Mcps)`<br>
shalutha 0:69ce6d469c71 110 Sets the return signal rate limit to the given value in units of MCPS (mega counts per second). This is the minimum amplitude of the signal reflected from the target and received by the sensor necessary for it to report a valid reading. Setting a lower limit increases the potential range of the sensor but also increases the likelihood of getting an inaccurate reading because of reflections from objects other than the intended target. This limit is initialized to 0.25 MCPS by default. The return value is a boolean indicating whether the requested limit was valid.
shalutha 0:69ce6d469c71 111
shalutha 0:69ce6d469c71 112 * `float getSignalRateLimit(void)`<br>
shalutha 0:69ce6d469c71 113 Returns the current return signal rate limit in MCPS.
shalutha 0:69ce6d469c71 114
shalutha 0:69ce6d469c71 115 * `bool setMeasurementTimingBudget(uint32_t budget_us)`<br>
shalutha 0:69ce6d469c71 116 Sets the measurement timing budget to the given value in microseconds. This is the time allowed for one range measurement; a longer timing budget allows for more accurate measurements. The default budget is about 33000 microseconds, or 33 ms; the minimum is 20 ms. The return value is a boolean indicating whether the requested budget was valid.
shalutha 0:69ce6d469c71 117
shalutha 0:69ce6d469c71 118 * `uint32_t getMeasurementTimingBudget(void)`<br>
shalutha 0:69ce6d469c71 119 Returns the current measurement timing budget in microseconds.
shalutha 0:69ce6d469c71 120
shalutha 0:69ce6d469c71 121 * `bool setVcselPulsePeriod(vcselPeriodType type, uint8_t period_pclks)`
shalutha 0:69ce6d469c71 122 Sets the VCSEL (vertical cavity surface emitting laser) pulse period for the given period type (`VL53L0X::VcselPeriodPreRange` or `VL53L0X::VcselPeriodFinalRange`) to the given value (in PCLKs). Longer periods increase the potential range of the sensor. Valid values are (even numbers only):
shalutha 0:69ce6d469c71 123
shalutha 0:69ce6d469c71 124 Pre: 12 to 18 (initialized to 14 by default)<br>
shalutha 0:69ce6d469c71 125 Final: 8 to 14 (initialized to 10 by default)
shalutha 0:69ce6d469c71 126
shalutha 0:69ce6d469c71 127 The return value is a boolean indicating whether the requested period was valid.
shalutha 0:69ce6d469c71 128
shalutha 0:69ce6d469c71 129 * `uint8_t getVcselPulsePeriod(vcselPeriodType type)`<br>
shalutha 0:69ce6d469c71 130 Returns the current VCSEL pulse period for the given period type.
shalutha 0:69ce6d469c71 131
shalutha 0:69ce6d469c71 132 * `void startContinuous(uint32_t period_ms = 0)`<br>
shalutha 0:69ce6d469c71 133 Starts continuous ranging measurements. If the optional argument `period_ms` is 0 (the default if not specified), continuous back-to-back mode is used (the sensor takes measurements as often as possible); if it is nonzero, continuous timed mode is used, with the specified inter-measurement period in milliseconds determining how often the sensor takes a measurement.
shalutha 0:69ce6d469c71 134
shalutha 0:69ce6d469c71 135 * `void stopContinuous(void)`<br>
shalutha 0:69ce6d469c71 136 Stops continuous mode.
shalutha 0:69ce6d469c71 137
shalutha 0:69ce6d469c71 138 * `uint8_t readRangeContinuousMillimeters(void)`<br>
shalutha 0:69ce6d469c71 139 Returns a range reading in millimeters when continuous mode is active.
shalutha 0:69ce6d469c71 140
shalutha 0:69ce6d469c71 141 * `uint16_t readRangeSingleMillimeters(void)`<br>
shalutha 0:69ce6d469c71 142 Performs a single-shot ranging measurement and returns the reading in millimeters.
shalutha 0:69ce6d469c71 143
shalutha 0:69ce6d469c71 144 * `void setTimeout(uint16_t timeout)`<br>
shalutha 0:69ce6d469c71 145 Sets a timeout period in milliseconds after which read operations will abort if the sensor is not ready. A value of 0 disables the timeout.
shalutha 0:69ce6d469c71 146
shalutha 0:69ce6d469c71 147 * `uint16_t getTimeout(void)`<br>
shalutha 0:69ce6d469c71 148 Returns the current timeout period setting.
shalutha 0:69ce6d469c71 149
shalutha 0:69ce6d469c71 150 * `bool timeoutOccurred(void)`<br>
shalutha 0:69ce6d469c71 151 Indicates whether a read timeout has occurred since the last call to `timeoutOccurred()`.
shalutha 0:69ce6d469c71 152
shalutha 0:69ce6d469c71 153 ## Version history
shalutha 0:69ce6d469c71 154
shalutha 0:69ce6d469c71 155 * 1.0.0 (2016 Sep 12): Initial release for mbed OS 5