modded version

Dependencies:   Encoder MODSERIAL TextLCD mbed

Fork of PIPO-2 by Janine Klein Rot

Files at this revision

API Documentation at this revision

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
diff -r 3b6fad529520 -r 23ac2c766bcb main.cpp
--- 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 @@
         }
             
     }
+    }
+ 
         
     
         
diff -r 3b6fad529520 -r 23ac2c766bcb tmpEbHSVU