Leon Klute / Mbed 2 deprecated EMG_Controller_6

Dependencies:   HIDScope QEI biquadFilter mbed

Fork of EMG_Controller_5 by Nahuel Manterola

Committer:
pbaardwijk
Date:
Tue Oct 25 12:07:53 2016 +0000
Revision:
6:6cb7c0247560
Parent:
5:bb77e2a6c1e8
Child:
7:eed677b636d3
Latest version with a few fixes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NahuelM 4:e59a99c5aa08 1 #include "mbed.h"
NahuelM 4:e59a99c5aa08 2
NahuelM 4:e59a99c5aa08 3 Serial pc(USBTX,USBRX);
NahuelM 4:e59a99c5aa08 4
pbaardwijk 6:6cb7c0247560 5 PwmOut ServoPWMpin(D9);
NahuelM 4:e59a99c5aa08 6 Ticker servoTick;
NahuelM 4:e59a99c5aa08 7 float i = 0;
NahuelM 4:e59a99c5aa08 8 char Key;
NahuelM 4:e59a99c5aa08 9 double ServoAngle = 89 ;
NahuelM 4:e59a99c5aa08 10 float Pulsew = 0.0015;
NahuelM 4:e59a99c5aa08 11 const float Frequency = 10;
LeeJon 5:bb77e2a6c1e8 12 //double input_signal = 0;
NahuelM 4:e59a99c5aa08 13 double cali_min = 0;
NahuelM 4:e59a99c5aa08 14 double cali_max = 1;
pbaardwijk 6:6cb7c0247560 15 double treshold = 0.3;
NahuelM 4:e59a99c5aa08 16 float treshold_multiplier = 0.5;
NahuelM 4:e59a99c5aa08 17 bool binary_input_signal = 0;
NahuelM 4:e59a99c5aa08 18 bool binary_input_signal_previous = 0;
NahuelM 4:e59a99c5aa08 19
LeeJon 5:bb77e2a6c1e8 20 void control_servo(double input_signal){
pbaardwijk 6:6cb7c0247560 21 pc.printf("/n/r %f", input_signal);
NahuelM 4:e59a99c5aa08 22 if (input_signal > treshold){ // convert the emg to a zero or a one
NahuelM 4:e59a99c5aa08 23 binary_input_signal = 1;
NahuelM 4:e59a99c5aa08 24 } else {
NahuelM 4:e59a99c5aa08 25 binary_input_signal = 0;
NahuelM 4:e59a99c5aa08 26 }
NahuelM 4:e59a99c5aa08 27 if(( binary_input_signal!= binary_input_signal_previous)&& binary_input_signal){
NahuelM 4:e59a99c5aa08 28 if( ServoAngle < 45){ // check wether it is more opened or closed
NahuelM 4:e59a99c5aa08 29 ServoAngle = 89; // open
NahuelM 4:e59a99c5aa08 30 }
NahuelM 4:e59a99c5aa08 31 else{
NahuelM 4:e59a99c5aa08 32 ServoAngle = 1; // close
NahuelM 4:e59a99c5aa08 33 }
NahuelM 4:e59a99c5aa08 34 }
NahuelM 4:e59a99c5aa08 35 Pulsew = 0.0015+(ServoAngle)/180000; // calculate the pulsewidth in the range 1 to 2 milliseconds
NahuelM 4:e59a99c5aa08 36 ServoPWMpin.pulsewidth(Pulsew); // write the pulsewidth
NahuelM 4:e59a99c5aa08 37 pc.printf("\n\r Pulsew is %f",Pulsew);
NahuelM 4:e59a99c5aa08 38
NahuelM 4:e59a99c5aa08 39 binary_input_signal_previous = binary_input_signal;
NahuelM 4:e59a99c5aa08 40 }
NahuelM 4:e59a99c5aa08 41 /*
NahuelM 4:e59a99c5aa08 42 int main(){
NahuelM 4:e59a99c5aa08 43 pc.printf("\n\r ----------------------------------------\n\r --------------- START -----------------\n\r ----------------------------------------");
NahuelM 4:e59a99c5aa08 44 treshold = (cali_max-cali_min)*treshold_multiplier;
NahuelM 4:e59a99c5aa08 45 servoTick.attach(&control_servo, 1/Frequency);
NahuelM 4:e59a99c5aa08 46 ServoPWMpin.period(0.01f); // 0.01 second period
NahuelM 4:e59a99c5aa08 47
NahuelM 4:e59a99c5aa08 48 while (true) {
NahuelM 4:e59a99c5aa08 49 Key = pc.getc(); // get the pressed key
NahuelM 4:e59a99c5aa08 50 switch(Key) { //Check to see which key pressed
NahuelM 4:e59a99c5aa08 51 case 0x2B: //It was the + key...
NahuelM 4:e59a99c5aa08 52 pc.printf("\n\r +!");
NahuelM 4:e59a99c5aa08 53 if( ServoAngle < 80){
NahuelM 4:e59a99c5aa08 54 ServoAngle = ServoAngle+10; // increase the angle
NahuelM 4:e59a99c5aa08 55 }
NahuelM 4:e59a99c5aa08 56 break;
NahuelM 4:e59a99c5aa08 57 case 0x2D: //It was the - Key key...
NahuelM 4:e59a99c5aa08 58 pc.printf("\n\r -!");
NahuelM 4:e59a99c5aa08 59 if( ServoAngle > 10){
NahuelM 4:e59a99c5aa08 60 ServoAngle = ServoAngle-10; // decrease the angle
NahuelM 4:e59a99c5aa08 61 }
NahuelM 4:e59a99c5aa08 62 break;
NahuelM 4:e59a99c5aa08 63 case 0x20: //It was the Spacebar key...
NahuelM 4:e59a99c5aa08 64 pc.printf("\n\r SPACE!");
NahuelM 4:e59a99c5aa08 65 if( ServoAngle < 45){ // Switch from open to closed or else otherwise
NahuelM 4:e59a99c5aa08 66 ServoAngle = 89; // open/close
NahuelM 4:e59a99c5aa08 67 }
NahuelM 4:e59a99c5aa08 68 else{
NahuelM 4:e59a99c5aa08 69 ServoAngle = 1; // open/close
NahuelM 4:e59a99c5aa08 70 }
NahuelM 4:e59a99c5aa08 71 break;
NahuelM 4:e59a99c5aa08 72 }
NahuelM 4:e59a99c5aa08 73
NahuelM 4:e59a99c5aa08 74 }
NahuelM 4:e59a99c5aa08 75 }
NahuelM 4:e59a99c5aa08 76 */