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
Revision 4:29839de66eae, committed 2020-11-19
- Comitter:
- rmadisetti3
- Date:
- Thu Nov 19 21:19:12 2020 +0000
- Parent:
- 3:4956cc0efdf3
- Child:
- 5:b1b250500440
- Commit message:
- Final Code
Changed in this revision
| HC_SR04_Ultrasonic_Library.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HC_SR04_Ultrasonic_Library.lib Thu Nov 19 21:19:12 2020 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/ejteb/code/HC_SR04_Ultrasonic_Library/#e0f9c9fb4cf3
--- a/main.cpp Thu Nov 19 17:23:54 2020 +0000
+++ b/main.cpp Thu Nov 19 21:19:12 2020 +0000
@@ -1,29 +1,27 @@
#include "mbed.h"
-#include "XNucleo53L0A1.h"
#include "Servo.h"
#include "motordriver.h"
+#include "ultrasonic.h"
#include <stdio.h>
Serial pc(USBTX,USBRX);
-Serial blue(p9,p10);
-DigitalOut shdn(p26);
+Serial blue(p13,p14);
DigitalOut myled(LED1);
-#define VL53L0_I2C_SDA p28
-#define VL53L0_I2C_SCL p27
#define AUTOPILOT 10
#define FORWARD 1
#define REVERSE -1
#define STOP 0
-static XNucleo53L0A1 *board=NULL;
+int state = 0; //global variable stop state
+int status1;
+int status2;
+int distanceCenter;
+int distanceLeft;
+int distanceRight;
Motor M(p21, p22, p23, 1); // pwm, fwd, rev, can brake
Servo S(p24);
-int state = 0; //global variable stop state
-int status;
-uint32_t distanceCenter;
-uint32_t distanceLeft;
-uint32_t distanceRight;
+
void getNewState() {
//Logic for AdaFruit App
@@ -74,7 +72,7 @@
}
void autoPilot() {
- if ((distanceCenter >= 250 || distanceCenter == 0)) {
+ if (distanceCenter >= 250) {
M.speed(1.0);
S = 0.5;
}
@@ -86,28 +84,41 @@
}
}
+void dist1(int distance)
+{
+ distanceCenter = distance;
+}
+
+void dist2(int distance)
+{
+ distanceLeft = distance;
+}
+
+void dist3(int distance)
+{
+ distanceRight = distance;
+}
+
+ultrasonic muCenter(p6, p7, .1, 1, &dist1); //sonar 1 initialization
+ultrasonic muLeft(p17, p18, .1, 1, &dist2); //sonar 2 initialization
+ultrasonic muRight(p15, p16, .1, 1, &dist3); //sonar 3 initialization
+
+
int main() {
- //LIDAR Initialization
- 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();
- }
-
+ //SONAR Initializations
+ muCenter.startUpdates();//SONAR 1 starts measuring the distance
+ muLeft.startUpdates();//SONAR 2 starts measuring the distance
+ muRight.startUpdates();//SONAR 3 starts measuring the distance
while(1) { //main loop for motor control
- status = board->sensor_centre->get_distance(&distanceCenter);
- pc.printf("D=%ld mm\r\n", distanceCenter);
+ pc.printf("Center D=%ld mm\r\n", distanceCenter);
+ pc.printf("Right D=%ld mm\r\n", distanceRight);
+ pc.printf("Left D=%ld mm\r\n", distanceLeft);
+ muCenter.checkDistance(); //SONAR measuring starts
+ muLeft.checkDistance();
+ muRight.checkDistance();
getNewState();
- if ((distanceCenter >= 250 || distanceCenter == 0) && state == FORWARD) {
+ if (distanceCenter >= 250 && state == FORWARD) {
M.speed(1.0);
}
else if (state == REVERSE) {
