An m3pi demo program utilizing a LIDAR sensor.
Dependencies: X_NUCLEO_53L0A1 m3pi mbed
main.cpp@1:3cb52320663a, 2017-04-30 (annotated)
- Committer:
- alexsaadfalcon
- Date:
- Sun Apr 30 23:07:19 2017 +0000
- Revision:
- 1:3cb52320663a
- Parent:
- 0:b7ef99889b44
Removed rtos
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alexsaadfalcon | 0:b7ef99889b44 | 1 | #include "mbed.h" |
alexsaadfalcon | 0:b7ef99889b44 | 2 | #include "m3pi.h" |
alexsaadfalcon | 0:b7ef99889b44 | 3 | #include "x_nucleo_53l0a1.h" |
alexsaadfalcon | 0:b7ef99889b44 | 4 | #include <stdio.h> |
alexsaadfalcon | 0:b7ef99889b44 | 5 | |
alexsaadfalcon | 0:b7ef99889b44 | 6 | /* This VL53L0X Expansion board test application performs a range measurement in polling mode |
alexsaadfalcon | 0:b7ef99889b44 | 7 | on the onboard embedded top sensor. */ |
alexsaadfalcon | 0:b7ef99889b44 | 8 | |
alexsaadfalcon | 0:b7ef99889b44 | 9 | #define VL53L0_I2C_SDA D14 |
alexsaadfalcon | 0:b7ef99889b44 | 10 | #define VL53L0_I2C_SCL D15 |
alexsaadfalcon | 0:b7ef99889b44 | 11 | |
alexsaadfalcon | 0:b7ef99889b44 | 12 | static X_NUCLEO_53L0A1 *board=NULL; |
alexsaadfalcon | 0:b7ef99889b44 | 13 | |
alexsaadfalcon | 0:b7ef99889b44 | 14 | |
alexsaadfalcon | 0:b7ef99889b44 | 15 | //VIN -- VOUT |
alexsaadfalcon | 0:b7ef99889b44 | 16 | //GND -- GND |
alexsaadfalcon | 0:b7ef99889b44 | 17 | //SDA -- p9 |
alexsaadfalcon | 0:b7ef99889b44 | 18 | //SCA -- p10 |
alexsaadfalcon | 0:b7ef99889b44 | 19 | |
alexsaadfalcon | 0:b7ef99889b44 | 20 | m3pi m3pi; |
alexsaadfalcon | 0:b7ef99889b44 | 21 | DigitalOut led1(LED1); |
alexsaadfalcon | 0:b7ef99889b44 | 22 | DigitalOut led2(LED2); |
alexsaadfalcon | 0:b7ef99889b44 | 23 | |
alexsaadfalcon | 0:b7ef99889b44 | 24 | int main() { |
alexsaadfalcon | 0:b7ef99889b44 | 25 | //LIDAR setup |
alexsaadfalcon | 0:b7ef99889b44 | 26 | int status; |
alexsaadfalcon | 0:b7ef99889b44 | 27 | uint32_t distance; |
alexsaadfalcon | 0:b7ef99889b44 | 28 | DevI2C *device_i2c =new DevI2C(p28, p27); |
alexsaadfalcon | 0:b7ef99889b44 | 29 | /* creates the 53L0A1 expansion board singleton obj */ |
alexsaadfalcon | 0:b7ef99889b44 | 30 | board = X_NUCLEO_53L0A1::Instance(device_i2c,p21,p21,p21); |
alexsaadfalcon | 0:b7ef99889b44 | 31 | /* init the 53L0A1 expansion board with default values */ |
alexsaadfalcon | 0:b7ef99889b44 | 32 | status=board->InitBoard(); |
alexsaadfalcon | 0:b7ef99889b44 | 33 | |
alexsaadfalcon | 0:b7ef99889b44 | 34 | if(status) { led1 = 1; return 0; } |
alexsaadfalcon | 0:b7ef99889b44 | 35 | |
alexsaadfalcon | 0:b7ef99889b44 | 36 | m3pi.locate(0,1); |
alexsaadfalcon | 0:b7ef99889b44 | 37 | m3pi.printf("YO"); |
alexsaadfalcon | 0:b7ef99889b44 | 38 | |
alexsaadfalcon | 0:b7ef99889b44 | 39 | while(1) { |
alexsaadfalcon | 0:b7ef99889b44 | 40 | status = board->sensor_centre->GetDistance(&distance); |
alexsaadfalcon | 0:b7ef99889b44 | 41 | if (status == VL53L0X_ERROR_NONE) { |
alexsaadfalcon | 0:b7ef99889b44 | 42 | m3pi.locate(0,1); |
alexsaadfalcon | 0:b7ef99889b44 | 43 | m3pi.printf("%u", distance); |
alexsaadfalcon | 0:b7ef99889b44 | 44 | printf("%u\r\n", distance); |
alexsaadfalcon | 0:b7ef99889b44 | 45 | if (distance > 50) { |
alexsaadfalcon | 0:b7ef99889b44 | 46 | m3pi.forward(.1); |
alexsaadfalcon | 0:b7ef99889b44 | 47 | led2 = 1; |
alexsaadfalcon | 0:b7ef99889b44 | 48 | } else { |
alexsaadfalcon | 0:b7ef99889b44 | 49 | m3pi.stop(); |
alexsaadfalcon | 0:b7ef99889b44 | 50 | led2 = 0; |
alexsaadfalcon | 0:b7ef99889b44 | 51 | } |
alexsaadfalcon | 0:b7ef99889b44 | 52 | } |
alexsaadfalcon | 0:b7ef99889b44 | 53 | } |
alexsaadfalcon | 0:b7ef99889b44 | 54 | } |