![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Program that execute AEB system
Dependencies: AEB Ultrasonic Controller_Master mbed
Diff: main.cpp
- Revision:
- 4:0df8a61cbee9
- Parent:
- 3:06075cbd49bd
diff -r 06075cbd49bd -r 0df8a61cbee9 main.cpp --- a/main.cpp Wed Jul 06 10:57:35 2016 +0000 +++ b/main.cpp Mon Jul 11 10:16:14 2016 +0000 @@ -11,63 +11,33 @@ &Controller_Slave_M_; /* Real-time model */ static B_Controller_Slave_T Controller_Slave_B;/* Observable signals */ static DW_Controller_Slave_T Controller_Slave_DW;/* Observable states */ - -/* '<Root>/V' */ static real_T Controller_Slave_U_V; - -/* '<Root>/D_S' */ static real_T Controller_Slave_U_D_S; - -/* '<Root>/MASTER' */ static uint8_T Controller_Slave_U_Master; - -/* '<Root>/QA_EN' */ static boolean_T Controller_Slave_U_QA_EN; - -/* '<Root>/BRAKE' */ static uint8_T Controller_Slave_Y_BRAKE; - -/* '<Root>/ACC' */ static uint8_T Controller_Slave_Y_ACC; - -/* '<Root>/LED_RED' */ static uint8_T Controller_Slave_Y_LED_RED; - -/* '<Root>/LED_GREEN' */ static uint8_T Controller_Slave_Y_LED_GREEN; - -/* '<Root>/LED_BLUE' */ static uint8_T Controller_Slave_Y_LED_BLUE; - -/* '<Root>/SLAVE' */ static uint8_T Controller_Slave_Y_SLAVE; - -/* - * 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_Slave_T *const Controller_Slave_M); void step(); -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 slave_out(D8); -DigitalIn master(D6); +DigitalIn master(D5); +DigitalOut acc(D2); +DigitalOut brake(D3); +DigitalIn qa(D4); float V = 29; // Set the vehicle speed here Ticker t; Serial pc(USBTX, USBRX); // tx, rx +Serial myrio(D1,D0 ); // tx, rx int main() { @@ -88,48 +58,48 @@ &Controller_Slave_Y_LED_GREEN, &Controller_Slave_Y_LED_BLUE, &Controller_Slave_Y_SLAVE); - /* 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); led_B.write(1); led_G.write(1); led_R.write(1); master.mode(PullDown); - slave_out.write(1); + // slave_out.write(1); while (true) { wait(0.2); - //led_R= !led_R; - } - - /* Disable rt_OneStep() here */ - - /* Terminate model */ Controller_Slave_terminate(Controller_Slave_M); } 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_Slave_U_V = V; Controller_Slave_U_D_S = sonic.read_cm(); Controller_Slave_U_Master = master.read(); - Controller_Slave_U_QA_EN = true; + Controller_Slave_U_QA_EN = qa; rt_OneStep(Controller_Slave_M); - slave_out.write(Controller_Slave_Y_SLAVE); - pc.printf("blue: %d \n", Controller_Slave_Y_LED_BLUE); // Call read_cm() to get the distance in cm - pc.printf("red: %d \n", Controller_Slave_Y_LED_RED); - pc.printf("slave out: %d \n", Controller_Slave_Y_SLAVE); - pc.printf("master in: %d \n", Controller_Slave_U_Master); - pc.printf("brake: %d \n", Controller_Slave_Y_BRAKE); - pc.printf("green: %d \n", Controller_Slave_Y_LED_GREEN); - pc.printf("acc: %d \n", Controller_Slave_Y_ACC); + // slave_out.write(Controller_Slave_Y_SLAVE); + acc = Controller_Slave_Y_ACC; + brake = Controller_Slave_Y_BRAKE; led_B = !Controller_Slave_Y_LED_BLUE; // negate because 1 -> led off led_R = !Controller_Slave_Y_LED_RED; led_G = !Controller_Slave_Y_LED_GREEN; +// pc.printf("blue: %d \n", Controller_Slave_Y_LED_BLUE); // Call read_cm() to get the distance in cm +// pc.printf("red: %d \n", Controller_Slave_Y_LED_RED); +// pc.printf("slave out: %d \n", Controller_Slave_Y_SLAVE); +// pc.printf("master in: %d \n", Controller_Slave_U_Master); +// pc.printf("brake: %d \n", Controller_Slave_Y_BRAKE); +// pc.printf("green: %d \n", Controller_Slave_Y_LED_GREEN); +// pc.printf("acc: %d \n", Controller_Slave_Y_ACC); + } void rt_OneStep(RT_MODEL_Controller_Slave_T *const Controller_Slave_M)