![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Functie van het slaan van de bal
Dependencies: Encoder HIDScope mbed-dsp mbed MODSERIAL
Diff: main.cpp
- Revision:
- 13:b35f3553f210
- Parent:
- 12:5ea8de059fa1
- Child:
- 14:e9ab81429271
diff -r 5ea8de059fa1 -r b35f3553f210 main.cpp --- a/main.cpp Wed Oct 29 13:41:21 2014 +0000 +++ b/main.cpp Wed Oct 29 15:36:59 2014 +0000 @@ -5,12 +5,12 @@ #include <iostream> #define SAMP_TIME 0.01 -#define K_P (0.1) -#define K_I (0.04 *SAMP_TIME) -#define K_D (0.0001 /SAMP_TIME) +#define K_P (0.001) +#define K_I (0.000001 *SAMP_TIME) +#define K_D (0.000005 /SAMP_TIME) #define I_LIMIT 1. -#define MAXENCO 256 +#define MAXENCO 320 #define MINENCO 0 @@ -20,31 +20,40 @@ DigitalOut m1_dir(PTA4); //define functions -void slam(); +void slam(int emg_value); void clamp(float * in, float min, float max); float pid(float rev_value, float mea_value); //define global variables -int y1; +//int y1; float new_speed; float max_speed; float enca; +volatile bool looptimerflag; + +void setlooptimerflag(void) +{ + looptimerflag = true; +} int main() { + int y1; + Ticker looptimer; + looptimer.attach(setlooptimerflag,SAMP_TIME); while(1) { cin >> y1; cout << y1 << endl; - slam(); + slam(y1); } } -void slam() +void slam(int emg_value) { cout << "Ik begin met de slafunctie" << endl; cout << encoderA.getPosition() << endl << "check" << endl; - switch (y1) + switch (emg_value) { case 1: cout << "zaak1" << endl; @@ -73,13 +82,15 @@ break; } cout << "Ik ben uit de switch" << endl; + while(!looptimerflag); + looptimerflag=false; new_speed=pid(MAXENCO,encoderA.getPosition()); clamp(&new_speed,-max_speed,max_speed); if (new_speed>0) { m1_dir=1; } - else + else if (new_speed<0) { m1_dir=0; } @@ -87,6 +98,8 @@ while(new_speed<-0.1 || new_speed>0.1) { + while(!looptimerflag); + looptimerflag=false; //cout << "Eat, Sleep, Rave, Repeat" << endl; new_speed=pid(MAXENCO,encoderA.getPosition()); clamp(&new_speed,-max_speed,max_speed); @@ -94,7 +107,7 @@ { m1_dir=1; } - else + else if (new_speed<0) { m1_dir=0; } @@ -103,13 +116,15 @@ } cout << "Ik ben uit de eerste whilelus" << endl; cout << encoderA.getPosition() << endl << "check" << endl; + while(!looptimerflag); + looptimerflag=false; new_speed=pid(MINENCO,encoderA.getPosition()); clamp(&new_speed,-max_speed,max_speed); if (new_speed>0) { m1_dir=1; } - else + else if (new_speed<0) { m1_dir=0; } @@ -117,13 +132,15 @@ while(new_speed<-0.1 || new_speed>0.1) { + while(!looptimerflag); + looptimerflag=false; new_speed=pid(MINENCO,encoderA.getPosition()); clamp(&new_speed,-0.5,0.5); if (new_speed>0) { m1_dir=1; } - else + else if (new_speed<0) { m1_dir=0; }