![](/media/cache/group/V2.png.50x50_q85.png)
Programme de mesure de distance avec capteur ToF
main.cpp@0:8da34e10e9f8, 2019-04-11 (annotated)
- Committer:
- JVAutran
- Date:
- Thu Apr 11 11:20:38 2019 +0000
- Revision:
- 0:8da34e10e9f8
Programme de mesure de distance avec capteur ToF
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JVAutran | 0:8da34e10e9f8 | 1 | #include "VL53L0X.h" |
JVAutran | 0:8da34e10e9f8 | 2 | #include "mbed.h" |
JVAutran | 0:8da34e10e9f8 | 3 | |
JVAutran | 0:8da34e10e9f8 | 4 | DevI2C i2C(PB_9, PB_8); |
JVAutran | 0:8da34e10e9f8 | 5 | DigitalOut Pin_Out(PB_9); |
JVAutran | 0:8da34e10e9f8 | 6 | VL53L0X capteur(&i2C, &Pin_Out, PA_8, VL53L0X_DEFAULT_ADDRESS); |
JVAutran | 0:8da34e10e9f8 | 7 | VL53L0X_Dev_t MyDevice; |
JVAutran | 0:8da34e10e9f8 | 8 | VL53L0X_Dev_t *pMyDevice = &MyDevice; |
JVAutran | 0:8da34e10e9f8 | 9 | int distance(uint32_t *p_data); |
JVAutran | 0:8da34e10e9f8 | 10 | |
JVAutran | 0:8da34e10e9f8 | 11 | int main(){ |
JVAutran | 0:8da34e10e9f8 | 12 | uint32_t status = 0; |
JVAutran | 0:8da34e10e9f8 | 13 | uint32_t *dist; |
JVAutran | 0:8da34e10e9f8 | 14 | |
JVAutran | 0:8da34e10e9f8 | 15 | printf("\n\r"); |
JVAutran | 0:8da34e10e9f8 | 16 | printf("\n\r"); |
JVAutran | 0:8da34e10e9f8 | 17 | //pMyDevice->comms_type = 1; |
JVAutran | 0:8da34e10e9f8 | 18 | //pMyDevice->comms_speed_khz = 400; |
JVAutran | 0:8da34e10e9f8 | 19 | |
JVAutran | 0:8da34e10e9f8 | 20 | capteur.init_sensor(VL53L0X_DEFAULT_ADDRESS); |
JVAutran | 0:8da34e10e9f8 | 21 | //capteur.disable_interrupt_measure_detection_irq(); |
JVAutran | 0:8da34e10e9f8 | 22 | while(1){ |
JVAutran | 0:8da34e10e9f8 | 23 | status = distance(dist); |
JVAutran | 0:8da34e10e9f8 | 24 | printf("Distance : %d mm\n\r", *dist); |
JVAutran | 0:8da34e10e9f8 | 25 | printf("Statut : %d \n\r", status); |
JVAutran | 0:8da34e10e9f8 | 26 | printf("\n"); |
JVAutran | 0:8da34e10e9f8 | 27 | wait(0.2); |
JVAutran | 0:8da34e10e9f8 | 28 | } |
JVAutran | 0:8da34e10e9f8 | 29 | capteur.VL53L0X_off(); |
JVAutran | 0:8da34e10e9f8 | 30 | } |
JVAutran | 0:8da34e10e9f8 | 31 | |
JVAutran | 0:8da34e10e9f8 | 32 | int distance(uint32_t *p_data){ |
JVAutran | 0:8da34e10e9f8 | 33 | int status = 0; |
JVAutran | 0:8da34e10e9f8 | 34 | VL53L0X_RangingMeasurementData_t measurement_data; |
JVAutran | 0:8da34e10e9f8 | 35 | |
JVAutran | 0:8da34e10e9f8 | 36 | status = capteur.start_measurement(range_single_shot_polling, NULL); |
JVAutran | 0:8da34e10e9f8 | 37 | if (!status) { |
JVAutran | 0:8da34e10e9f8 | 38 | status = capteur.get_measurement(range_single_shot_polling, &measurement_data); |
JVAutran | 0:8da34e10e9f8 | 39 | } |
JVAutran | 0:8da34e10e9f8 | 40 | if (measurement_data.RangeStatus == 0) { |
JVAutran | 0:8da34e10e9f8 | 41 | *p_data = measurement_data.RangeMilliMeter; |
JVAutran | 0:8da34e10e9f8 | 42 | } else { |
JVAutran | 0:8da34e10e9f8 | 43 | *p_data = 0; |
JVAutran | 0:8da34e10e9f8 | 44 | status = VL53L0X_ERROR_RANGE_ERROR; |
JVAutran | 0:8da34e10e9f8 | 45 | } |
JVAutran | 0:8da34e10e9f8 | 46 | capteur.stop_measurement(range_single_shot_polling); |
JVAutran | 0:8da34e10e9f8 | 47 | return status; |
JVAutran | 0:8da34e10e9f8 | 48 | } |