VL53L3CX sensor ranging example. No expansion shield. Satellite board wired straight in to the motherboard. Targetting MbedOS v6.10.

Dependencies:   VL53L3CX_mbed

Revision:
2:6cc14a15a98c
Parent:
1:302ec451d4d5
Child:
3:57541677b13b
--- a/Main.cpp	Mon Oct 19 08:44:53 2020 +0000
+++ b/Main.cpp	Tue Nov 03 15:17:16 2020 +0000
@@ -15,7 +15,8 @@
 #include <stdio.h>
 
 #include "mbed.h"
-#include "NoShield53L3.h"
+//#include "NoShield53L3.h"
+#include "vl53lx_class.h"
 #include "vl53L3_I2c.h"
 #include <time.h>
 
@@ -24,7 +25,8 @@
 #define I2C_SDA   D14 
 #define I2C_SCL   D15 
 
-static NoShield53L3 *board=NULL;
+//static NoShield53L3 *board=NULL;
+static VL53LX *sensor = NULL;
 Serial pc(SERIAL_TX, SERIAL_RX); 
 
 
@@ -41,8 +43,10 @@
 int main()
 {   
     int status;
-    VL53LX * Sensor;
     uint16_t wordData;
+    
+    DigitalOut xshutdown(D7);
+    
 
     static VL53LX_MultiRangingData_t RangingData;
 
@@ -53,80 +57,62 @@
     vl53L3_DevI2C *dev_I2C = new vl53L3_DevI2C(I2C_SDA, I2C_SCL);
     
     /* no expansion board so don't use stmpe1600 */
-    board = NoShield53L3::instance(dev_I2C, A2, D8, D2);
-    printf("board created!\r\n");
+//    board = NoShield53L3::instance(dev_I2C, A2, D8, D2);
+    sensor = new VL53LX(dev_I2C, &xshutdown, A2);
+    
+    printf("sensor created!\r\n");
 
-
-    /* define the shutdown pins */
-    status = board->init_board(D9,D4,D3);
+    status = sensor->InitSensor(0x52);
     if (status) {
-        printf("Failed to init board!\r\n");
+        printf("Failed to init sensor!\r\n");
         return 0;
-    }
-       
-   
-    printf("board initiated! \n");
+    }   
+    
+    printf("sensor initialised! \n");
                                             
-    printf("configuring centre channel \n");
-    Dev=&devCentre;
-    Sensor=board->sensor_centre;
-    Dev->I2cDevAddr = NEW_SENSOR_CENTRE_ADDRESS;
-    printf("configured centre channel \n");
-  
-        
-   // configure the i2c connection     
-    Dev->comms_speed_khz = 400;
-    Dev->comms_type = 1;
-
-/* Device Initialization and setting */
-    printf("VL53LX_DataInit  \n");    
-    status = Sensor->VL53LX_DataInit();
     uint8_t NewDataReady=0;     
-    printf("VL53LX_DataInit %d \n",status);    
     
-    status = Sensor->VL53LX_StartMeasurement();   
+    status = sensor->VL53LX_StartMeasurement();   
     printf("VL53LX_StartMeasurement %d \n",status);         
  
  // loop forever getting measurements       
     while(1) 
     {     
-        status = Sensor->VL53LX_WaitMeasurementDataReady();
+        status = sensor->VL53LX_WaitMeasurementDataReady();
 
         if(!status)
         {
 
-            status = Sensor->VL53LX_GetMultiRangingData( &RangingData);
+            status = sensor->VL53LX_GetMultiRangingData(&RangingData);
 
-            if ( status == 0)
+            if (status == 0)
             {
-                int no_of_object_found=RangingData.NumberOfObjectsFound;
+                int no_of_object_found = RangingData.NumberOfObjectsFound;
                 if ( no_of_object_found < 10 ) 
                 {
-                    for(int j=0;j<no_of_object_found;j++){
+                    for(int j=0;j<no_of_object_found;j++)
+                    {
                         if ((RangingData.RangeData[j].RangeStatus == VL53LX_RANGESTATUS_RANGE_VALID) || 
                             (RangingData.RangeData[j].RangeStatus == VL53LX_RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK_FAIL))
-                            {   // print data
-                                printf("centre \t object %d  \t status=%d, \t D=%5dmm, \t Signal=%2.2f Mcps, \t Ambient=%2.2f Mcps \n",
+                        {   // print data
+                            printf("centre \t object %d  \t status=%d, \t D=%5dmm, \t Signal=%2.2f Mcps, \t Ambient=%2.2f Mcps \n",
                                 j,
                                 RangingData.RangeData[j].RangeStatus,
                                 RangingData.RangeData[j].RangeMilliMeter,
                                 RangingData.RangeData[j].SignalRateRtnMegaCps/65536.0,
                                 RangingData.RangeData[j].AmbientRateRtnMegaCps/65536.0);
-                            } //if
+                        } //if
                     } //for
                 } // if  ( no_of_object_found < 10 ) 
-            }   // if status VL53LX_GetMultiRangingData                                                                          
-                                        
-            } // if !status VL53LX_WaitMeasurementDataReady
-            else
-            {
-                printf("VL53L1_WaitMeasurementDataReady failed %d \n",status);
-            }
+            }   // if status VL53LX_GetMultiRangingData                                                                                                      
+        } // if !status VL53LX_WaitMeasurementDataReady
+        else
+        {
+            printf("VL53L1_WaitMeasurementDataReady failed %d \n",status);
+        }
 
-            status = Sensor->VL53LX_ClearInterruptAndStartMeasurement();
+        status = sensor->VL53LX_ClearInterruptAndStartMeasurement();
         
     } // while(1)
     
-//       status = Sensor->VL53LX_StopMeasurement(); 
-    
 }