![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
GT ECE 4180 Lab Team - Raj Madisetti and Arjun Sonti
Dependencies: mbed Servo Motordriver X_NUCLEO_53L0A1 HC_SR04_Ultrasonic_Library
Remote Control Car
Georgia Tech ECE 4180 Embedded Systems Design Final Project
Team Members
Raj Madisetti Arjun Sonti
main.cpp
- Committer:
- rmadisetti3
- Date:
- 2020-11-15
- Revision:
- 1:1c1ad0c1c260
- Parent:
- 0:20a8dfc396cb
- Child:
- 2:5c9526ccb055
File content as of revision 1:1c1ad0c1c260:
#include "mbed.h" #include "XNucleo53L0A1.h" #include "Servo.h" #include "motordriver.h" #include <stdio.h> Serial pc(USBTX,USBRX); Serial blue(p28,p27); DigitalOut shdn(p26); DigitalOut myled(LED1); #define VL53L0_I2C_SDA p28 #define VL53L0_I2C_SCL p27 static XNucleo53L0A1 *board=NULL; Motor M(p21, p22, p23, 1); // pwm, fwd, rev, can brake Servo S(p24); int main() { int status; uint32_t distance; DevI2C *device_i2c = new DevI2C(VL53L0_I2C_SDA, VL53L0_I2C_SCL); /* creates the 53L0A1 expansion board singleton obj */ board = XNucleo53L0A1::instance(device_i2c, A2, D8, D2); shdn = 0; //must reset sensor for an mbed reset to work wait(0.1); shdn = 1; wait(0.1); /* init the 53L0A1 board with default values */ status = board->init_board(); while (status) { pc.printf("Failed to init board! \r\n"); status = board->init_board(); } //loop taking and printing distance while (1) { status = board->sensor_centre->get_distance(&distance); if (status == VL53L0X_ERROR_NONE) { pc.printf("D=%ld mm\r\n", distance); } } //Logic for AdaFruit App char bnum=0; char bhit=0; while(1) { if (blue.getc()=='!') { if (blue.getc()=='B') { //button data packet bnum = blue.getc(); //button number bhit = blue.getc(); //1=hit, 0=release if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK? myled = bnum - '0'; //current button number will appear on LEDs switch (bnum) { case '1': //AutoPilot Mode if (bhit=='1') { //loop taking and printing distance while (1) { status = board->sensor_centre->get_distance(&distance); if (distance <= 50) { //turn left or right depending on location of sensor } } break; case '5': //forward if (bhit=='1') { M.speed(1.0); //drive forward } else { M.speed(0.0); //stop } break; case '6': //reverse if (bhit=='1') { M.speed(-1.0); //reverse } else { M.speed(0.0); //stop } break; case '7': //left if (bhit=='1') { S = S - 0.5; //turn left } break; case '8': //right if (bhit=='1') { S = S + 0.5; //turn right } break; }