
Sample MBed program for use with ST XNucleo VL53L1CB board. Uses interrupts to cope with up to 3 sensors in autonomous mode. Includes MBed V6.4
Dependencies: X_NUCLEO_53L1A2
Diff: main.cpp
- Revision:
- 3:9104750d8780
- Parent:
- 2:f0ec92af4b5f
--- a/main.cpp Fri May 07 14:15:27 2021 +0000 +++ b/main.cpp Sun Jun 13 14:40:21 2021 +0000 @@ -145,7 +145,7 @@ int main() { int status; - VL53L1 * Sensor; + VL53L1CB * Sensor; uint8_t ToFSensor = 1; // 0=Left, 1=Center(default), 2=Right //mbed compiler claims these are never used but they are. @@ -211,11 +211,11 @@ Dev->comms_type = 1; /* Device Initialization and setting */ - status = Sensor->vl53L1_DataInit(); - status = Sensor->vl53L1_StaticInit(); - status = Sensor->vl53L1_SetPresetMode(VL53L1_PRESETMODE_AUTONOMOUS); - status = Sensor->vl53L1_SetDistanceMode(VL53L1_DISTANCEMODE_LONG); - status = Sensor->vl53L1_SetMeasurementTimingBudgetMicroSeconds( 200 * 1000); + status = Sensor->VL53L1CB_DataInit(); + status = Sensor->VL53L1CB_StaticInit(); + status = Sensor->VL53L1CB_SetPresetMode(VL53L1_PRESETMODE_AUTONOMOUS); + status = Sensor->VL53L1CB_SetDistanceMode(VL53L1_DISTANCEMODE_LONG); + status = Sensor->VL53L1CB_SetMeasurementTimingBudgetMicroSeconds( 200 * 1000); // set the ranging and signal rate filter @@ -228,7 +228,7 @@ thresholdconfig.Rate.High = 0; thresholdconfig.Rate.Low = 0; thresholdconfig.IntrNoTarget = 0 ;// if 1 produce an interrupt even if there is no target found e.g out of range - status = Sensor->vl53L1_SetThresholdConfig(&thresholdconfig); + status = Sensor->VL53L1CB_SetThresholdConfig(&thresholdconfig); } // create interrupt handlers for the three sensors and start measurements @@ -237,7 +237,7 @@ printf("starting interrupt centre\n"); devCentre.i2c_slave_address = NEW_SENSOR_CENTRE_ADDRESS; int1 = new WaitForMeasurement(CentreIntPin,&devCentre); // create interrupt handler - status = board->sensor_centre->vl53L1_StartMeasurement(); + status = board->sensor_centre->VL53L1CB_StartMeasurement(); } if (board->sensor_left!= NULL ) @@ -245,7 +245,7 @@ printf("starting interrupt left\n"); devLeft.i2c_slave_address = NEW_SENSOR_LEFT_ADDRESS; int2 = new WaitForMeasurement(LeftIntPin,&devLeft); // create interrupt handler - status = board->sensor_left->vl53L1_StartMeasurement(); + status = board->sensor_left->VL53L1CB_StartMeasurement(); printf("started interrupt left\n"); } @@ -254,7 +254,7 @@ printf("starting interrupt right\n"); devRight.i2c_slave_address = NEW_SENSOR_RIGHT_ADDRESS; int3 = new WaitForMeasurement(RightIntPin,&devRight); // create interrupt handler - status = board->sensor_right->vl53L1_StartMeasurement(); + status = board->sensor_right->VL53L1CB_StartMeasurement(); } @@ -275,24 +275,24 @@ if ( int_centre_dropped != 0) { int_centre_dropped = 0; - status = board->sensor_centre->vl53L1_ClearInterruptAndStartMeasurement(); + status = board->sensor_centre->VL53L1CB_ClearInterruptAndStartMeasurement(); } if ( int_left_dropped != 0) { int_left_dropped = 0; - status = board->sensor_left->vl53L1_ClearInterruptAndStartMeasurement(); + status = board->sensor_left->VL53L1CB_ClearInterruptAndStartMeasurement(); } if ( int_right_dropped != 0) { int_right_dropped = 0; - status = board->sensor_right->vl53L1_ClearInterruptAndStartMeasurement(); + status = board->sensor_right->VL53L1CB_ClearInterruptAndStartMeasurement(); } if (int_right_result != 0) // interrupt seen on right sensor { - status = board->sensor_right->vl53L1_GetMultiRangingData( pMultiRangingData); + status = board->sensor_right->VL53L1CB_GetMultiRangingData( pMultiRangingData); if ( status == 0) { print_results( devRight.i2c_slave_address, pMultiRangingData ); @@ -304,7 +304,7 @@ if (int_left_result != 0) // interrupt seen on left sensor { - status = board->sensor_left->vl53L1_GetMultiRangingData( pMultiRangingData); + status = board->sensor_left->VL53L1CB_GetMultiRangingData( pMultiRangingData); if ( status == 0) { print_results( devLeft.i2c_slave_address, pMultiRangingData ); @@ -316,7 +316,7 @@ if (int_centre_result != 0) { - status = board->sensor_centre->vl53L1_GetMultiRangingData( pMultiRangingData); + status = board->sensor_centre->VL53L1CB_GetMultiRangingData( pMultiRangingData); if ( status == 0) { print_results( devCentre.i2c_slave_address, pMultiRangingData );