![](/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
main.cpp@92:12e2e57e900a, 2015-10-21 (annotated)
- Committer:
- bjornnijhuis
- Date:
- Wed Oct 21 10:28:42 2015 +0000
- Revision:
- 92:12e2e57e900a
- Parent:
- 90:1d0c96a5bc5f
- Child:
- 95:94f02d01ebdf
Set EMG configuration to run before calibration of motors
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
annesteenbeek | 59:fe00be2cf8fd | 1 | /* |
bjornnijhuis | 92:12e2e57e900a | 2 | ________ ____ __ __ |
annesteenbeek | 59:fe00be2cf8fd | 3 | / ____/ /_ ___ __________ / __ \____ / /_ ____ / /_ |
annesteenbeek | 59:fe00be2cf8fd | 4 | / / / __ \/ _ \/ ___/ ___/ / /_/ / __ \/ __ \/ __ \/ __/ |
bjornnijhuis | 92:12e2e57e900a | 5 | / /___/ / / / __(__ |__ ) / _, _/ /_/ / /_/ / /_/ / /_ |
bjornnijhuis | 92:12e2e57e900a | 6 | \____/_/ /_/\___/____/____/ /_/ |_|\____/_.___/\____/\__/ |
bjornnijhuis | 92:12e2e57e900a | 7 | |
annesteenbeek | 59:fe00be2cf8fd | 8 | */ |
annesteenbeek | 59:fe00be2cf8fd | 9 | |
annesteenbeek | 12:61759f94c07a | 10 | #include "mbed.h" |
annesteenbeek | 13:4837b36b9a68 | 11 | #include "config.h" // settings and pin configurations |
annesteenbeek | 13:4837b36b9a68 | 12 | #include "actuators.h" |
annesteenbeek | 15:5fa388ba22cb | 13 | #include "buttons.h" |
annesteenbeek | 25:874675516927 | 14 | #include "debug.h" |
annesteenbeek | 78:0cc7c64ba94c | 15 | #include "emg.h" |
annesteenbeek | 6:b957d8809e7c | 16 | |
bjornnijhuis | 92:12e2e57e900a | 17 | const int sample = 0; // Constant for EMG mode switching for program readability |
bjornnijhuis | 92:12e2e57e900a | 18 | const int normalize = 1; // Constant for EMG mode switching for program readability |
bjornnijhuis | 92:12e2e57e900a | 19 | |
annesteenbeek | 86:a5f48ae7096e | 20 | bool start=false; |
bjornnijhuis | 92:12e2e57e900a | 21 | bool emg_mode = normalize; // Set EMG mode |
bjornnijhuis | 92:12e2e57e900a | 22 | |
annesteenbeek | 79:cf500b63f349 | 23 | Ticker switchesTick, debugTick, motorTick, EMGTick, safetyTick; |
annesteenbeek | 79:cf500b63f349 | 24 | volatile bool switches_go=false, debug_go=false, motor_go=false, emg_go=false, safety_go=false; |
annesteenbeek | 0:525558a26464 | 25 | |
bjornnijhuis | 92:12e2e57e900a | 26 | void switches_activate() |
bjornnijhuis | 92:12e2e57e900a | 27 | { |
bjornnijhuis | 92:12e2e57e900a | 28 | switches_go=true; |
bjornnijhuis | 92:12e2e57e900a | 29 | }; |
bjornnijhuis | 92:12e2e57e900a | 30 | void debug_activate() |
bjornnijhuis | 92:12e2e57e900a | 31 | { |
bjornnijhuis | 92:12e2e57e900a | 32 | debug_go=true; |
bjornnijhuis | 92:12e2e57e900a | 33 | }; |
bjornnijhuis | 92:12e2e57e900a | 34 | void motor_activate() |
bjornnijhuis | 92:12e2e57e900a | 35 | { |
bjornnijhuis | 92:12e2e57e900a | 36 | motor_go=true; |
bjornnijhuis | 92:12e2e57e900a | 37 | }; |
bjornnijhuis | 92:12e2e57e900a | 38 | void emg_activate() |
bjornnijhuis | 92:12e2e57e900a | 39 | { |
bjornnijhuis | 92:12e2e57e900a | 40 | emg_go=true; |
bjornnijhuis | 92:12e2e57e900a | 41 | }; |
bjornnijhuis | 92:12e2e57e900a | 42 | void safety_activate() |
bjornnijhuis | 92:12e2e57e900a | 43 | { |
bjornnijhuis | 92:12e2e57e900a | 44 | safety_go=true; |
bjornnijhuis | 92:12e2e57e900a | 45 | }; |
annesteenbeek | 29:e4f3455aaa0b | 46 | |
bjornnijhuis | 92:12e2e57e900a | 47 | double motorCall = 0.005; // set motor frequency global so it can be used for speed. |
bjornnijhuis | 92:12e2e57e900a | 48 | int main() |
bjornnijhuis | 92:12e2e57e900a | 49 | { |
bjornnijhuis | 92:12e2e57e900a | 50 | DigitalIn startButton(startPin); |
bjornnijhuis | 92:12e2e57e900a | 51 | while(start == false) { |
bjornnijhuis | 92:12e2e57e900a | 52 | if(startButton.read()==0) { |
bjornnijhuis | 92:12e2e57e900a | 53 | start=true; |
annesteenbeek | 30:a20f16bf8dda | 54 | } |
annesteenbeek | 0:525558a26464 | 55 | } |
bjornnijhuis | 92:12e2e57e900a | 56 | while (start == true) { |
bjornnijhuis | 92:12e2e57e900a | 57 | motorInit(); |
bjornnijhuis | 92:12e2e57e900a | 58 | |
bjornnijhuis | 92:12e2e57e900a | 59 | EMGTick.attach(&emg_activate, 0.005f); |
bjornnijhuis | 92:12e2e57e900a | 60 | switchesTick.attach(&switches_activate, 0.02f); |
bjornnijhuis | 92:12e2e57e900a | 61 | debugTick.attach(&debug_activate, 0.03f); |
bjornnijhuis | 92:12e2e57e900a | 62 | motorTick.attach(&motor_activate, motorCall); |
bjornnijhuis | 92:12e2e57e900a | 63 | safetyTick.attach(&safety_activate, 0.001f); |
bjornnijhuis | 92:12e2e57e900a | 64 | |
bjornnijhuis | 92:12e2e57e900a | 65 | while (emg_mode == normalize) { |
bjornnijhuis | 92:12e2e57e900a | 66 | if(emg_go) { |
bjornnijhuis | 92:12e2e57e900a | 67 | emg_go=false; |
bjornnijhuis | 92:12e2e57e900a | 68 | readEMG(); |
bjornnijhuis | 92:12e2e57e900a | 69 | } |
bjornnijhuis | 92:12e2e57e900a | 70 | } |
bjornnijhuis | 92:12e2e57e900a | 71 | |
bjornnijhuis | 92:12e2e57e900a | 72 | calibrateMotors(); // start calibration procedure |
bjornnijhuis | 92:12e2e57e900a | 73 | |
bjornnijhuis | 92:12e2e57e900a | 74 | while (true) { |
bjornnijhuis | 92:12e2e57e900a | 75 | if(safety_go) { |
bjornnijhuis | 92:12e2e57e900a | 76 | safety_go=false; |
bjornnijhuis | 92:12e2e57e900a | 77 | safety(); |
bjornnijhuis | 92:12e2e57e900a | 78 | } |
bjornnijhuis | 92:12e2e57e900a | 79 | if(emg_go) { |
bjornnijhuis | 92:12e2e57e900a | 80 | emg_go=false; |
bjornnijhuis | 92:12e2e57e900a | 81 | readEMG(); |
bjornnijhuis | 92:12e2e57e900a | 82 | } |
bjornnijhuis | 92:12e2e57e900a | 83 | if(switches_go) { |
bjornnijhuis | 92:12e2e57e900a | 84 | switches_go=false; |
bjornnijhuis | 92:12e2e57e900a | 85 | checkSwitches(); |
bjornnijhuis | 92:12e2e57e900a | 86 | } |
bjornnijhuis | 92:12e2e57e900a | 87 | if(debug_go) { |
bjornnijhuis | 92:12e2e57e900a | 88 | debug_go=false; |
bjornnijhuis | 92:12e2e57e900a | 89 | debugProcess(); |
bjornnijhuis | 92:12e2e57e900a | 90 | } |
bjornnijhuis | 92:12e2e57e900a | 91 | if(motor_go) { |
bjornnijhuis | 92:12e2e57e900a | 92 | motor_go=false; |
bjornnijhuis | 92:12e2e57e900a | 93 | motorControl(); |
bjornnijhuis | 92:12e2e57e900a | 94 | // servoControl(); |
bjornnijhuis | 92:12e2e57e900a | 95 | } |
bjornnijhuis | 92:12e2e57e900a | 96 | } |
bjornnijhuis | 92:12e2e57e900a | 97 | } |
annesteenbeek | 0:525558a26464 | 98 | } |