Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: HC_SR04_Ultrasonic_Library Motor Servo mbed
Revision 0:7d7387eefc5a, committed 2018-05-02
- Comitter:
- kkulkarni36
- Date:
- Wed May 02 04:26:40 2018 +0000
- Commit message:
- ECE 4180 Flamebot
Changed in this revision
--- /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
--- /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
--- /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
--- /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;
+                    }        
+                }
+            }
+        }
+    }
+}
--- /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