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

Dependencies:   Encoder mbed HIDScope Servo MODSERIAL

Fork of chessRobot by a steenbeek

Committer:
annesteenbeek
Date:
Wed Oct 21 12:09:45 2015 +0000
Revision:
95:94f02d01ebdf
Parent:
92:12e2e57e900a
Merge;

Who changed what in which revision?

UserRevisionLine numberNew 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
annesteenbeek 95:94f02d01ebdf 26 void switches_activate(){switches_go=true;};
annesteenbeek 95:94f02d01ebdf 27 void debug_activate(){debug_go=true;};
annesteenbeek 95:94f02d01ebdf 28 void motor_activate(){motor_go=true;};
annesteenbeek 95:94f02d01ebdf 29 void emg_activate(){emg_go=true;};
annesteenbeek 95:94f02d01ebdf 30 void safety_activate(){safety_go=true;};
annesteenbeek 29:e4f3455aaa0b 31
bjornnijhuis 92:12e2e57e900a 32 double motorCall = 0.005; // set motor frequency global so it can be used for speed.
bjornnijhuis 92:12e2e57e900a 33 int main()
bjornnijhuis 92:12e2e57e900a 34 {
bjornnijhuis 92:12e2e57e900a 35 DigitalIn startButton(startPin);
bjornnijhuis 92:12e2e57e900a 36 while(start == false) {
bjornnijhuis 92:12e2e57e900a 37 if(startButton.read()==0) {
bjornnijhuis 92:12e2e57e900a 38 start=true;
annesteenbeek 30:a20f16bf8dda 39 }
annesteenbeek 0:525558a26464 40 }
bjornnijhuis 92:12e2e57e900a 41 while (start == true) {
bjornnijhuis 92:12e2e57e900a 42 motorInit();
annesteenbeek 95:94f02d01ebdf 43 calibrateMotors(); // start calibration procedure
annesteenbeek 95:94f02d01ebdf 44
bjornnijhuis 92:12e2e57e900a 45 EMGTick.attach(&emg_activate, 0.005f);
bjornnijhuis 92:12e2e57e900a 46 switchesTick.attach(&switches_activate, 0.02f);
bjornnijhuis 92:12e2e57e900a 47 debugTick.attach(&debug_activate, 0.03f);
bjornnijhuis 92:12e2e57e900a 48 motorTick.attach(&motor_activate, motorCall);
bjornnijhuis 92:12e2e57e900a 49 safetyTick.attach(&safety_activate, 0.001f);
bjornnijhuis 92:12e2e57e900a 50
bjornnijhuis 92:12e2e57e900a 51 while (emg_mode == normalize) {
bjornnijhuis 92:12e2e57e900a 52 if(emg_go) {
bjornnijhuis 92:12e2e57e900a 53 emg_go=false;
bjornnijhuis 92:12e2e57e900a 54 readEMG();
bjornnijhuis 92:12e2e57e900a 55 }
bjornnijhuis 92:12e2e57e900a 56 }
bjornnijhuis 92:12e2e57e900a 57 while (true) {
bjornnijhuis 92:12e2e57e900a 58 if(safety_go) {
bjornnijhuis 92:12e2e57e900a 59 safety_go=false;
bjornnijhuis 92:12e2e57e900a 60 safety();
bjornnijhuis 92:12e2e57e900a 61 }
bjornnijhuis 92:12e2e57e900a 62 if(emg_go) {
bjornnijhuis 92:12e2e57e900a 63 emg_go=false;
bjornnijhuis 92:12e2e57e900a 64 readEMG();
bjornnijhuis 92:12e2e57e900a 65 }
bjornnijhuis 92:12e2e57e900a 66 if(switches_go) {
bjornnijhuis 92:12e2e57e900a 67 switches_go=false;
bjornnijhuis 92:12e2e57e900a 68 checkSwitches();
bjornnijhuis 92:12e2e57e900a 69 }
bjornnijhuis 92:12e2e57e900a 70 if(debug_go) {
bjornnijhuis 92:12e2e57e900a 71 debug_go=false;
bjornnijhuis 92:12e2e57e900a 72 debugProcess();
bjornnijhuis 92:12e2e57e900a 73 }
bjornnijhuis 92:12e2e57e900a 74 if(motor_go) {
bjornnijhuis 92:12e2e57e900a 75 motor_go=false;
bjornnijhuis 92:12e2e57e900a 76 motorControl();
bjornnijhuis 92:12e2e57e900a 77 // servoControl();
bjornnijhuis 92:12e2e57e900a 78 }
bjornnijhuis 92:12e2e57e900a 79 }
bjornnijhuis 92:12e2e57e900a 80 }
annesteenbeek 0:525558a26464 81 }