Control up to two motors using filtered EMG signals and a PID controller

Dependencies:   FastPWM HIDScope MODSERIAL QEI Matrix biquadFilter controller errorFetch mbed motorConfig refGen MatrixMath inverseKinematics

Fork of Minor_test_serial by First Last

Revision:
30:65f0c9ecf810
Parent:
29:9aa4d63a9bd1
Child:
31:cc08254ab7b5
--- a/main.cpp	Mon Oct 16 08:45:03 2017 +0000
+++ b/main.cpp	Mon Oct 16 09:42:04 2017 +0000
@@ -4,6 +4,7 @@
 #include "QEI.h"
 #include "FastPWM.h"
 #include "refGen.h"
+#include "controller.h"
 
 // Defining relevant constant parameters
 const float gearRatio = 131;
@@ -107,11 +108,7 @@
     }
 
 // motorController sets a motorValue based on the position error. Sign indicates direction and magnitude indicates speed. Right now this is a simple feedforward
-float motorController(float e_pos, float e_int, float e_der){
-    float motorValue;
-    motorValue = k_p*e_pos + k_d*e_der + k_i*e_int;
-    return motorValue;
-    }
+controller motorController1(k_p, k_d, k_i);
     
 // setMotor1 sets the direction and magnitude pins of motor1 depending on the given motorValue. Negative motorValue means clockwise rotation
 void setMotor1(float motorValue){
@@ -158,7 +155,7 @@
     
 void measureAndControl(){
     getError(e_pos, e_int, e_der);
-    float motorValue = motorController(e_pos, e_int, e_der);
+    float motorValue = motorController1.control(e_pos, e_int, e_der);
     float r = ref.getReferencePosition(maxAngle, r_direction);
     sendDataToPc(r, e_pos, e_int, e_der, motorValue);
     pc.printf("Motorvalue is %.2f \r\n", motorValue);