An m3pi demo program utilizing a LIDAR sensor.

Dependencies:   X_NUCLEO_53L0A1 m3pi mbed

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?

UserRevisionLine numberNew 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 }