modded version
Dependencies: Encoder MODSERIAL TextLCD mbed
Fork of PIPO-2 by
Revision 7:23ac2c766bcb, committed 2014-10-20
- Comitter:
- vsluiter
- Date:
- Mon Oct 20 14:20:36 2014 +0000
- Parent:
- 6:3b6fad529520
- Commit message:
- Started enum state machine
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
tmpEbHSVU | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Thu Oct 16 15:09:46 2014 +0000 +++ b/main.cpp Mon Oct 20 14:20:36 2014 +0000 @@ -24,6 +24,10 @@ Ticker ticker_regelaar; //Ticker voor regelaar motor Ticker ticker_EMG; //Ticker voor EMG meten +//states +enum pipostate {RUST,KALIBRATIE_ARM1,KALIBRATIE_ARM2,EMG_BICEPS,EMG_TRICEPS}; +uint8_t state=RUST; + //Gedefinieerde datatypen en naamgeving en beginwaarden bool rust = false; //Bool voor controleren volgorde in programma bool kalibratie_positie_arm1 = false; //Bool voor controleren volgorde in programma @@ -70,24 +74,25 @@ //PC baud rate instellen pc.baud(38400); //PC baud rate is 38400 bits/seconde - //Aanzetten - if (rust == false && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false){ + switch(state) + { + //Aanzetten + case RUST: + { lcd_r1 = " BMT M9 GR. 4 "; //Tekst op eerste regel van LCD scherm lcd_r2 = "Hoi! Ik ben PIPO"; //Tekst op tweede regel van LCD scherm wait(2); //Twee seconden wachten pc.printf("Aanzetten compleet"); //Tekst voor controle Aanzetten - rust = true; //Rust wordt waar zodat door kan worden gegaan naar het volgende deel + state = KALIBRATIE_ARM1; + break; } - - - - //Arm 1 naar thuispositie - if (rust == true && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false){ + case KALIBRATIE_ARM1: + { wait(1); //Een seconde wachten ticker_regelaar.attach(setregelaar_ticker_flag,SAMPLETIME_REGELAAR); //Ticker iedere zoveel seconde de flag op laten steken - while(rust == true && kalibratie_positie_arm1 == false && kalibratie_positie_arm2 == false && kalibratie_EMG_bi == false && kalibratie_EMG_tri == false) { + while(state == KALIBRATIE_ARM1) { while(regelaar_ticker_flag != true) ; //Als geen flag opgestoken, dan niks doen, wel flag, dan uit de while loop en door naar volgende regel regelaar_ticker_flag = false; //Flag weer naar beneden, zodat deze straks weer omhoog kan @@ -103,7 +108,7 @@ pwm_motor_arm1.write(abs(pwm_to_motor_arm1)); //Output PWM naar motor is de absolute waarde van de berekende PWM if (pwm_to_motor_arm1 == 0) { //Als het verschil tussen de voorgestelde en huidige positie nul is wordt de while loop gestopt (condities kloppen niet meer) - kalibratie_positie_arm1 = true; + state = KALIBRATIE_ARM2; pc.printf("Arm 1 naar thuispositie compleet"); //Tekst voor controle Arm 1 naar thuispositie } wait(1); //Een seconde wachten @@ -162,6 +167,8 @@ } } + } +