Sets the Kp, Ki and Kd values of the PID controller for the encoder motors

Dependencies:   FastPWM HIDScope_motor_ff MODSERIAL QEI mbed

Fork of Encoder by Biorobotics_group_2

Revision:
5:36788b154e25
Parent:
3:ce0f979f15fb
Child:
6:ed11342ab079
--- a/main.cpp	Fri Oct 07 09:15:29 2016 +0000
+++ b/main.cpp	Fri Oct 07 12:06:16 2016 +0000
@@ -1,57 +1,38 @@
 #include "mbed.h"
 #include "HIDScope.h"
+#include "QEI.h"
 #define SERIAL_BAUD 115200  // baud rate for serial communication
  
- Serial pc(USBTX,USBRX);
- 
-// Define the HIDScope and Ticker object
-HIDScope    scope(1);
-Ticker      scopeTimer;
- 
-// Read the analog input
-AnalogIn    a0(A0);
-// AnalogIn pot(A0);
-
-// Set LED out
-DigitalOut  led(LED_RED);
-volatile int i = 0;
+Serial pc(USBTX,USBRX);
 
- 
-const float kTimeLedToggle = .5f;  // period of blinking
-const int   kLedOn=0;             // Led on if 0
-volatile float pot = 0.0;
- 
-// The data read and send function
-void scopeSend()
-{
-    i=i+a0.read();
-    
-    if (i > 100){
-        i=0;
-        }
-    // pot = a0.read();
-    scope.set(0, i);
-    scope.send();
-    pc.printf("\r\n b \r\n");
-    pc.printf("\r\n %f \r\n",i);
-}
+int countsCW = 0;
+int countsCCW = 0;
+int net_counts = 0;
+float degrees = 0.0;
+const float counts_per_rev = 4200.0;
+QEI EncoderCW(D12,D13,NC,32);
+QEI EncoderCCW(D13,D12,NC,32);
 
-void SwitchLed(){
-    led = not led;
-}
- 
+void PrintDegrees(){
+    pc.printf("\r\n Nett Pulses %i \r\n", net_counts);
+    pc.printf("\r\n Output degrees  %f \r\n", degrees);
+    }
+
 int main()
 {
     pc.baud(SERIAL_BAUD);
     pc.printf("\r\n ***THERMONUCLEAR WARFARE COMMENCES*** \r\n");
     
-    led = not kLedOn;
-    // Create ticker for LED and attach
-    Ticker tick_toggle_led;
-    tick_toggle_led.attach(SwitchLed,kTimeLedToggle);
+    // Set ticker for serial communication of counts and degrees
+    Ticker PrintDegreesTicker;
+    PrintDegreesTicker.attach(&PrintDegrees,0.1);
     
-    // Attach the data read and send function at 100 Hz
-    scopeTimer.attach(&scopeSend, 0.01f);
-   
-    while(true);
+    // count the CW and CCW counts and calculate the output degrees
+    while(true){
+    countsCW = EncoderCW.getPulses();
+    countsCCW= EncoderCCW.getPulses();
+    net_counts=countsCW-countsCCW;
+    degrees=(net_counts*360.0)/counts_per_rev;
+    
+    }
 }
\ No newline at end of file