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:
Fri Oct 23 12:17:29 2015 +0000
Revision:
104:750d7e13137d
Parent:
99:7030e9790b1d
Child:
105:663b73bb2f81
Debugging copy: DO NOT USE FOR WORKING!!

Who changed what in which revision?

UserRevisionLine numberNew 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
bjornnijhuis 104:750d7e13137d 17 Ticker switchesTick, debugTick, motorTick, EMGTick, safetyTick, servoTick;
bjornnijhuis 104:750d7e13137d 18 volatile bool switches_go=false, debug_go=false, motor_go=false, emg_go=false, safety_go=false, servo_go=false;
annesteenbeek 0:525558a26464 19
annesteenbeek 30:a20f16bf8dda 20 void switches_activate(){switches_go=true;};
annesteenbeek 30:a20f16bf8dda 21 void debug_activate(){debug_go=true;};
annesteenbeek 30:a20f16bf8dda 22 void motor_activate(){motor_go=true;};
annesteenbeek 60:20945383ad1b 23 void emg_activate(){emg_go=true;};
annesteenbeek 79:cf500b63f349 24 void safety_activate(){safety_go=true;};
bjornnijhuis 104:750d7e13137d 25 void servo_activate(){servo_go=true;};
annesteenbeek 59:fe00be2cf8fd 26
bjornnijhuis 104:750d7e13137d 27 const double emgCall = 0.005; // Set EMG sampling period
bjornnijhuis 104:750d7e13137d 28 const double motorCall = 0.005; // Set motor control period global so it can be used for speed.
bjornnijhuis 104:750d7e13137d 29 const double servoCall = 0.025; // Set servo control speed
bjornnijhuis 104:750d7e13137d 30 const int sample = 0; // Constant for mode switching for program readability
bjornnijhuis 104:750d7e13137d 31 const int normalize = 1; // Constant for mode switching for program readability
bjornnijhuis 104:750d7e13137d 32 bool mode = sample; // Set program mode
bjornnijhuis 104:750d7e13137d 33
annesteenbeek 29:e4f3455aaa0b 34
annesteenbeek 98:25528494287d 35 int main(){
bjornnijhuis 104:750d7e13137d 36 wait_ms(2000);
bjornnijhuis 104:750d7e13137d 37 motorsEnable = true;
bjornnijhuis 104:750d7e13137d 38 //motorInit();
annesteenbeek 99:7030e9790b1d 39 // calibrateMotors(); // start motor calibration
bjornnijhuis 104:750d7e13137d 40 blueLed.write(1),redLed.write(1),greenLed.write(1);
bjornnijhuis 104:750d7e13137d 41 servo.pulsewidth(0.0015); // Set servo to zero position
bjornnijhuis 104:750d7e13137d 42
bjornnijhuis 104:750d7e13137d 43 //EMGTick.attach(&emg_activate, emgCall);
bjornnijhuis 104:750d7e13137d 44 //switchesTick.attach(&switches_activate, 0.02f);
bjornnijhuis 104:750d7e13137d 45 //debugTick.attach(&debug_activate, 0.03f);
annesteenbeek 98:25528494287d 46 motorTick.attach(&motor_activate, motorCall);
bjornnijhuis 104:750d7e13137d 47 servoTick.attach(&servo_activate, servoCall);
annesteenbeek 98:25528494287d 48 safetyTick.attach(&safety_activate, 0.001f);
annesteenbeek 32:2006977785f5 49
annesteenbeek 0:525558a26464 50 while (true) {
annesteenbeek 78:0cc7c64ba94c 51 if(emg_go){
annesteenbeek 78:0cc7c64ba94c 52 emg_go=false;
annesteenbeek 78:0cc7c64ba94c 53 readEMG();
annesteenbeek 78:0cc7c64ba94c 54 }
annesteenbeek 98:25528494287d 55 if(mode==0){ // wait until EMG is done with calibration
annesteenbeek 98:25528494287d 56 if(safety_go){
annesteenbeek 98:25528494287d 57 safety_go=false;
annesteenbeek 98:25528494287d 58 safety();
annesteenbeek 98:25528494287d 59 }
annesteenbeek 98:25528494287d 60 if(emg_go){
annesteenbeek 98:25528494287d 61 emg_go=false;
annesteenbeek 98:25528494287d 62 readEMG();
annesteenbeek 98:25528494287d 63 }
bjornnijhuis 104:750d7e13137d 64 if(motor_go){
bjornnijhuis 104:750d7e13137d 65 motor_go=false;
bjornnijhuis 104:750d7e13137d 66 motorControl();
bjornnijhuis 104:750d7e13137d 67 }
bjornnijhuis 104:750d7e13137d 68 if(servo_go){
bjornnijhuis 104:750d7e13137d 69 servo_go=false;
bjornnijhuis 104:750d7e13137d 70 servoControl();
bjornnijhuis 104:750d7e13137d 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 30:a20f16bf8dda 80 }
annesteenbeek 0:525558a26464 81 }
annesteenbeek 0:525558a26464 82 }