![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
control for robotic arm that can play chess using a granular gripper
Dependencies: Encoder mbed HIDScope Servo MODSERIAL
Fork of chessRobot by
Diff: main.cpp
- 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