MBSD_assignment / Mbed 2 deprecated AEB

Dependencies:   AEB Ultrasonic Controller_Master mbed

Dependents:   AEB

Revision:
6:d0717be58ca3
Parent:
2:fb694fb2ef9b
Child:
7:6547a25e1867
diff -r fb694fb2ef9b -r d0717be58ca3 main.cpp
--- a/main.cpp	Wed Jul 06 09:17:23 2016 +0000
+++ b/main.cpp	Sun Jul 10 13:18:57 2016 +0000
@@ -11,71 +11,42 @@
     &Controller_Master_M_;               /* Real-time model */
 static B_Controller_Master_T Controller_Master_B;/* Observable signals */
 static DW_Controller_Master_T Controller_Master_DW;/* Observable states */
-
-/* '<Root>/V' */
 static real_T Controller_Master_U_V;
-
-/* '<Root>/D_M' */
 static real_T Controller_Master_U_D_M;
-
-/* '<Root>/SLAVE' */
 static uint8_T Controller_Master_U_Slave;
-
-/* '<Root>/QA_EN' */
 static boolean_T Controller_Master_U_QA_EN;
-
-/* '<Root>/BRAKE' */
 static uint8_T Controller_Master_Y_BRAKE;
-
-/* '<Root>/ACC' */
 static uint8_T Controller_Master_Y_ACC;
-
-/* '<Root>/LED_RED' */
 static uint8_T Controller_Master_Y_LED_RED;
-
-/* '<Root>/LED_GREEN' */
 static uint8_T Controller_Master_Y_LED_GREEN;
-
-/* '<Root>/LED_BLUE' */
 static uint8_T Controller_Master_Y_LED_BLUE;
-
-/* '<Root>/MASTER' */
 static uint8_T Controller_Master_Y_MASTER;
 
-/*
- * Associating rt_OneStep with a real-time clock or interrupt service routine
- * is what makes the generated code "real-time".  The function rt_OneStep is
- * always associated with the base rate of the model.  Subrates are managed
- * by the base rate from inside the generated code.  Enabling/disabling
- * interrupts and floating point context switches are target specific.  This
- * example code indicates where these should take place relative to executing
- * the generated code step function.  Overrun behavior should be tailored to
- * your application needs.  This example simply sets an error status in the
- * real-time model and returns from rt_OneStep.
- */
 void rt_OneStep(RT_MODEL_Controller_Master_T *const Controller_Master_M);
 void step();
-
+void cb();
+void cb() {};
 
-Ultrasonic sonic(D2,D4);  // Just call this funtion to initialize the ultrasonic sensor
+Ultrasonic sonic(D6,D7);  // Just call this funtion to initialize the ultrasonic sensor
 // D2 trigger D4 echo
- 
 DigitalOut led_R(LED_RED);
 DigitalOut led_G(LED_GREEN);
 DigitalOut led_B(LED_BLUE);
-DigitalOut master_out(D8);
-DigitalIn  slave(D6);
+DigitalOut master_out(D5);
+DigitalOut acc(D2);
+DigitalOut brake(D3);
+DigitalIn  qa(D4);
 float V = 29;   // Set the vehicle speed here
 Ticker t;
+Timer tim;
 Serial  pc(USBTX, USBRX); // tx, rx
+Serial  myrio(D1,D0 ); // tx, rx
 
 int main()
 {
     /* Pack model data into RTM */
     Controller_Master_M->ModelData.blockIO = &Controller_Master_B;
     Controller_Master_M->ModelData.dwork = &Controller_Master_DW;
-
-
     Controller_Master_U_V = V;
     Controller_Master_U_D_M = 50;
     Controller_Master_U_Slave = 1;
@@ -89,22 +60,24 @@
                                  &Controller_Master_Y_LED_GREEN, &Controller_Master_Y_LED_BLUE,
                                  &Controller_Master_Y_MASTER);
 
-  /* Attach rt_OneStep to a timer or interrupt service routine with
-   * period 0.1 seconds (the model's base sample time) here.  The
-   * call syntax for rt_OneStep is
-   *
-   *  rt_OneStep(Controller_Master_M);
-   */
-    t.attach(&step,0.1);
+    /* Attach rt_OneStep to a timer or interrupt service routine with
+     * period 0.1 seconds (the model's base sample time) here.  The
+     * call syntax for rt_OneStep is
+     *
+     *  rt_OneStep(Controller_Master_M);
+     */
+
     led_B.write(1);
     led_G.write(1);
     led_R.write(1);
-    slave.mode(PullDown);
-    master_out.write(1);
+    qa.mode(PullDown);
+    master_out = 1;
+    acc = 0;
+    brake = 0;
+    t.attach(&step,0.1);
+
     while (true) {
         wait(0.2);
-        //led_R= !led_R;
-
     }
 
     /* Disable rt_OneStep() here */
@@ -115,21 +88,35 @@
 
 void step()
 {
+    int var = 0;
+    char str[10];
+    if(myrio.readable()) {
+        myrio.scanf("%s",str);
+        var = atoi(str);
+        pc.printf("%d \n",var);
+    }
+    V = var;
     Controller_Master_U_V = V;
     Controller_Master_U_D_M = sonic.read_cm();
-    Controller_Master_U_Slave = slave.read();
-    Controller_Master_U_QA_EN = true;
+    Controller_Master_U_Slave = 1;
+    Controller_Master_U_QA_EN = qa;
     rt_OneStep(Controller_Master_M);
-    master_out.write(Controller_Master_Y_MASTER);
-    pc.printf("blue: %d \n", Controller_Master_Y_LED_BLUE);    // Call read_cm() to get the distance in cm
-    pc.printf("red: %d \n", Controller_Master_Y_LED_RED);
-    pc.printf("master: %d \n", Controller_Master_Y_MASTER);
-    pc.printf("brake: %d \n", Controller_Master_Y_BRAKE);
-    pc.printf("green: %d \n", Controller_Master_Y_LED_GREEN);
-    pc.printf("acc: %d \n", Controller_Master_Y_ACC);
+    master_out = Controller_Master_Y_MASTER;
+    acc = Controller_Master_Y_ACC;
+    brake = Controller_Master_Y_BRAKE;
     led_B = !Controller_Master_Y_LED_BLUE;         // negate because 1 -> led off
     led_R = !Controller_Master_Y_LED_RED;
     led_G = !Controller_Master_Y_LED_GREEN;
+    pc.printf("distance: %f \n", Controller_Master_U_D_M);
+    //pc.printf("speed: %f \n", Controller_Master_U_V);
+    /*    pc.printf("blue: %d \n", Controller_Master_Y_LED_BLUE);    // Call read_cm() to get the distance in cm
+        pc.printf("red: %d \n", Controller_Master_Y_LED_RED);
+        pc.printf("master: %d \n", Controller_Master_Y_MASTER);
+        pc.printf("brake: %d \n", Controller_Master_Y_BRAKE);
+        pc.printf("green: %d \n", Controller_Master_Y_LED_GREEN);
+        pc.printf("acc: %d \n", Controller_Master_Y_ACC);
+    */
+
 }
 
 void rt_OneStep(RT_MODEL_Controller_Master_T *const Controller_Master_M)