voor thomas
Dependencies: BMT-K9-Regelaar MODSERIAL mbed
Fork of BMT-K9-Regelaar by
main.cpp@2:2d32a0543c63, 2013-10-31 (annotated)
- 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?
User | Revision | Line number | New 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 |