voor thomas

Dependencies:   BMT-K9-Regelaar MODSERIAL mbed

Fork of BMT-K9-Regelaar by First Last

Committer:
gerard1993
Date:
Thu Oct 31 15:22:46 2013 +0000
Revision:
2:2d32a0543c63
Parent:
1:9d05c0236c7e
voor thomas

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vsluiter 0:7bc93f851767 1 #include "mbed.h"
vsluiter 0:7bc93f851767 2 #include "MODSERIAL.h"
vsluiter 0:7bc93f851767 3
gerard1993 2:2d32a0543c63 4
vsluiter 1:9d05c0236c7e 5 /** keep_in_range -> float in, and keep_in_range if less than min, or larger than max **/
vsluiter 1:9d05c0236c7e 6 void keep_in_range(float * in, float min, float max);
vsluiter 1:9d05c0236c7e 7
vsluiter 0:7bc93f851767 8 volatile bool looptimerflag;
gerard1993 2:2d32a0543c63 9 float sluis10;
gerard1993 2:2d32a0543c63 10 int sluis11;
gerard1993 2:2d32a0543c63 11 float y;
gerard1993 2:2d32a0543c63 12 float y1;
gerard1993 2:2d32a0543c63 13 float y2;
gerard1993 2:2d32a0543c63 14 float z;
gerard1993 2:2d32a0543c63 15 float z1;
gerard1993 2:2d32a0543c63 16 float z2;
gerard1993 2:2d32a0543c63 17 float numl1;
gerard1993 2:2d32a0543c63 18 float numl2;
gerard1993 2:2d32a0543c63 19 float numl3;
gerard1993 2:2d32a0543c63 20 float denl1;
gerard1993 2:2d32a0543c63 21 float denl2;
gerard1993 2:2d32a0543c63 22 float denl3;
vsluiter 0:7bc93f851767 23
vsluiter 0:7bc93f851767 24 void setlooptimerflag(void)
vsluiter 0:7bc93f851767 25 {
vsluiter 0:7bc93f851767 26 looptimerflag = true;
vsluiter 0:7bc93f851767 27 }
gerard1993 2:2d32a0543c63 28 AnalogIn sluis1(PTC2);
gerard1993 2:2d32a0543c63 29
vsluiter 0:7bc93f851767 30
vsluiter 0:7bc93f851767 31 int main() {
gerard1993 2:2d32a0543c63 32 //START OF CODE
vsluiter 0:7bc93f851767 33 MODSERIAL pc(USBTX,USBRX);
gerard1993 2:2d32a0543c63 34 pc.baud(115200);
vsluiter 0:7bc93f851767 35 Ticker looptimer;
gerard1993 2:2d32a0543c63 36 looptimer.attach(setlooptimerflag,0.004);
gerard1993 2:2d32a0543c63 37 y=0;
gerard1993 2:2d32a0543c63 38 y1=0;
gerard1993 2:2d32a0543c63 39 y2=0;
gerard1993 2:2d32a0543c63 40 z1=0;
gerard1993 2:2d32a0543c63 41 z2=0;
gerard1993 2:2d32a0543c63 42
gerard1993 2:2d32a0543c63 43 //Low pass, 2 Hz, 2e orde, 1 ms.
gerard1993 2:2d32a0543c63 44 numl1=0.003621681514929;
gerard1993 2:2d32a0543c63 45 numl2=0.007243363029857;
gerard1993 2:2d32a0543c63 46 numl3=0.003621681514929;
gerard1993 2:2d32a0543c63 47 //denl1=1;
gerard1993 2:2d32a0543c63 48 denl2=-1.822694925196308;
gerard1993 2:2d32a0543c63 49 denl3=0.837181651256023;
gerard1993 2:2d32a0543c63 50
vsluiter 1:9d05c0236c7e 51 //INFINITE LOOP
vsluiter 0:7bc93f851767 52 while(1) {
vsluiter 1:9d05c0236c7e 53 while(looptimerflag != true);
vsluiter 0:7bc93f851767 54 looptimerflag = false;
gerard1993 2:2d32a0543c63 55 y = sluis1.read();
gerard1993 2:2d32a0543c63 56 z=y*numl1+y1*numl2+y2*numl3-z1*denl2-z2*denl3;
gerard1993 2:2d32a0543c63 57
gerard1993 2:2d32a0543c63 58 y1=y;
gerard1993 2:2d32a0543c63 59 y2=y1;
gerard1993 2:2d32a0543c63 60 z1=z;
gerard1993 2:2d32a0543c63 61 z2=z1;
gerard1993 2:2d32a0543c63 62
gerard1993 2:2d32a0543c63 63 if(z > 0.85)
gerard1993 2:2d32a0543c63 64 sluis11 = 1;
vsluiter 0:7bc93f851767 65 else
gerard1993 2:2d32a0543c63 66 sluis11 = 0;
gerard1993 2:2d32a0543c63 67 //pc.printf("%f, %i \n\r", sluis10, sluis11);
gerard1993 2:2d32a0543c63 68 //pc.printf("%f \n\r", z);
gerard1993 2:2d32a0543c63 69 pc.printf("%i \n\r", sluis11);
gerard1993 2:2d32a0543c63 70
gerard1993 2:2d32a0543c63 71
vsluiter 0:7bc93f851767 72 }
vsluiter 0:7bc93f851767 73 }
vsluiter 0:7bc93f851767 74
vsluiter 0:7bc93f851767 75
vsluiter 0:7bc93f851767 76 //coerces value 'in' to min or max when exceeding those values
vsluiter 0:7bc93f851767 77 //if you'd like to understand the statement below take a google for
vsluiter 0:7bc93f851767 78 //'ternary operators'.
vsluiter 1:9d05c0236c7e 79 void keep_in_range(float * in, float min, float max)
vsluiter 0:7bc93f851767 80 {
vsluiter 0:7bc93f851767 81 *in > min ? *in < max? : *in = max: *in = min;
vsluiter 0:7bc93f851767 82 }
vsluiter 0:7bc93f851767 83
vsluiter 0:7bc93f851767 84
vsluiter 0:7bc93f851767 85