Leon Klute / Mbed 2 deprecated EMG_Controller_6

Dependencies:   HIDScope QEI biquadFilter mbed

Fork of EMG_Controller_5 by Nahuel Manterola

Committer:
NahuelM
Date:
Tue Oct 25 10:36:50 2016 +0000
Revision:
4:e59a99c5aa08
Child:
5:bb77e2a6c1e8
Servo controller ge?mplementeert;

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