ECE 4180 FlameBot Source Code

Dependencies:   HC_SR04_Ultrasonic_Library Motor Servo mbed

Files at this revision

API Documentation at this revision

Comitter:
kkulkarni36
Date:
Wed May 02 04:26:40 2018 +0000
Commit message:
ECE 4180 Flamebot

Changed in this revision

HC_SR04_Ultrasonic_Library.lib Show annotated file Show diff for this revision Revisions of this file
Motor.lib Show annotated file Show diff for this revision Revisions of this file
Servo.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
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 7d7387eefc5a HC_SR04_Ultrasonic_Library.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HC_SR04_Ultrasonic_Library.lib	Wed May 02 04:26:40 2018 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/ejteb/code/HC_SR04_Ultrasonic_Library/#e0f9c9fb4cf3
diff -r 000000000000 -r 7d7387eefc5a Motor.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Motor.lib	Wed May 02 04:26:40 2018 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/simon/code/Motor/#f265e441bcd9
diff -r 000000000000 -r 7d7387eefc5a Servo.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Servo.lib	Wed May 02 04:26:40 2018 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/simon/code/Servo/#36b69a7ced07
diff -r 000000000000 -r 7d7387eefc5a main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed May 02 04:26:40 2018 +0000
@@ -0,0 +1,149 @@
+#include "mbed.h"
+#include "Motor.h"
+#include "Servo.h"
+#include "ultrasonic.h"
+
+Motor m1(p25, p15, p14); // pwm, fwd, rev
+Motor m2(p26, p19, p20 ); // pwm, fwd, rev
+volatile bool move = 1; 
+Serial bluemod(p9,p10);
+Serial pc(USBTX,USBRX);
+Servo myservo(p24);
+DigitalOut myled1(LED1); 
+DigitalOut myled2(LED2); 
+DigitalOut myled3(LED3); 
+DigitalOut myled4(LED4); 
+
+
+ 
+//C union can convert 4 chars to a float - puts them in same location in memory
+//trick to pack the 4 bytes from Bluetooth serial port back into a 32-bit float
+union f_or_char {
+    float f;
+    char  c[4];
+};
+
+void dist(int distance)
+{
+    if (distance < 500.0) {
+    m1.speed(0.0);
+    m2.speed(0.0);
+    wait(1);
+    myservo = 0.0;
+    wait(1);
+    m1.speed(0.3);
+    m2.speed(-0.3);
+    wait(1.5);
+    m1.speed(0.0);
+    m2.speed(0.0);
+    wait(1.5); 
+    move = 0;
+    myservo = 1.0;
+    myled1 = 1;
+    myled2 = 1;
+    myled3 = 1;
+    myled4 = 1; 
+    wait(1);
+    myservo = 0.0;
+    myled1 = 0;
+    myled2 = 0;
+    myled3 = 0;
+    myled4 = 0; 
+    wait(1);
+    }
+}
+
+ultrasonic sonar(p6, p7, .1, 1, &dist);
+ 
+int main()
+{
+    float s1;
+    float s2;
+    char bchecksum=0;
+    char temp=0;
+    union f_or_char x,y,z;
+    
+    sonar.startUpdates();//start measuring the distance
+    
+    while(1) {
+        bchecksum=0;
+        if (bluemod.getc()=='!') {
+            if (bluemod.getc()=='A') { //Accelerometer data packet
+                for (int i=0; i<4; i++) {
+                    temp = bluemod.getc();
+                    x.c[i] = temp;
+                    bchecksum = bchecksum + temp;
+                }
+                for (int i=0; i<4; i++) {
+                    temp = bluemod.getc();
+                    y.c[i] = temp;
+                    bchecksum = bchecksum + temp;
+                }
+                for (int i=0; i<4; i++) {
+                    temp = bluemod.getc();
+                    z.c[i] = temp;
+                    bchecksum = bchecksum + temp;
+                }
+                if (bluemod.getc()==char(~('!' + 'A' + bchecksum))) { //checksum OK?
+                //pc.printf("X = %f  Y = %f  Z = %f\n\r",x.f, y.f, z.f);         
+                    move = 1;
+                    if (x.f < -4.0) {
+                        s1 = 0.3;
+                        s2 = -0.3;
+                        m1.speed(s1);
+                        m2.speed(s2);
+                        myled1 = 1;
+                        myled2 = 0;
+                        myled3 = 0;
+                        myled4 = 0; 
+                        wait(0.05);
+                        }
+                    if (x.f > 4.0) {
+                        s1 = -0.3;
+                        s2 = 0.3;
+                        m1.speed(s1);
+                        m2.speed(s2);
+                        myled1 = 0;
+                        myled2 = 1;
+                        myled3 = 0;
+                        myled4 = 0; 
+                        wait(0.05);
+                        }
+                    if (y.f < -3.5) {
+                        s1 = -0.2;
+                        s2 = -0.2;
+                        m1.speed(s1);
+                        m2.speed(s2);
+                        myled1 = 0;
+                        myled2 = 0;
+                        myled3 = 1;
+                        myled4 = 0; 
+                        wait(0.05);
+                        }
+                    if (y.f > 3.0) {
+                        s1 = 0.2;
+                        s2 = 0.2;
+                        m1.speed(s1);
+                        m2.speed(s2);
+                        myled1 = 0;
+                        myled2 = 0;
+                        myled3 = 0;
+                        myled4 = 1; 
+                        wait(0.05);
+                        }     
+                    if (x.f > -4.0 && x.f < 4.0 && y.f > -4.0 && y.f <4.0) {
+                        s1 = 0.0;
+                        s2 = 0.0;
+                        m1.speed(s1);
+                        m2.speed(s2);
+                        wait(0.05); 
+                        }  
+                    while(move) {
+                        sonar.checkDistance();
+                        move = 0;
+                    }        
+                }
+            }
+        }
+    }
+}
diff -r 000000000000 -r 7d7387eefc5a mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed May 02 04:26:40 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/5aab5a7997ee
\ No newline at end of file