Overzetten

Dependencies:   HIDScope MODSERIAL mbed

Committer:
ThomBMT
Date:
Mon Oct 08 08:25:44 2018 +0000
Revision:
5:0ae4951e9b81
Parent:
4:a1691164d879
Child:
6:bbef54156775
We now have a terminating statement when both the button for CW and CCW rotation are pressed together. The motor now stops rotating after this event

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