voor thomas
Dependencies: BMT-K9-Regelaar MODSERIAL mbed
Fork of BMT-K9-Regelaar by
main.cpp
- Committer:
- gerard1993
- Date:
- 2013-10-31
- Revision:
- 2:2d32a0543c63
- Parent:
- 1:9d05c0236c7e
File content as of revision 2:2d32a0543c63:
#include "mbed.h" #include "MODSERIAL.h" /** keep_in_range -> float in, and keep_in_range if less than min, or larger than max **/ void keep_in_range(float * in, float min, float max); volatile bool looptimerflag; float sluis10; int sluis11; float y; float y1; float y2; float z; float z1; float z2; float numl1; float numl2; float numl3; float denl1; float denl2; float denl3; void setlooptimerflag(void) { looptimerflag = true; } AnalogIn sluis1(PTC2); int main() { //START OF CODE MODSERIAL pc(USBTX,USBRX); pc.baud(115200); Ticker looptimer; looptimer.attach(setlooptimerflag,0.004); y=0; y1=0; y2=0; z1=0; z2=0; //Low pass, 2 Hz, 2e orde, 1 ms. numl1=0.003621681514929; numl2=0.007243363029857; numl3=0.003621681514929; //denl1=1; denl2=-1.822694925196308; denl3=0.837181651256023; //INFINITE LOOP while(1) { while(looptimerflag != true); looptimerflag = false; y = sluis1.read(); z=y*numl1+y1*numl2+y2*numl3-z1*denl2-z2*denl3; y1=y; y2=y1; z1=z; z2=z1; if(z > 0.85) sluis11 = 1; else sluis11 = 0; //pc.printf("%f, %i \n\r", sluis10, sluis11); //pc.printf("%f \n\r", z); pc.printf("%i \n\r", sluis11); } } //coerces value 'in' to min or max when exceeding those values //if you'd like to understand the statement below take a google for //'ternary operators'. void keep_in_range(float * in, float min, float max) { *in > min ? *in < max? : *in = max: *in = min; }