4180 Lab 2

Dependencies:   mbed wave_player Servo 4DGL-uLCD-SE Motor SDFileSystem LSM9DS1_Library_cal PinDetect X_NUCLEO_53L0A1

Committer:
emilywilson
Date:
Tue Feb 04 20:00:52 2020 +0000
Revision:
2:de355b6fbd87
Parent:
1:6d8f645530b8
parts 10-14 and extra credit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilywilson 1:6d8f645530b8 1 #include "mbed.h"
emilywilson 1:6d8f645530b8 2 #include "Servo.h"
emilywilson 1:6d8f645530b8 3 #include "XNucleo53L0A1.h"
emilywilson 1:6d8f645530b8 4 #include <stdio.h>
emilywilson 1:6d8f645530b8 5 Serial pc1(USBTX,USBRX);
emilywilson 1:6d8f645530b8 6 DigitalOut shdn(p26);
emilywilson 1:6d8f645530b8 7 // This VL53L0X board test application performs a range measurement in polling mode
emilywilson 1:6d8f645530b8 8 // Use 3.3(Vout) for Vin, p28 for SDA, p27 for SCL, P26 for shdn on mbed LPC1768
emilywilson 1:6d8f645530b8 9
emilywilson 1:6d8f645530b8 10 //I2C sensor pins
emilywilson 1:6d8f645530b8 11 #define VL53L0_I2C_SDA p28
emilywilson 1:6d8f645530b8 12 #define VL53L0_I2C_SCL p27
emilywilson 1:6d8f645530b8 13
emilywilson 1:6d8f645530b8 14 static XNucleo53L0A1 *board=NULL;
emilywilson 1:6d8f645530b8 15 Servo servo(p9);
emilywilson 1:6d8f645530b8 16
emilywilson 1:6d8f645530b8 17 int min_dist = 66536;
emilywilson 1:6d8f645530b8 18 int angle = 0;
emilywilson 1:6d8f645530b8 19
emilywilson 1:6d8f645530b8 20 int run_sensor_EC() {
emilywilson 1:6d8f645530b8 21
emilywilson 1:6d8f645530b8 22 int status;
emilywilson 1:6d8f645530b8 23 uint32_t distance;
emilywilson 1:6d8f645530b8 24 DevI2C *device_i2c = new DevI2C(VL53L0_I2C_SDA, VL53L0_I2C_SCL);
emilywilson 1:6d8f645530b8 25 /* creates the 53L0A1 expansion board singleton obj */
emilywilson 1:6d8f645530b8 26 board = XNucleo53L0A1::instance(device_i2c, A2, D8, D2);
emilywilson 1:6d8f645530b8 27 shdn = 0; //must reset sensor for an mbed reset to work
emilywilson 1:6d8f645530b8 28 wait(0.1);
emilywilson 1:6d8f645530b8 29 shdn = 1;
emilywilson 1:6d8f645530b8 30 wait(0.1);
emilywilson 1:6d8f645530b8 31 /* init the 53L0A1 board with default values */
emilywilson 1:6d8f645530b8 32 status = board->init_board();
emilywilson 1:6d8f645530b8 33 while (status) {
emilywilson 1:6d8f645530b8 34 pc1.printf("Failed to init board! \r\n");
emilywilson 1:6d8f645530b8 35 status = board->init_board();
emilywilson 1:6d8f645530b8 36 }
emilywilson 1:6d8f645530b8 37
emilywilson 1:6d8f645530b8 38 for (float i = 0.0; i < 1.0; i += 0.1) {
emilywilson 1:6d8f645530b8 39 status = board->sensor_centre->get_distance(&distance);
emilywilson 1:6d8f645530b8 40 if (status == VL53L0X_ERROR_NONE) {
emilywilson 1:6d8f645530b8 41 pc1.printf("D=%ld mm\r\n", distance);
emilywilson 1:6d8f645530b8 42 }
emilywilson 1:6d8f645530b8 43 if (distance < min_dist) {
emilywilson 1:6d8f645530b8 44 min_dist = distance;
emilywilson 1:6d8f645530b8 45 angle = i;
emilywilson 1:6d8f645530b8 46 }
emilywilson 1:6d8f645530b8 47 }
emilywilson 1:6d8f645530b8 48 return 0;
emilywilson 1:6d8f645530b8 49 }