Railway Challenge 2022-23 Team code for Mbed Nucleo F767ZI.

Dependencies:   millis

Committer:
edizselay
Date:
Fri Nov 04 15:16:36 2022 +0000
Revision:
39:2438bf7f2590
Parent:
30:c65bf90e8f47
Test comment in main.cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cdevarakonda 28:1086791972d0 1 #include "brakes.h"
cdevarakonda 28:1086791972d0 2 #include <mbed.h>
cdevarakonda 28:1086791972d0 3 #include "definitions.h"
cdevarakonda 30:c65bf90e8f47 4 Brakes::Brakes()
cdevarakonda 30:c65bf90e8f47 5 {
cdevarakonda 30:c65bf90e8f47 6
cdevarakonda 30:c65bf90e8f47 7 }
cdevarakonda 30:c65bf90e8f47 8 void Brakes::FrontBrakeOn() //turns on front mechanical brake
cdevarakonda 28:1086791972d0 9 {
cdevarakonda 28:1086791972d0 10 brakeValve22=0;
cdevarakonda 28:1086791972d0 11 brakeValve32=1;
cdevarakonda 28:1086791972d0 12 }
cdevarakonda 28:1086791972d0 13
cdevarakonda 30:c65bf90e8f47 14 void Brakes::RearBrakeOn() //turns on rear mechanical brake
cdevarakonda 28:1086791972d0 15 {
cdevarakonda 28:1086791972d0 16 brakeValve22=1;
cdevarakonda 28:1086791972d0 17 brakeValve32=0;
cdevarakonda 28:1086791972d0 18 }
cdevarakonda 30:c65bf90e8f47 19 void Brakes::BrakesOn() //turns on both mechanical brakes
cdevarakonda 28:1086791972d0 20 {
cdevarakonda 28:1086791972d0 21 brakeValve22=0;
cdevarakonda 28:1086791972d0 22 brakeValve32=0;
cdevarakonda 28:1086791972d0 23 }
cdevarakonda 28:1086791972d0 24
cdevarakonda 30:c65bf90e8f47 25 void Brakes::ParkMode(Motor motor) //Disengage motor and apply friction brakes
cdevarakonda 28:1086791972d0 26 {
cdevarakonda 30:c65bf90e8f47 27 motor.setPark();
cdevarakonda 28:1086791972d0 28 BrakesOn();
cdevarakonda 28:1086791972d0 29 }
cdevarakonda 30:c65bf90e8f47 30 void Brakes::MechanicalBraking(int brakeRate, Motor motor) //friction braking cases
cdevarakonda 28:1086791972d0 31 {
cdevarakonda 28:1086791972d0 32 switch (brakeRate) {
cdevarakonda 28:1086791972d0 33 case 0: // NO BRAKING
cdevarakonda 28:1086791972d0 34 brakeValve32 = 1;//(PD_3)
cdevarakonda 28:1086791972d0 35 brakeValve22 = 1;//(PC_0)
cdevarakonda 28:1086791972d0 36 break;
cdevarakonda 28:1086791972d0 37
cdevarakonda 28:1086791972d0 38 case 1: //HALF BRAKING
cdevarakonda 28:1086791972d0 39 motor.throttle(0.0f);
cdevarakonda 28:1086791972d0 40 RearBrakeOn();
cdevarakonda 28:1086791972d0 41 break;
cdevarakonda 28:1086791972d0 42
cdevarakonda 28:1086791972d0 43 case 2 ... 4 : //FULL BRAKING
cdevarakonda 28:1086791972d0 44 motor.throttle(0.0f);
cdevarakonda 28:1086791972d0 45 BrakesOn();
cdevarakonda 28:1086791972d0 46 break;
cdevarakonda 28:1086791972d0 47
cdevarakonda 28:1086791972d0 48 default: // NO BRAKING
cdevarakonda 28:1086791972d0 49 brakeValve32 = 1;//(PD_3)
cdevarakonda 28:1086791972d0 50 brakeValve22 = 1;//(PC_0)
cdevarakonda 28:1086791972d0 51 break;
cdevarakonda 28:1086791972d0 52 }
cdevarakonda 28:1086791972d0 53 }
cdevarakonda 28:1086791972d0 54
cdevarakonda 30:c65bf90e8f47 55 void Brakes::RegenControl(int ratecontrol,Motor motor) //graduated braking control
cdevarakonda 28:1086791972d0 56 {
cdevarakonda 28:1086791972d0 57 switch (ratecontrol)
cdevarakonda 28:1086791972d0 58 {
cdevarakonda 28:1086791972d0 59 default:
cdevarakonda 28:1086791972d0 60 break;
cdevarakonda 28:1086791972d0 61
cdevarakonda 28:1086791972d0 62 case 0:
cdevarakonda 28:1086791972d0 63 motor.brake(0.0f);
cdevarakonda 28:1086791972d0 64 break;
cdevarakonda 28:1086791972d0 65
cdevarakonda 28:1086791972d0 66 case 1:
cdevarakonda 28:1086791972d0 67 motor.brake(0.25f);
cdevarakonda 28:1086791972d0 68 break;
cdevarakonda 28:1086791972d0 69
cdevarakonda 28:1086791972d0 70 case 2:
cdevarakonda 28:1086791972d0 71 motor.brake(0.5f);
cdevarakonda 28:1086791972d0 72 break;
cdevarakonda 28:1086791972d0 73
cdevarakonda 28:1086791972d0 74 case 3:
cdevarakonda 28:1086791972d0 75 motor.brake(0.75f);
cdevarakonda 28:1086791972d0 76 break;
cdevarakonda 28:1086791972d0 77
cdevarakonda 28:1086791972d0 78 case 4:
cdevarakonda 28:1086791972d0 79 motor.brake(1.0f);
cdevarakonda 28:1086791972d0 80 break;
cdevarakonda 28:1086791972d0 81 }
cdevarakonda 28:1086791972d0 82 }
cdevarakonda 30:c65bf90e8f47 83 void Brakes::EmergencyStop(Motor motor,RoundTrainCircuit rtc, bool emergencyStopActive)
cdevarakonda 30:c65bf90e8f47 84 {
cdevarakonda 30:c65bf90e8f47 85 if (emergencyStopActive == false) {
cdevarakonda 30:c65bf90e8f47 86
cdevarakonda 30:c65bf90e8f47 87 emergencyStopActive = true;
cdevarakonda 30:c65bf90e8f47 88
cdevarakonda 30:c65bf90e8f47 89 //Set brake throttle to zero before disconnected, think is why we had the runaway train imo
cdevarakonda 30:c65bf90e8f47 90 motor.throttle(0.0f);
cdevarakonda 30:c65bf90e8f47 91
cdevarakonda 30:c65bf90e8f47 92 //Disengage motor
cdevarakonda 30:c65bf90e8f47 93 motor.disengage();
cdevarakonda 30:c65bf90e8f47 94
cdevarakonda 30:c65bf90e8f47 95 //Setting brakes to high
cdevarakonda 30:c65bf90e8f47 96 brakeValve22=0;
cdevarakonda 30:c65bf90e8f47 97 brakeValve32=0;
cdevarakonda 30:c65bf90e8f47 98
cdevarakonda 30:c65bf90e8f47 99 if (rtc_output.read() == 1) { //Check RTC pin out
cdevarakonda 30:c65bf90e8f47 100 rtc.getTriggerCause(); // Get RTC input status
cdevarakonda 30:c65bf90e8f47 101 }
cdevarakonda 30:c65bf90e8f47 102 }
cdevarakonda 30:c65bf90e8f47 103 }