Updated Regen Braking Logic.

Dependencies:   mbed millis

Revision:
0:4788e1df7b55
Child:
13:a9793222af20
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/challenge.h	Fri Mar 13 11:48:04 2020 +0000
@@ -0,0 +1,75 @@
+#ifndef _CHALLENGE_H_
+#define _CHALLENGE_H_
+
+#include <mbed.h>
+#include "dashboard.h"
+#include "remoteControl.h"
+#include "motor.h"
+
+class ChallengeMode {
+    public:
+        // CONSTURCTOR
+        ChallengeMode(InterruptIn& autoStopTrigger, Dashboard& dashboard, Remote& remote, Motor& motor1);
+        
+        // FUNCTIONS
+        // Regen Mode
+        void regenThrottleOn();
+        void regenThrottleOff();
+        bool regenBrakingOn();
+        void regenBrakingOff();
+        
+        // Auto-Stop Mode
+        void autoStopOn();
+        void autoStopOff();
+        void autoStopTriggered();
+        void autoStopControl();
+        
+        // Innovation Mode
+        void innovationOn();
+        void innovationOff();
+        int innovationControl(int requestedThrottle);
+        
+        // VARIABLES
+        bool regenThrottleActive;
+        bool regenBrakingActive;
+        bool autoStopActive;
+        bool innovationActive;
+        
+        int autoStopCruiseSpeed;
+        int autoStopThrottle;
+        bool autoStopInProgress;
+    
+    private:
+        InterruptIn& _autoStopTrigger;
+        Dashboard& _dashboard;
+        Remote& _remote;
+        Motor& _motor1;
+//        Motor& _motor2;
+        
+        // AutoStop
+        float targetDistance;
+        float remainingDistance;
+
+//        float timeToReachTarget;
+        float decelerationGradient;
+        float requiredSpeed;
+        
+        // Innovation
+        int innovationDistanceLimit;    // Distance(mm) from IR sensors to apply brakes
+        bool stopLoco;
+        
+        // IR Output voltages at various distances (for calibration purposes)
+        float voltageAt5500;
+        float voltageAt5000;
+        float voltageAt4500;
+        float voltageAt4000;
+        float voltageAt3500;
+        float voltageAt3000;
+        float voltageAt2500;
+        float voltageAt2000;
+        float voltageAt1500;
+        float voltageAt1000;
+        float voltageAt500;
+};
+
+#endif
\ No newline at end of file