d

Dependencies:   mbed

Fork of AEB by Vincenzo Comito

Revision:
4:f0be0d8a0394
Parent:
3:4bb49a5dfa47
Child:
5:d64e042b573d
--- a/main.cpp	Sat Jul 30 13:58:52 2016 +0000
+++ b/main.cpp	Sat Jul 30 17:34:13 2016 +0000
@@ -1,7 +1,6 @@
 #include "mbed.h"
 
 #include "rtwtypes.h"
-#include "serialdata.h"
 #include "CircularBuffer.h"
 #include "BBSerial.h"
 
@@ -31,11 +30,18 @@
 DigitalOut red(LED_RED);
 DigitalOut green(LED_GREEN);
 DigitalOut blue(LED_BLUE);
+#ifdef MASTER
+DigitalOut masterAliveOut(D7);
+#else 
+DigitalIn masterAliveIn(D7, PullDown);
+#endif 
 DigitalOut      trigger(D2);
 InterruptIn     echo(D4);
 Timer           t;
+bool timerCounting = false;
 Ticker          scheduler;
 AEBData aebData;
+float ddd;
 
 #ifdef MASTER
 AEBData slaveData;
@@ -96,6 +102,7 @@
     
 void start( void )
 {
+    timerCounting = 1;
     t.start();
 }
 
@@ -104,9 +111,13 @@
 void stop( void )
 {
     t.stop();
-    float distance_cm = t.read_us() * 343/20000;
+    timerCounting = 0;
+    float distance_cm = t.read_us() * 343.0f/20000;
+    ddd = distance_cm;
     if(distance_cm > 50) {
         distance_cm = 50;
+    } else if (distance_cm < 2) {
+        distance_cm = 0;
     }
     //distanceCircularBuffer.push_back(distance_cm);
     aebData.distance = distance_cm;
@@ -117,8 +128,6 @@
 extern ExtU_AEB0_T AEB0_U;
 extern ExtY_AEB0_T AEB0_Y;
 
-
-
 void setColor(color c) {
     red = LED_OFF;
     blue = LED_OFF;
@@ -148,21 +157,19 @@
     }
 }
 
+
+int speed;
+
+#ifdef SLAVE
+   float masterFault = 0;
+#endif
     
 void    do_step( void )
 {
+    
     #ifdef MASTER
-    // Get data from simulink
-    float speed = serialRecv();
-    // Forward data to slave
-    // boardSerial.printf("%f %f", aebData.fault, speed);
+    boardSerial.printf("%f", aebData.fault);
     #elif defined SLAVE
-    float speed;
-    float masterFault;
-    if(boardSerial.scanf("%f %f", &masterFault, &speed) != 2) {
-        masterFault = 1;
-        speed = 0;
-    }
     #endif 
     
     
@@ -170,6 +177,10 @@
     AEB0_U.speed_km_h = speed;
     AEB0_U.distance_m = aebData.distance;    
  
+    pc.printf("do step, distance: %f\r\n", aebData.distance);
+    #ifdef SLAVE
+    pc.printf("master fault: %f\r\n", masterFault);
+    #endif
     rt_OneStep();
     
     aebData.brake = AEB0_Y.brake;
@@ -188,31 +199,14 @@
         setColor(LED_S);
         #endif
     }
-
     aebData.fault = AEB0_Y.fault;
     if(aebData.fault) {
         setColor(RED);
+        #ifdef MASTER
+        masterAliveOut = 0;
+        #endif
     }
-
-            
-    #ifdef MASTER
-    AEBData slaveData;
-   // if(boardSerial.scanf("%f %f %f", slaveData.brake, 
-//              slaveData.distance, slaveData.fault) != 3) {
-//        slaveData.brake = 0;
-//        slaveData.distance = 0;
-//        slaveData.fault = 1;
-//    }
-    
-    slaveData.brake = slaveData.distance = slaveData.fault = 0;
-            
-              
-    float data[6] = {aebData.brake, aebData.distance, aebData.fault,
-                     slaveData.brake, slaveData.distance, slaveData.fault};    
-    serialSendVec(data, 6);
-    #elif defined SLAVE
-    boardSerial.printf("%f %f %f", activateBrake, aebData.distance, aebData.fault);
-    #endif
+   
 }
 
 
@@ -220,8 +214,6 @@
 {
     
     AEB0_initialize();
-  
-    scheduler.attach( &do_step, 0.1 );
     
     setColor(NONE);
     
@@ -229,15 +221,34 @@
     echo.rise( &start );
     echo.fall( &stop );
 
+
     trigger = 0;
+    #ifdef MASTER
+        pc.puts("MASTER\r\n");
+        masterAliveOut = 1;
+    #else
+        pc.puts("SLAVE\r\n");
+    #endif
+    pc.puts("insert speed value\r\n");
+    
+    char buf[200];
+    pc.gets(buf, 200);
+    buf[199] = 0;
+    sscanf(buf, "%d", &speed);
+    pc.printf("\r\nspeed was: %d\r\n", speed);
+   
+    
+    scheduler.attach( &do_step, 0.1 );
       
     while (true) {
+        #ifdef SLAVE
+        masterFault = !masterAliveIn.read();
+        #endif
         trigger = 1;
         wait_us( 10 );
         trigger = 0;
-
     }
     
     AEB0_terminate();
     return 0;
-}
\ No newline at end of file
+}