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: AEB Ultrasonic Controller_Master mbed
Diff: main.cpp
- Revision:
- 6:d0717be58ca3
- Parent:
- 2:fb694fb2ef9b
- Child:
- 7:6547a25e1867
--- 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)