Script 15-10-2019

Dependencies:   Servoaansturing mbed QEI HIDScope biquadFilter MODSERIAL FastPWM

Revision:
9:4de589636f50
Parent:
8:c7d3b67346db
Child:
10:83f3cec8dd1c
--- a/main.cpp	Mon Oct 14 09:46:14 2019 +0000
+++ b/main.cpp	Mon Oct 14 12:41:38 2019 +0000
@@ -13,8 +13,8 @@
 PwmOut motor1(D6);  
 PwmOut motor2(D5);  
 
-InterruptIn Power_button_pressed(D1);
-InterruptIn Emergency_button_pressed(D2);
+DigitalIn Power_button_pressed(D1);
+DigitalIn Emergency_button_pressed(D2);
 
 Ticker loop_ticker;
     
@@ -23,83 +23,88 @@
     {
           motor1=!motor1;
           motor2=!motor2;
-          pc.printf("Motoren staan aan/uit");
+          pc.printf("Motoren aan/uit functie\r\n");
     }    
     
 void emergency()
     {
         motor1.write(0);
         motor2.write(0);
-        pc.printf("Noodgeval");
+        pc.printf("Noodgeval functie\r\n");
     }    
     
 void motors_off()
     {
         motor1.write(0);
         motor2.write(0);
-        pc.printf("Motoren staan uit");
+        pc.printf("Motoren uit functie\r\n");
     }  
     
     
 
 // Finite state machine programming (calibration servo motor?)
-enum states {Motors_off, Failure_mode};
+enum states {Motors_off, Calib_motor};
 
 states currentState = Motors_off; 
 bool stateChanged = true; // Make sure the initialization of first state is executed
 
 void ProcessStateMachine(void) 
-{ 
+{   
     switch (currentState) 
     { 
         case Motors_off:
         
-            if (stateChanged)
+            if (stateChanged) 
             {
                 motors_off(); // functie waarbij motoren uitgaan
+                pc.printf("Motors off state\r\n");
                 stateChanged = false;
-                pc.printf("Motors off\n");
-            }            
-            if  (Power_button_pressed)
+                // wait_ms(5000);  
+            }          
+            if  (Power_button_pressed.read() == false)
             {      
-                Power_button_pressed.mode(PullUp); 
-                Power_button_pressed.rise(motors_on_off); // functie waarbij de motoren aan-/ uitgaan 
+                // Power_button_pressed.mode(PullUp); 
+                // Power_button_pressed.rise(motors_on_off); // functie waarbij de motoren aan-/ uitgaan 
                 stateChanged = true;
-                pc.printf("Moving to Calib_motor state\n");
+                pc.printf("Moving to Calib_motor state\r\n");
+                currentState = Calib_motor;
             }
-            if  (Emergency_button_pressed) 
+            if  (Emergency_button_pressed.read() == false) 
             { 
-                Emergency_button_pressed.mode(PullUp); 
-                Emergency_button_pressed.rise(emergency); // functie die de motoren uitzet
-                currentState = Failure_mode;
-                stateChanged = true;
-                pc.printf("Moving to failure_mode\n");
-            }
-                
-            break;
-                
-        case Failure_mode:
-        
-            if (stateChanged)
-            { 
-                pc.printf("Ik ga exploderen!!!");
+                // Emergency_button_pressed.mode(PullUp); 
+                // Emergency_button_pressed.rise(emergency); // functie die de motoren uitzet
+                pc.printf("Ik ga exploderen!!!\r\n");
                 loop_ticker.detach(); 
                 // Alles moet uitgaan (evt. een rood LEDje laten branden), moet 
                 // opnieuw worden opgestart. Mogelijk kan dit door de ticker de 
                 // detachen
-            }
+            } 
             break;
             
+        case Calib_motor:
+            
+            if (stateChanged)
+            {       
+                // Hier wordt een kalibratie uitgevoerd, waarbij de motorhoeken worden bepaald
+                pc.printf("Moving to Calib_EMG state\r\n");
+            }    
+            break;
+                     
         default:
             // Zelfde functie als die eerder is toegepast om motoren uit te schakelen -> safety!
-            pc.printf("Unknown or uninplemented state reached!\n");
+            pc.printf("Unknown or uninplemented state reached!\r\n");
             
         }
     }
 
 int main(void)
     {
-        loop_ticker.attach(&ProcessStateMachine, 2.0f);  
+        pc.printf("Opstarten\r\n");
+        loop_ticker.attach(&ProcessStateMachine, 3.0f);  
         while(true) 
-        { /* do nothing */ ;}
+        { 
+            // pc.printf("powerbutton: %d\r\n", Power_button_pressed.read());
+            // pc.printf("emergencybutton: %d\r\n", Emergency_button_pressed.read());
+            // wait(0.5);
+            /* do nothing */}
     }
\ No newline at end of file