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:
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?

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
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 }