Overzetten

Dependencies:   HIDScope MODSERIAL mbed

Committer:
ThomBMT
Date:
Mon Oct 08 13:18:17 2018 +0000
Revision:
7:d57eba2aed38
Parent:
6:bbef54156775
Child:
8:81f2c8ae4427
Tried to include emg operator. We can sort of read out the EMG values but only for a few itterations. Probably fixed by a ticker

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ThomBMT 0:877f950fdfb5 1 #include "mbed.h"
ThomBMT 0:877f950fdfb5 2 #include "MODSERIAL.h"
ThomBMT 0:877f950fdfb5 3 #include "HIDScope.h"
ThomBMT 0:877f950fdfb5 4 MODSERIAL pc(USBTX, USBRX);
ThomBMT 0:877f950fdfb5 5
ThomBMT 0:877f950fdfb5 6 DigitalOut DirectionPin1(D4);
ThomBMT 0:877f950fdfb5 7 PwmOut PwmPin1(D5);
ThomBMT 0:877f950fdfb5 8 DigitalOut DirectionPin2(D7);
ThomBMT 0:877f950fdfb5 9 PwmOut PwmPin2(D6);
ThomBMT 0:877f950fdfb5 10 DigitalIn Knop1(D3);
ThomBMT 0:877f950fdfb5 11 DigitalIn Knop2(D2);
ThomBMT 0:877f950fdfb5 12 DigitalIn Knop3(PTA4);
ThomBMT 0:877f950fdfb5 13 DigitalIn Knop4(PTC6);
ThomBMT 6:bbef54156775 14 AnalogIn emg0( A0 );
ThomBMT 6:bbef54156775 15 AnalogIn emg1( A1 );
ThomBMT 6:bbef54156775 16
ThomBMT 6:bbef54156775 17 Ticker sample_timer;
ThomBMT 6:bbef54156775 18 HIDScope scope( 2 );
ThomBMT 6:bbef54156775 19 DigitalOut led(LED1);
ThomBMT 6:bbef54156775 20
ThomBMT 7:d57eba2aed38 21 volatile float Bicep_Right = 0.0;
ThomBMT 7:d57eba2aed38 22
ThomBMT 7:d57eba2aed38 23 void EMG_Read()
ThomBMT 7:d57eba2aed38 24 {
ThomBMT 7:d57eba2aed38 25 Bicep_Right = emg0.read();
ThomBMT 7:d57eba2aed38 26 pc.printf("%f ", Bicep_Right);
ThomBMT 7:d57eba2aed38 27 }
ThomBMT 6:bbef54156775 28
ThomBMT 6:bbef54156775 29 void sample()
ThomBMT 6:bbef54156775 30 {
ThomBMT 6:bbef54156775 31
ThomBMT 6:bbef54156775 32 scope.set(0, emg0.read() );
ThomBMT 6:bbef54156775 33 scope.set(1, emg1.read() );
ThomBMT 6:bbef54156775 34
ThomBMT 6:bbef54156775 35 scope.send();
ThomBMT 6:bbef54156775 36 led = !led;
ThomBMT 6:bbef54156775 37 }
ThomBMT 0:877f950fdfb5 38
ThomBMT 4:a1691164d879 39 int Turn_Motor1()
ThomBMT 7:d57eba2aed38 40 {
ThomBMT 7:d57eba2aed38 41
ThomBMT 7:d57eba2aed38 42
ThomBMT 5:0ae4951e9b81 43 if(!Knop1 && !Knop3 == true) // Motor 1 rotates CW
ThomBMT 0:877f950fdfb5 44 {
ThomBMT 5:0ae4951e9b81 45 PwmPin1 = fabs(0.0);
ThomBMT 0:877f950fdfb5 46 }
ThomBMT 0:877f950fdfb5 47
ThomBMT 5:0ae4951e9b81 48 else if (Knop1==false) // Motor 1 rotates CW
ThomBMT 5:0ae4951e9b81 49 {
ThomBMT 5:0ae4951e9b81 50 float u = 0.8f; //determine useful value, this is not final
ThomBMT 5:0ae4951e9b81 51 DirectionPin1 = u > 0.0f; //either true or false
ThomBMT 5:0ae4951e9b81 52 // True = CW, for False = CW
ThomBMT 5:0ae4951e9b81 53 PwmPin1 = fabs(u);
ThomBMT 5:0ae4951e9b81 54 PwmPin2 = fabs(0.0);
ThomBMT 5:0ae4951e9b81 55 }
ThomBMT 5:0ae4951e9b81 56
ThomBMT 6:bbef54156775 57 else if (Knop3==false)// We see that Motor2 keeps rotating if we leave out the "else" statement, somehow the signal leaks
ThomBMT 6:bbef54156775 58 {
ThomBMT 6:bbef54156775 59 float u = 0.8f;
ThomBMT 6:bbef54156775 60 DirectionPin1 = u < 0.0f;
ThomBMT 6:bbef54156775 61 PwmPin1 = fabs(u);
ThomBMT 6:bbef54156775 62 PwmPin2 = fabs(0.0);
ThomBMT 6:bbef54156775 63 }
ThomBMT 7:d57eba2aed38 64
ThomBMT 7:d57eba2aed38 65 else if (Bicep_Right > 0.7f)
ThomBMT 6:bbef54156775 66 {
ThomBMT 6:bbef54156775 67 float u = 0.8f; //determine useful value, this is not final
ThomBMT 6:bbef54156775 68 DirectionPin1 = u > 0.0f; //either true or false
ThomBMT 6:bbef54156775 69 // True = CW, for False = CW
ThomBMT 6:bbef54156775 70 PwmPin1 = fabs(u);
ThomBMT 6:bbef54156775 71 PwmPin2 = fabs(0.0);
ThomBMT 6:bbef54156775 72 }
ThomBMT 7:d57eba2aed38 73
ThomBMT 4:a1691164d879 74 else
ThomBMT 4:a1691164d879 75 {
ThomBMT 4:a1691164d879 76 float u = 0.0f;
ThomBMT 4:a1691164d879 77 PwmPin1 = fabs(u);
ThomBMT 4:a1691164d879 78 }
ThomBMT 4:a1691164d879 79 return 0;
ThomBMT 4:a1691164d879 80 }
ThomBMT 4:a1691164d879 81
ThomBMT 4:a1691164d879 82 int Turn_Motor2()
ThomBMT 4:a1691164d879 83 {
ThomBMT 5:0ae4951e9b81 84 if (!Knop2 && !Knop4 == true)
ThomBMT 4:a1691164d879 85 {
ThomBMT 5:0ae4951e9b81 86 PwmPin2 = fabs(0.0);
ThomBMT 4:a1691164d879 87 }
ThomBMT 4:a1691164d879 88
ThomBMT 6:bbef54156775 89 else if (Knop2==false)
ThomBMT 6:bbef54156775 90 {
ThomBMT 6:bbef54156775 91 float u = 0.8f;
ThomBMT 6:bbef54156775 92 DirectionPin2 = u < 0.0f;
ThomBMT 6:bbef54156775 93 PwmPin1 = fabs(0.0);
ThomBMT 6:bbef54156775 94 PwmPin2 = fabs(u);
ThomBMT 6:bbef54156775 95 }
ThomBMT 6:bbef54156775 96
ThomBMT 0:877f950fdfb5 97 else if (Knop4==false)
ThomBMT 0:877f950fdfb5 98 {
ThomBMT 0:877f950fdfb5 99 float u = 0.8f;
ThomBMT 0:877f950fdfb5 100 DirectionPin2 = u > 0.0f;
ThomBMT 0:877f950fdfb5 101 PwmPin1 = fabs(0.0);
ThomBMT 0:877f950fdfb5 102 PwmPin2 = fabs(u);
ThomBMT 0:877f950fdfb5 103
ThomBMT 0:877f950fdfb5 104 }
ThomBMT 0:877f950fdfb5 105
ThomBMT 0:877f950fdfb5 106 else
ThomBMT 0:877f950fdfb5 107 {
ThomBMT 0:877f950fdfb5 108 float u = 0.0f;
ThomBMT 4:a1691164d879 109 PwmPin2 = fabs(u);
ThomBMT 0:877f950fdfb5 110 }
ThomBMT 4:a1691164d879 111 return 0;
ThomBMT 4:a1691164d879 112 }
ThomBMT 5:0ae4951e9b81 113
ThomBMT 7:d57eba2aed38 114 int main()//Ticker toevoegen
ThomBMT 4:a1691164d879 115 {
ThomBMT 4:a1691164d879 116 pc.baud(115200);
ThomBMT 5:0ae4951e9b81 117 sample_timer.attach(&sample, 0.002);
ThomBMT 4:a1691164d879 118 PwmPin1.period_us(120); //60 microseconds pwm period, 16.7 kHz
ThomBMT 7:d57eba2aed38 119
ThomBMT 7:d57eba2aed38 120 while(true)
ThomBMT 6:bbef54156775 121 {
ThomBMT 7:d57eba2aed38 122 EMG_Read();
ThomBMT 4:a1691164d879 123 Turn_Motor1();
ThomBMT 7:d57eba2aed38 124 Turn_Motor2();
ThomBMT 7:d57eba2aed38 125 pc.printf("%f ", Bicep_Right);
ThomBMT 0:877f950fdfb5 126 }
ThomBMT 0:877f950fdfb5 127 }