![](/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@115:d8d2968981f3, 2015-10-27 (annotated)
- Committer:
- annesteenbeek
- Date:
- Tue Oct 27 16:21:20 2015 +0100
- Revision:
- 115:d8d2968981f3
- Parent:
- 110:a6439e13be8b
- Child:
- 116:8b812e268b85
connected calibration with ticker, when calibration ready, start rest of tickers
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
annesteenbeek | 59:fe00be2cf8fd | 1 | /* |
annesteenbeek | 59:fe00be2cf8fd | 2 | ________ ____ __ __ |
annesteenbeek | 59:fe00be2cf8fd | 3 | / ____/ /_ ___ __________ / __ \____ / /_ ____ / /_ |
annesteenbeek | 59:fe00be2cf8fd | 4 | / / / __ \/ _ \/ ___/ ___/ / /_/ / __ \/ __ \/ __ \/ __/ |
annesteenbeek | 59:fe00be2cf8fd | 5 | / /___/ / / / __(__ |__ ) / _, _/ /_/ / /_/ / /_/ / /_ |
annesteenbeek | 59:fe00be2cf8fd | 6 | \____/_/ /_/\___/____/____/ /_/ |_|\____/_.___/\____/\__/ |
annesteenbeek | 59:fe00be2cf8fd | 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 | |
annesteenbeek | 110:a6439e13be8b | 17 | int a =4; |
annesteenbeek | 110:a6439e13be8b | 18 | |
annesteenbeek | 115:d8d2968981f3 | 19 | Ticker switchesTick, debugTick, motorTick, EMGTick, safetyTick calibrateTick; |
annesteenbeek | 115:d8d2968981f3 | 20 | volatile bool switches_go=false, debug_go=false, motor_go=false, emg_go=false, safety_go=false, cal_go=false; |
annesteenbeek | 0:525558a26464 | 21 | |
annesteenbeek | 30:a20f16bf8dda | 22 | void switches_activate(){switches_go=true;}; |
annesteenbeek | 30:a20f16bf8dda | 23 | void debug_activate(){debug_go=true;}; |
annesteenbeek | 30:a20f16bf8dda | 24 | void motor_activate(){motor_go=true;}; |
annesteenbeek | 60:20945383ad1b | 25 | void emg_activate(){emg_go=true;}; |
annesteenbeek | 79:cf500b63f349 | 26 | void safety_activate(){safety_go=true;}; |
annesteenbeek | 115:d8d2968981f3 | 27 | void calibration_activate(){cal_go=true;}; |
annesteenbeek | 115:d8d2968981f3 | 28 | |
annesteenbeek | 115:d8d2968981f3 | 29 | void tickerAttach(){ |
annesteenbeek | 115:d8d2968981f3 | 30 | calibrateTick.detach(&calibration_activate); // stop calibration ticker |
annesteenbeek | 115:d8d2968981f3 | 31 | EMGTick.attach(&emg_activate, 0.005f); |
annesteenbeek | 115:d8d2968981f3 | 32 | switchesTick.attach(&switches_activate, 0.02f); |
annesteenbeek | 115:d8d2968981f3 | 33 | debugTick.attach(&debug_activate, 0.03f); |
annesteenbeek | 115:d8d2968981f3 | 34 | motorTick.attach(&motor_activate, motorCall); |
annesteenbeek | 115:d8d2968981f3 | 35 | safetyTick.attach(&safety_activate, 0.001f); |
annesteenbeek | 115:d8d2968981f3 | 36 | } |
annesteenbeek | 59:fe00be2cf8fd | 37 | |
annesteenbeek | 62:6c566e6f9664 | 38 | double motorCall = 0.01; // set motor frequency global so it can be used for speed. |
annesteenbeek | 98:25528494287d | 39 | const int sample = 0; // Constant for mode switching for program readability |
annesteenbeek | 98:25528494287d | 40 | const int normalize = 1; // Constant for mode switching for program readability |
annesteenbeek | 98:25528494287d | 41 | bool mode = normalize; // Set program mode |
annesteenbeek | 110:a6439e13be8b | 42 | bool calReady = false; // flag for calibration ready |
annesteenbeek | 29:e4f3455aaa0b | 43 | |
annesteenbeek | 98:25528494287d | 44 | int main(){ |
annesteenbeek | 115:d8d2968981f3 | 45 | motorInit(); |
annesteenbeek | 115:d8d2968981f3 | 46 | calibrateTick.attach(&calibration_activate, motorCall); |
annesteenbeek |
32:2006977785f5 | 47 | |
annesteenbeek | 0:525558a26464 | 48 | while (true) { |
annesteenbeek | 115:d8d2968981f3 | 49 | if(cal_go){ |
annesteenbeek | 115:d8d2968981f3 | 50 | cal_go=false; |
annesteenbeek | 115:d8d2968981f3 | 51 | calReady = calibrateMotors(); |
annesteenbeek | 115:d8d2968981f3 | 52 | } |
annesteenbeek | 115:d8d2968981f3 | 53 | |
annesteenbeek | 115:d8d2968981f3 | 54 | if(calReady && !tickersActivated){ // when done with calibration, start tickers |
annesteenbeek | 115:d8d2968981f3 | 55 | tickerAttach(); |
annesteenbeek | 115:d8d2968981f3 | 56 | tickersActivated = true; |
annesteenbeek | 115:d8d2968981f3 | 57 | } |
annesteenbeek | 115:d8d2968981f3 | 58 | |
annesteenbeek | 78:0cc7c64ba94c | 59 | if(emg_go){ |
annesteenbeek | 78:0cc7c64ba94c | 60 | emg_go=false; |
annesteenbeek | 78:0cc7c64ba94c | 61 | readEMG(); |
annesteenbeek | 78:0cc7c64ba94c | 62 | } |
annesteenbeek | 98:25528494287d | 63 | if(mode==0){ // wait until EMG is done with calibration |
annesteenbeek | 98:25528494287d | 64 | if(safety_go){ |
annesteenbeek | 98:25528494287d | 65 | safety_go=false; |
annesteenbeek | 98:25528494287d | 66 | safety(); |
annesteenbeek | 98:25528494287d | 67 | } |
annesteenbeek | 98:25528494287d | 68 | if(emg_go){ |
annesteenbeek | 98:25528494287d | 69 | emg_go=false; |
annesteenbeek | 98:25528494287d | 70 | readEMG(); |
annesteenbeek | 98:25528494287d | 71 | } |
annesteenbeek | 98:25528494287d | 72 | if(switches_go){ |
annesteenbeek | 98:25528494287d | 73 | switches_go=false; |
annesteenbeek | 98:25528494287d | 74 | checkSwitches(); |
annesteenbeek | 98:25528494287d | 75 | } |
annesteenbeek | 98:25528494287d | 76 | if(debug_go){ |
annesteenbeek | 98:25528494287d | 77 | debug_go=false; |
annesteenbeek | 98:25528494287d | 78 | debugProcess(); |
annesteenbeek | 98:25528494287d | 79 | } |
annesteenbeek | 98:25528494287d | 80 | if(motor_go){ |
annesteenbeek | 98:25528494287d | 81 | motor_go=false; |
annesteenbeek | 98:25528494287d | 82 | motorControl(); |
annesteenbeek | 98:25528494287d | 83 | } |
annesteenbeek | 30:a20f16bf8dda | 84 | } |
annesteenbeek | 0:525558a26464 | 85 | } |
annesteenbeek | 0:525558a26464 | 86 | } |