control for robotic arm that can play chess using a granular gripper

Dependencies:   Encoder mbed HIDScope Servo MODSERIAL

Fork of chessRobot by a steenbeek

Revision:
92:12e2e57e900a
Parent:
90:1d0c96a5bc5f
Child:
95:94f02d01ebdf
diff -r 1d0c96a5bc5f -r 12e2e57e900a main.cpp
--- a/main.cpp	Wed Oct 21 11:13:10 2015 +0200
+++ b/main.cpp	Wed Oct 21 10:28:42 2015 +0000
@@ -1,10 +1,10 @@
 /*
-   ________                      ____        __          __ 
+   ________                      ____        __          __
   / ____/ /_  ___  __________   / __ \____  / /_  ____  / /_
  / /   / __ \/ _ \/ ___/ ___/  / /_/ / __ \/ __ \/ __ \/ __/
-/ /___/ / / /  __(__  |__  )  / _, _/ /_/ / /_/ / /_/ / /_  
-\____/_/ /_/\___/____/____/  /_/ |_|\____/_.___/\____/\__/  
-                                                            
+/ /___/ / / /  __(__  |__  )  / _, _/ /_/ / /_/ / /_/ / /_
+\____/_/ /_/\___/____/____/  /_/ |_|\____/_.___/\____/\__/
+
 */
 
 #include "mbed.h"
@@ -14,57 +14,85 @@
 #include "debug.h"
 #include "emg.h"
 
+const int     sample = 0;               // Constant for EMG mode switching for program readability
+const int     normalize = 1;            // Constant for EMG mode switching for program readability
+
 bool start=false;
+bool emg_mode = normalize;              // Set EMG mode
+
 Ticker switchesTick, debugTick, motorTick, EMGTick, safetyTick;
 volatile bool switches_go=false, debug_go=false, motor_go=false, emg_go=false, safety_go=false;
 
-void switches_activate(){switches_go=true;};
-void debug_activate(){debug_go=true;};
-void motor_activate(){motor_go=true;};
-void emg_activate(){emg_go=true;};
-void safety_activate(){safety_go=true;};
-
-double motorCall = 0.01; // set motor frequency global so it can be used for speed.
-int main(){
-DigitalIn startButton(startPin);
-while(start == false){
-    if(startButton.read()==0){
-        start=true;
-    }
-}
-else{
-motorInit();    
-calibrateMotors(); // start calibration procedure
+void switches_activate()
+{
+    switches_go=true;
+};
+void debug_activate()
+{
+    debug_go=true;
+};
+void motor_activate()
+{
+    motor_go=true;
+};
+void emg_activate()
+{
+    emg_go=true;
+};
+void safety_activate()
+{
+    safety_go=true;
+};
 
-switchesTick.attach(&switches_activate, 0.02f);
-debugTick.attach(&debug_activate, 0.03f);
-motorTick.attach(&motor_activate, motorCall);
-EMGTick.attach(&emg_activate, 0.005f);
-safetyTick.attach(&safety_activate, 0.001f);
-
-
-    while (true) {
-        if(safety_go){
-            safety_go=false;
-            safety();
-        }
-        if(emg_go){
-            emg_go=false;
-            readEMG();
-        }
-        if(switches_go){
-            switches_go=false;
-            checkSwitches();
-        }
-        if(debug_go){
-            debug_go=false;
-            debugProcess();
-        }
-        if(motor_go){
-            motor_go=false;
-            motorControl();
-        // servoControl();
+double motorCall = 0.005; // set motor frequency global so it can be used for speed.
+int main()
+{
+    DigitalIn startButton(startPin);
+    while(start == false) {
+        if(startButton.read()==0) {
+            start=true;
         }
     }
-}
+    while (start == true) {
+        motorInit();
+
+        EMGTick.attach(&emg_activate, 0.005f);
+        switchesTick.attach(&switches_activate, 0.02f);
+        debugTick.attach(&debug_activate, 0.03f);
+        motorTick.attach(&motor_activate, motorCall);
+        safetyTick.attach(&safety_activate, 0.001f);
+
+        while (emg_mode == normalize) {
+            if(emg_go) {
+                emg_go=false;
+                readEMG();
+            }
+        }
+
+        calibrateMotors();              // start calibration procedure
+
+        while (true) {
+            if(safety_go) {
+                safety_go=false;
+                safety();
+            }
+            if(emg_go) {
+                emg_go=false;
+                readEMG();
+            }
+            if(switches_go) {
+                switches_go=false;
+                checkSwitches();
+            }
+            if(debug_go) {
+                debug_go=false;
+                debugProcess();
+            }
+            if(motor_go) {
+                motor_go=false;
+                motorControl();
+                // servoControl();
+            }
+        }
+    }
 }
\ No newline at end of file