
- This code combines steering and driving in one ticker - Fault check is in a ticker instead of while loop
Diff: main.cpp
- 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;