Source: https://gist.github.com/bradley219/5373998 Include serial output

Dependencies:   mbed

Dependents:   DC_Stepper_Controller_Lib

Files at this revision

API Documentation at this revision

Comitter:
stivending
Date:
Thu May 27 05:43:33 2021 +0000
Parent:
0:845ccddeede5
Commit message:
change min/max to absolute control;

Changed in this revision

main.cpp Show diff for this revision Revisions of this file
pid.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 845ccddeede5 -r 4ecc202a912a main.cpp
--- a/main.cpp	Mon May 24 14:46:32 2021 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/**
- * Copyright 2019 Bradley J. Snyder <snyder.bradleyj@gmail.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#include "pid.h"
-#include "mbed.h"
-
-Serial myPC(USBTX, USBRX); // import serial for the UART attached toUSB
-
-int main() {
-    myPC.printf("Welcome to PID Test \n\r");
-    PID pid = PID(0.1, 100, -100, 0.1, 0.01, 0.5);
-
-    double val = 20;
-    for (int i = 0; i < 100; i++) {
-        double inc = pid.calculate(0, val);
-        printf("val:% 7.3f inc:% 7.3f\n", val, inc);
-        myPC.printf("val:% 7.3f inc:% 7.3f\n", val, inc);
-        val += inc;
-    }
-
-    return 0;
-}
diff -r 845ccddeede5 -r 4ecc202a912a pid.cpp
--- a/pid.cpp	Mon May 24 14:46:32 2021 +0000
+++ b/pid.cpp	Thu May 27 05:43:33 2021 +0000
@@ -98,10 +98,10 @@
     double output = Pout + Iout + Dout;
 
     // Restrict to max/min
-    if( output > _max )
-        output = _max;
-    else if( output < _min )
-        output = _min;
+    if( abs(output) > _max )
+        output = output > 0 ? _max : -_max;
+    else if( abs(output) < _min )
+        output = output > 0 ? _min : -_min;
 
     // Save error to previous error
     _pre_error = error;