Overzetten

Dependencies:   HIDScope MODSERIAL mbed

Committer:
ThomBMT
Date:
Mon Oct 08 10:48:52 2018 +0000
Revision:
6:bbef54156775
Parent:
5:0ae4951e9b81
Child:
7:d57eba2aed38
First attemps at reading out the EMG data and operating the motors using this

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 6:bbef54156775 21
ThomBMT 6:bbef54156775 22 void sample()
ThomBMT 6:bbef54156775 23 {
ThomBMT 6:bbef54156775 24
ThomBMT 6:bbef54156775 25 scope.set(0, emg0.read() );
ThomBMT 6:bbef54156775 26 scope.set(1, emg1.read() );
ThomBMT 6:bbef54156775 27
ThomBMT 6:bbef54156775 28 scope.send();
ThomBMT 6:bbef54156775 29 led = !led;
ThomBMT 6:bbef54156775 30 }
ThomBMT 0:877f950fdfb5 31
ThomBMT 4:a1691164d879 32 int Turn_Motor1()
ThomBMT 0:877f950fdfb5 33 {
ThomBMT 5:0ae4951e9b81 34 if(!Knop1 && !Knop3 == true) // Motor 1 rotates CW
ThomBMT 0:877f950fdfb5 35 {
ThomBMT 5:0ae4951e9b81 36 PwmPin1 = fabs(0.0);
ThomBMT 0:877f950fdfb5 37 }
ThomBMT 0:877f950fdfb5 38
ThomBMT 5:0ae4951e9b81 39 else if (Knop1==false) // Motor 1 rotates CW
ThomBMT 5:0ae4951e9b81 40 {
ThomBMT 5:0ae4951e9b81 41 float u = 0.8f; //determine useful value, this is not final
ThomBMT 5:0ae4951e9b81 42 DirectionPin1 = u > 0.0f; //either true or false
ThomBMT 5:0ae4951e9b81 43 // True = CW, for False = CW
ThomBMT 5:0ae4951e9b81 44 PwmPin1 = fabs(u);
ThomBMT 5:0ae4951e9b81 45 PwmPin2 = fabs(0.0);
ThomBMT 5:0ae4951e9b81 46 }
ThomBMT 5:0ae4951e9b81 47
ThomBMT 6:bbef54156775 48 else if (Knop3==false)// We see that Motor2 keeps rotating if we leave out the "else" statement, somehow the signal leaks
ThomBMT 6:bbef54156775 49 {
ThomBMT 6:bbef54156775 50 float u = 0.8f;
ThomBMT 6:bbef54156775 51 DirectionPin1 = u < 0.0f;
ThomBMT 6:bbef54156775 52 PwmPin1 = fabs(u);
ThomBMT 6:bbef54156775 53 PwmPin2 = fabs(0.0);
ThomBMT 6:bbef54156775 54 }
ThomBMT 6:bbef54156775 55 /*
ThomBMT 6:bbef54156775 56 else if (Biceps_Rechts > )
ThomBMT 6:bbef54156775 57 {
ThomBMT 6:bbef54156775 58 float u = 0.8f; //determine useful value, this is not final
ThomBMT 6:bbef54156775 59 DirectionPin1 = u > 0.0f; //either true or false
ThomBMT 6:bbef54156775 60 // True = CW, for False = CW
ThomBMT 6:bbef54156775 61 PwmPin1 = fabs(u);
ThomBMT 6:bbef54156775 62 PwmPin2 = fabs(0.0);
ThomBMT 6:bbef54156775 63 }
ThomBMT 6:bbef54156775 64 */
ThomBMT 4:a1691164d879 65 else
ThomBMT 4:a1691164d879 66 {
ThomBMT 4:a1691164d879 67 float u = 0.0f;
ThomBMT 4:a1691164d879 68 PwmPin1 = fabs(u);
ThomBMT 4:a1691164d879 69 }
ThomBMT 4:a1691164d879 70 return 0;
ThomBMT 4:a1691164d879 71 }
ThomBMT 4:a1691164d879 72
ThomBMT 4:a1691164d879 73 int Turn_Motor2()
ThomBMT 4:a1691164d879 74 {
ThomBMT 5:0ae4951e9b81 75 if (!Knop2 && !Knop4 == true)
ThomBMT 4:a1691164d879 76 {
ThomBMT 5:0ae4951e9b81 77 PwmPin2 = fabs(0.0);
ThomBMT 4:a1691164d879 78 }
ThomBMT 4:a1691164d879 79
ThomBMT 6:bbef54156775 80 else if (Knop2==false)
ThomBMT 6:bbef54156775 81 {
ThomBMT 6:bbef54156775 82 float u = 0.8f;
ThomBMT 6:bbef54156775 83 DirectionPin2 = u < 0.0f;
ThomBMT 6:bbef54156775 84 PwmPin1 = fabs(0.0);
ThomBMT 6:bbef54156775 85 PwmPin2 = fabs(u);
ThomBMT 6:bbef54156775 86 }
ThomBMT 6:bbef54156775 87
ThomBMT 0:877f950fdfb5 88 else if (Knop4==false)
ThomBMT 0:877f950fdfb5 89 {
ThomBMT 0:877f950fdfb5 90 float u = 0.8f;
ThomBMT 0:877f950fdfb5 91 DirectionPin2 = u > 0.0f;
ThomBMT 0:877f950fdfb5 92 PwmPin1 = fabs(0.0);
ThomBMT 0:877f950fdfb5 93 PwmPin2 = fabs(u);
ThomBMT 0:877f950fdfb5 94
ThomBMT 0:877f950fdfb5 95 }
ThomBMT 0:877f950fdfb5 96
ThomBMT 0:877f950fdfb5 97 else
ThomBMT 0:877f950fdfb5 98 {
ThomBMT 0:877f950fdfb5 99 float u = 0.0f;
ThomBMT 4:a1691164d879 100 PwmPin2 = fabs(u);
ThomBMT 0:877f950fdfb5 101 }
ThomBMT 4:a1691164d879 102 return 0;
ThomBMT 4:a1691164d879 103 }
ThomBMT 5:0ae4951e9b81 104
ThomBMT 4:a1691164d879 105 int main()
ThomBMT 4:a1691164d879 106 {
ThomBMT 4:a1691164d879 107
ThomBMT 4:a1691164d879 108 pc.baud(115200);
ThomBMT 5:0ae4951e9b81 109 sample_timer.attach(&sample, 0.002);
ThomBMT 4:a1691164d879 110 PwmPin1.period_us(120); //60 microseconds pwm period, 16.7 kHz
ThomBMT 6:bbef54156775 111 /*
ThomBMT 6:bbef54156775 112 for(;;)
ThomBMT 6:bbef54156775 113 {
ThomBMT 6:bbef54156775 114 double Biceps_Rechts = emg1.read();
ThomBMT 6:bbef54156775 115 double Biceps_1 = emg0.read();
ThomBMT 6:bbef54156775 116 pc.printf("%d en %d ", Biceps_Rechts, Biceps_1);
ThomBMT 6:bbef54156775 117 wait(0.8);
ThomBMT 6:bbef54156775 118 }
ThomBMT 6:bbef54156775 119 */
ThomBMT 4:a1691164d879 120 for(;;)
ThomBMT 4:a1691164d879 121 {
ThomBMT 4:a1691164d879 122 Turn_Motor1();
ThomBMT 4:a1691164d879 123 Turn_Motor2();
ThomBMT 0:877f950fdfb5 124 }
ThomBMT 0:877f950fdfb5 125 }