Leon Klute / Mbed 2 deprecated frdm_servo_controller

Dependencies:   mbed

Committer:
LeeJon
Date:
Tue Oct 25 10:28:15 2016 +0000
Revision:
5:d62cebed51d2
Parent:
4:f1782bdd08a8
klaar voor samenvoegen

Who changed what in which revision?

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