most functionality to splashdwon, find neutral and start mission. short timeouts still in code for testing, will adjust to go directly to sit_idle after splashdown

Dependencies:   mbed MODSERIAL FATFileSystem

Revision:
10:085ab7328054
Parent:
9:d5fcdcb3c89d
Child:
11:3b241ecb75ed
--- a/LinearActuator/LinearActuator.hpp	Fri Oct 20 11:41:22 2017 +0000
+++ b/LinearActuator/LinearActuator.hpp	Mon Oct 23 12:50:53 2017 +0000
@@ -1,9 +1,9 @@
-#ifndef BCE_HPP
-#define BCE_HPP
+#ifndef LINEARACTUATOR_HPP
+#define LINEARACTUATOR_HPP
  
 #include "mbed.h"
 #include "PololuHbridge.hpp"
-#include "controller.hpp"
+#include "PidController.hpp"
 #include "ltc1298.hpp"
 #include "PosVelFilter.hpp"
  
@@ -13,10 +13,8 @@
 //for this reason it makes sense for it to be its own entity that is started in
 //the main line code
  
-class LinearActuator
-{
+class LinearActuator {
 public:
-    //BuoyancyEngine(PololuHBridge motor, SpiADC adc, PosVelFilter filter, PositionController pid);
     LinearActuator(float interval, PinName pwm, PinName dir, PinName reset, PinName limit, int adc_ch);
     
     // functions for setting up
@@ -31,11 +29,9 @@
     
     // setting and getting variables
     void setPosition_mm(float dist);
-    
     float getPosition_mm();
-    float getPosition_counts();
-    
     float getVelocity_mms();
+//    float getPosition_counts();
     
     void setControllerP(float P);
     float getControllerP();
@@ -56,11 +52,11 @@
     float getPotSlope();
     
     void homePiston();
-    void setFilterFrequency(float frequency);
+    bool getSwitch();
     
     float getOutput();
     
-    bool getSwitch();
+    void setFilterFrequency(float frequency);
     
     void setDeadband(float deadband);
     bool toggleDeadband(bool toggle);
@@ -69,7 +65,6 @@
     PololuHBridge _motor;
     PosVelFilter _filter;
     PIDController _pid;
-    //Timer _time;
     Ticker _pulse;
     InterruptIn _limitSwitch;
     
@@ -77,7 +72,6 @@
     void _switchReleased();
     void _calculateSensorSlope();
     
-    
     bool _init;
     bool _paused;
     bool _limit;
@@ -90,12 +84,15 @@
     
     float _SetPoint_mm;
     
+    // position and velocity in counts (PVF runs on counts)
     float _position;
+    float _velocity;
+
+    // position and velocity converted to mm and mm/s
     float _position_mm;
-    
-    float _velocity;
     float _velocity_mms;
     
+    // linear actuator servo PID gains
     float _Pgain;
     float _Igain;
     float _Dgain;
@@ -104,7 +101,6 @@
     
     int _zeroCounts; //gets assigned by homing function. can also be stored in config
     float _extendLimit; //config variable, limits the extension of the piston, this is same as datum for normal operation,
-    float _pos_vel_wn;  //config variable, natural frequecny of the position velocity filter  
     
     float _slope;
     int dist_to_counts(float dist);
@@ -112,5 +108,18 @@
     float counts_to_velocity(int count);
  
 };
- 
+
+
+template <typename T>
+T clamp(T value, T min, T max)
+{
+    if(value < min) {
+        return min;
+    } else if(value > max) {
+        return max;
+    } else {
+        return value;
+    }
+};
+
 #endif
\ No newline at end of file