- This code combines steering and driving in one ticker - Fault check is in a ticker instead of while loop

Dependencies:   mbed MMA8451Q

Revision:
2:c857935f928e
Parent:
1:c324a2849500
Child:
3:25c6bf0abc00
--- a/main.cpp	Sun Oct 24 18:15:30 2021 +0000
+++ b/main.cpp	Mon Oct 25 01:28:53 2021 +0000
@@ -1,5 +1,8 @@
 #include "mbed.h"
 #include "driving.h"
+#include "steering_header.h"
+#include "steering_methods.h"
+#include "state_control.h"
 #include "MMA8451Q.h"
 #include <iostream>
 #define BLUETOOTHBAUDRATE 115200 //Communication rate of the micro-controller
@@ -214,6 +217,30 @@
 }
 
 int main() {
+ 
+
+    state_update();
+   
+    //Delcare Onboard LED with blue color
+    DigitalOut led_b(LED_BLUE);
+    //Set the period of the servo motor control signal
+    servo_motor_pwm.period(1/SERVO_MOTOR_FREQ);
+    //Center the servo motor
+    servo_motor_pwm.write(CENTER_DUTY_CYCLE);
+
+    //Start the control systm using a Ticker object
+      steering_control_ticker.attach(&steering_control, TI);
+     
+    
+    // call landmark_counter wjen a landmark is detected 
+    left_landmark_sensor.rise(&landmark_counter);
+    right_landmark_sensor.rise(&landmark_counter);
+    // update status when the button is pressed
+    stop_button.rise(&state_update);
+    run_button.rise(&state_update);
+    wait_button.rise(&state_update);
+ 
+ 
  bt.baud(BLUETOOTHBAUDRATE);
  //Sets the communication rate of the micro-controller to the Bluetooth module.
 pc.printf("Hello World!\n");
@@ -236,6 +263,28 @@
 
  //prints the string to the Tera-Term Console using the Bluetooth object ‘bt’.
  while(1) {
+     
+     pc.printf("\n\n");
+
+     pc.printf("\r\nSteering enabled? : %d",steering_enabled);
+     pc.printf("\r\nCurrent duty cycle : %f ", current_duty_cycle);
+     pc.printf("\r\nLeft duty cycle : %f ", left_distance_sensor.read());
+     pc.printf("\r\nRight voltage : %f"      , right_distance_sensor.read());
+     pc.printf("\r\nCurrent duty cycle : %f ", current_duty_cycle);
+       fault_check();
+      wait(0.5);
+     switch(current_state ){
+         case STOP :    pc.printf("\r\nCurrent state is stop"); break; 
+         case RUN:      pc.printf("\r\nCurrent state is RUN"); break; 
+         case WAIT :    pc.printf("\r\nCurrent state is WAIT"); break; 
+         };
+     switch(fault_type) {
+         case CLEAR :       pc.printf("\r\nFault: CLEAR"); break; 
+         case OFF_TRACK:    pc.printf("\r\nFault: OFF TRACK"); break;
+         case BUMPER :      pc.printf("\r\nFault: OBSTECALE"); break;
+         case LOW_VOLTAGE : pc.printf("Fault: LOW VOLTAGE");  break;
+          }
+          
 x = abs(acc.getAccX());
 pot1Voltage = pot1 * 3.3f;
 batteryVoltage = battInput * 3.3 * battDividerScalar;