Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of VL6180X_Explorer by
main.cpp@1:126b6cd0f4f5, 2015-05-10 (annotated)
- Committer:
- highroads
- Date:
- Sun May 10 19:10:32 2015 +0000
- Revision:
- 1:126b6cd0f4f5
- Parent:
- 0:47f8714fe967
Documentation
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| highroads | 0:47f8714fe967 | 1 | /****************************************************************************** |
| highroads | 0:47f8714fe967 | 2 | * Developed from |
| highroads | 0:47f8714fe967 | 3 | * VL6180X_demo.ino |
| highroads | 0:47f8714fe967 | 4 | * Example Sketch for VL6180x time of flight range finder. |
| highroads | 0:47f8714fe967 | 5 | * Casey Kuhns @ SparkFun Electronics |
| highroads | 0:47f8714fe967 | 6 | * 10/29/2014 |
| highroads | 0:47f8714fe967 | 7 | * https://github.com/sparkfun/ToF_Range_Finder-VL6180_Library |
| highroads | 0:47f8714fe967 | 8 | * |
| highroads | 0:47f8714fe967 | 9 | * The VL6180x by ST micro is a time of flight range finder that |
| highroads | 0:47f8714fe967 | 10 | * uses pulsed IR light to determine distances from object at close |
| highroads | 0:47f8714fe967 | 11 | * range. The average range of a sensor is between 0-200mm |
| highroads | 0:47f8714fe967 | 12 | * |
| highroads | 0:47f8714fe967 | 13 | * Resources: |
| highroads | 0:47f8714fe967 | 14 | * This library uses the Arduino Wire.h to complete I2C transactions. |
| highroads | 0:47f8714fe967 | 15 | * |
| highroads | 0:47f8714fe967 | 16 | * Development environment specifics: |
| highroads | 0:47f8714fe967 | 17 | * IDE: Arduino 1.0.5 |
| highroads | 0:47f8714fe967 | 18 | * Hardware Platform: Arduino Pro 3.3V/8MHz |
| highroads | 0:47f8714fe967 | 19 | * VL6180x Breakout Version: 1.0 |
| highroads | 0:47f8714fe967 | 20 | * |
| highroads | 0:47f8714fe967 | 21 | * |
| highroads | 0:47f8714fe967 | 22 | * This code is beerware. If you see me (or any other SparkFun employee) at the |
| highroads | 0:47f8714fe967 | 23 | * local pub, and you've found our code helpful, please buy us a round! |
| highroads | 0:47f8714fe967 | 24 | * |
| highroads | 0:47f8714fe967 | 25 | * Distributed as-is; no warranty is given. |
| highroads | 0:47f8714fe967 | 26 | ******************************************************************************/ |
| highroads | 0:47f8714fe967 | 27 | #include "mbed.h" |
| highroads | 0:47f8714fe967 | 28 | #include <VL6180x.h> |
| highroads | 0:47f8714fe967 | 29 | |
| highroads | 0:47f8714fe967 | 30 | /*const float GAIN_1 = 1.01; // Actual ALS Gain of 1.01 |
| highroads | 0:47f8714fe967 | 31 | const float GAIN_1_25 = 1.28; // Actual ALS Gain of 1.28 |
| highroads | 0:47f8714fe967 | 32 | const float GAIN_1_67 = 1.72; // Actual ALS Gain of 1.72 |
| highroads | 0:47f8714fe967 | 33 | const float GAIN_2_5 = 2.6; // Actual ALS Gain of 2.60 |
| highroads | 0:47f8714fe967 | 34 | const float GAIN_5 = 5.21; // Actual ALS Gain of 5.21 |
| highroads | 0:47f8714fe967 | 35 | const float GAIN_10 = 10.32; // Actual ALS Gain of 10.32 |
| highroads | 0:47f8714fe967 | 36 | const float GAIN_20 = 20; // Actual ALS Gain of 20 |
| highroads | 0:47f8714fe967 | 37 | const float GAIN_40 = 40; // Actual ALS Gain of 40 |
| highroads | 0:47f8714fe967 | 38 | */ |
| highroads | 0:47f8714fe967 | 39 | |
| highroads | 0:47f8714fe967 | 40 | #define VL6180X_ADDRESS 0x29 |
| highroads | 0:47f8714fe967 | 41 | |
| highroads | 0:47f8714fe967 | 42 | VL6180xIdentification identification; |
| highroads | 0:47f8714fe967 | 43 | // mbed uses 8bit addresses shift address by 1 bit left |
| highroads | 0:47f8714fe967 | 44 | VL6180x sensor(D14, D15, VL6180X_ADDRESS<<1); |
| highroads | 0:47f8714fe967 | 45 | |
| highroads | 0:47f8714fe967 | 46 | void printIdentification(struct VL6180xIdentification *temp){ |
| highroads | 0:47f8714fe967 | 47 | printf("Model ID = "); |
| highroads | 0:47f8714fe967 | 48 | printf("%d\n",temp->idModel); |
| highroads | 0:47f8714fe967 | 49 | |
| highroads | 0:47f8714fe967 | 50 | printf("Model Rev = "); |
| highroads | 0:47f8714fe967 | 51 | printf("%d",temp->idModelRevMajor); |
| highroads | 0:47f8714fe967 | 52 | printf("."); |
| highroads | 0:47f8714fe967 | 53 | printf("%d\n",temp->idModelRevMinor); |
| highroads | 0:47f8714fe967 | 54 | |
| highroads | 0:47f8714fe967 | 55 | printf("Module Rev = "); |
| highroads | 0:47f8714fe967 | 56 | printf("%d",temp->idModuleRevMajor); |
| highroads | 0:47f8714fe967 | 57 | printf("."); |
| highroads | 0:47f8714fe967 | 58 | printf("%d\n",temp->idModuleRevMinor); |
| highroads | 0:47f8714fe967 | 59 | |
| highroads | 0:47f8714fe967 | 60 | printf("Manufacture Date = "); |
| highroads | 0:47f8714fe967 | 61 | printf("%d",((temp->idDate >> 3) & 0x001F)); |
| highroads | 0:47f8714fe967 | 62 | printf("/"); |
| highroads | 0:47f8714fe967 | 63 | printf("%d",((temp->idDate >> 8) & 0x000F)); |
| highroads | 0:47f8714fe967 | 64 | printf("/1"); |
| highroads | 0:47f8714fe967 | 65 | printf("%d\n",((temp->idDate >> 12) & 0x000F)); |
| highroads | 0:47f8714fe967 | 66 | printf(" Phase: "); |
| highroads | 0:47f8714fe967 | 67 | printf("%d\n",(temp->idDate & 0x0007)); |
| highroads | 0:47f8714fe967 | 68 | |
| highroads | 0:47f8714fe967 | 69 | printf("Manufacture Time (s)= "); |
| highroads | 0:47f8714fe967 | 70 | printf("%d\n",(temp->idTime * 2)); |
| highroads | 0:47f8714fe967 | 71 | printf("\n\n"); |
| highroads | 0:47f8714fe967 | 72 | } |
| highroads | 0:47f8714fe967 | 73 | int main() { |
| highroads | 0:47f8714fe967 | 74 | |
| highroads | 0:47f8714fe967 | 75 | wait_ms(100); // delay .1s |
| highroads | 0:47f8714fe967 | 76 | |
| highroads | 0:47f8714fe967 | 77 | sensor.getIdentification(&identification); // Retrieve manufacture info from device memory |
| highroads | 0:47f8714fe967 | 78 | printIdentification(&identification); // Helper function to print all the Module information |
| highroads | 0:47f8714fe967 | 79 | |
| highroads | 0:47f8714fe967 | 80 | if(sensor.VL6180xInit() != 0){ |
| highroads | 0:47f8714fe967 | 81 | printf("FAILED TO INITALIZE\n"); //Initialize device and check for errors |
| highroads | 0:47f8714fe967 | 82 | }; |
| highroads | 0:47f8714fe967 | 83 | |
| highroads | 0:47f8714fe967 | 84 | sensor.VL6180xDefautSettings(); //Load default settings to get started. |
| highroads | 0:47f8714fe967 | 85 | |
| highroads | 0:47f8714fe967 | 86 | wait_ms(1000); // delay 1s |
| highroads | 0:47f8714fe967 | 87 | |
| highroads | 0:47f8714fe967 | 88 | |
| highroads | 0:47f8714fe967 | 89 | |
| highroads | 0:47f8714fe967 | 90 | while(1) { |
| highroads | 0:47f8714fe967 | 91 | //Get Ambient Light level and report in LUX |
| highroads | 0:47f8714fe967 | 92 | printf("Ambient Light Level (Lux) = "); |
| highroads | 0:47f8714fe967 | 93 | |
| highroads | 0:47f8714fe967 | 94 | //Input GAIN for light levels, |
| highroads | 0:47f8714fe967 | 95 | // GAIN_20 // Actual ALS Gain of 20 |
| highroads | 0:47f8714fe967 | 96 | // GAIN_10 // Actual ALS Gain of 10.32 |
| highroads | 0:47f8714fe967 | 97 | // GAIN_5 // Actual ALS Gain of 5.21 |
| highroads | 0:47f8714fe967 | 98 | // GAIN_2_5 // Actual ALS Gain of 2.60 |
| highroads | 0:47f8714fe967 | 99 | // GAIN_1_67 // Actual ALS Gain of 1.72 |
| highroads | 0:47f8714fe967 | 100 | // GAIN_1_25 // Actual ALS Gain of 1.28 |
| highroads | 0:47f8714fe967 | 101 | // GAIN_1 // Actual ALS Gain of 1.01 |
| highroads | 0:47f8714fe967 | 102 | // GAIN_40 // Actual ALS Gain of 40 |
| highroads | 0:47f8714fe967 | 103 | |
| highroads | 0:47f8714fe967 | 104 | printf("%f\n",sensor.getAmbientLight(GAIN_1) ); |
| highroads | 0:47f8714fe967 | 105 | |
| highroads | 0:47f8714fe967 | 106 | //Get Distance and report in mm |
| highroads | 0:47f8714fe967 | 107 | printf("Distance measured (mm) = "); |
| highroads | 0:47f8714fe967 | 108 | printf("%d\n", sensor.getDistance() ); |
| highroads | 0:47f8714fe967 | 109 | |
| highroads | 0:47f8714fe967 | 110 | wait_ms(500); |
| highroads | 0:47f8714fe967 | 111 | } |
| highroads | 0:47f8714fe967 | 112 | } |
| highroads | 0:47f8714fe967 | 113 | |
| highroads | 0:47f8714fe967 | 114 | |
| highroads | 0:47f8714fe967 | 115 | |
| highroads | 0:47f8714fe967 | 116 | |
| highroads | 0:47f8714fe967 | 117 |
