EMG check. met knopjes en toetsenboard emg signalen simuleren om de code te testen. groepje 12

Dependencies:   MODSERIAL QEI mbed

Fork of EMG_check by sibren vuurberg

Committer:
sivuu
Date:
Tue Oct 11 14:09:58 2016 +0000
Revision:
16:135908f85971
Parent:
15:706e18b43dd6
Child:
17:f44f41cab151
goede script met werkende encoders!!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sivuu 12:7903c0e55cd7 1 #include "mbed.h" //standaard bieb mbed
sivuu 12:7903c0e55cd7 2 #include "QEI.h" //bieb voor encoderfuncties in c++
sivuu 12:7903c0e55cd7 3 #include "MODSERIAL.h" //bieb voor modserial
sivuu 2:4dcdf7755a04 4 InterruptIn sw3(SW3);
sivuu 12:7903c0e55cd7 5 DigitalIn encoder1A(D13);
sivuu 12:7903c0e55cd7 6 DigitalIn encoder1B(D12);
sivuu 12:7903c0e55cd7 7 DigitalIn button_cw(D11);
sivuu 14:4b934ac37656 8 DigitalIn encoder2A(D15);
sivuu 14:4b934ac37656 9 DigitalIn encoder2B(D14);
sivuu 12:7903c0e55cd7 10 DigitalIn button_ccw(D9);
sivuu 12:7903c0e55cd7 11 DigitalOut ledcw(D10);
sivuu 12:7903c0e55cd7 12 DigitalOut ledccw(D2);
sivuu 12:7903c0e55cd7 13 MODSERIAL pc(USBTX, USBRX);
sivuu 12:7903c0e55cd7 14 DigitalOut richting_motor1(D4);
sivuu 4:2b3fbd7ef1cf 15 PwmOut pwm_motor1(D5);
sivuu 12:7903c0e55cd7 16 DigitalOut richting_motor2(D7);
sivuu 4:2b3fbd7ef1cf 17 PwmOut pwm_motor2(D6);
sivuu 14:4b934ac37656 18
sivuu 14:4b934ac37656 19
sivuu 14:4b934ac37656 20
sivuu 12:7903c0e55cd7 21 int n = 0; //start van de teller wordt op nul gesteld
sivuu 2:4dcdf7755a04 22
sivuu 3:34f7c16a6a7f 23 void SwitchN() { // maakt simpele functie die 1 bij n optelt
sivuu 2:4dcdf7755a04 24 n++;
sivuu 2:4dcdf7755a04 25 }
sivuu 12:7903c0e55cd7 26
sivuu 14:4b934ac37656 27 //constanten voor de encoder
sivuu 14:4b934ac37656 28 const int CW = 2.5; //definitie rechtsom 'lage waarde'
sivuu 14:4b934ac37656 29 const int CCW =0; //definitie linksom 'hoge waarde'
sivuu 14:4b934ac37656 30 const float gearboxratio=131; // gearboxratio van encoder naar motor
sivuu 14:4b934ac37656 31 const int rev_rond=32; // aantal revoluties per omgang van de encoder
sivuu 14:4b934ac37656 32
sivuu 2:4dcdf7755a04 33
sivuu 0:b7cb5d3978b5 34 int main()
sivuu 0:b7cb5d3978b5 35 {
sivuu 12:7903c0e55cd7 36 pc.baud(115200); // zorgt voor de link voor putty, 115200 is snelheid
sivuu 15:706e18b43dd6 37 QEI Encoder1(D12,D13, NC, rev_rond); // maakt een encoder aan! D12/D13 ingangen, rev_rond zijn aantal pulsen per revolutie! Bovenaan in te stellen.
sivuu 14:4b934ac37656 38 QEI Encoder2(D15,D14, NC, rev_rond);
sivuu 14:4b934ac37656 39 float counts_encoder1; //variabele counts aanmaken
sivuu 14:4b934ac37656 40 float rev_counts_motor1; //variabele motor rondjes aanmaken in radialen!!
sivuu 14:4b934ac37656 41 float counts_encoder2;
sivuu 14:4b934ac37656 42 float rev_counts_motor2;
sivuu 14:4b934ac37656 43
sivuu 16:135908f85971 44 const float a=1.0; //voltingang motor 1
sivuu 16:135908f85971 45 const float b=10.0;//voltingang motor 2
sivuu 12:7903c0e55cd7 46
sivuu 3:34f7c16a6a7f 47 while (true) { // zorgt er voor dat de code oneindig doorgelopen wordt
sivuu 2:4dcdf7755a04 48
sivuu 12:7903c0e55cd7 49 sw3.fall(&SwitchN); // zorgt er voor dat void switch wordt gedaan als switch 3 wordt ingedrukt
sivuu 12:7903c0e55cd7 50
sivuu 0:b7cb5d3978b5 51
sivuu 12:7903c0e55cd7 52
sivuu 12:7903c0e55cd7 53 if (button_cw==0) // als s ingedrukt wordt gebeurd het volgende
sivuu 3:34f7c16a6a7f 54 {
sivuu 3:34f7c16a6a7f 55 if (n%2==0) // als s ingedrukt wordt en het getal is even gebeurd het onderstaande
sivuu 3:34f7c16a6a7f 56 {
sivuu 3:34f7c16a6a7f 57 pc.printf("n is even \n\r"); // print lijn "n is even"
sivuu 4:2b3fbd7ef1cf 58 pc.printf("up \n\r"); // print lijn "up"
sivuu 12:7903c0e55cd7 59 richting_motor1 = 1;
sivuu 12:7903c0e55cd7 60 pwm_motor1 = a;
sivuu 12:7903c0e55cd7 61 ledcw=1; ledccw=0;
sivuu 15:706e18b43dd6 62 counts_encoder1 = Encoder1.getPulses(); //tellen van de pulsen in
sivuu 14:4b934ac37656 63 rev_counts_motor1=counts_encoder1/(gearboxratio*rev_rond); //berekenen van het aantal rondjes van motor. Gedeeld door gearboxratio en rev rond, om naar motorrondjes te gaan in plaats van pulsen van encoder!
sivuu 14:4b934ac37656 64 pc.printf("motor rondjes omhoog: %f \r\n", rev_counts_motor1); //weergeven
sivuu 12:7903c0e55cd7 65
sivuu 3:34f7c16a6a7f 66 }
sivuu 7:9dc08a9a5991 67
sivuu 3:34f7c16a6a7f 68 else // als s is ingedrukt maar het getal is niet even (dus oneven) gebeurdt het onderstaande
sivuu 3:34f7c16a6a7f 69 {
sivuu 3:34f7c16a6a7f 70 pc.printf("n is odd \n\r"); // print lijn "n is odd"
sivuu 3:34f7c16a6a7f 71 pc.printf("left \n\r"); // print lijn "left"
sivuu 12:7903c0e55cd7 72 richting_motor2 = 1;
sivuu 12:7903c0e55cd7 73 pwm_motor2 = b;
sivuu 12:7903c0e55cd7 74 ledcw=1;
sivuu 12:7903c0e55cd7 75 ledccw=1;
sivuu 15:706e18b43dd6 76 counts_encoder2 = Encoder2.getPulses(); //tellen van de pulsen in
sivuu 14:4b934ac37656 77 rev_counts_motor2=counts_encoder2/(gearboxratio*rev_rond); //weergeven van het aantal rondjes
sivuu 14:4b934ac37656 78 pc.printf("motor rondjes omhoog: %f \r\n", rev_counts_motor2);
sivuu 4:2b3fbd7ef1cf 79 }
sivuu 7:9dc08a9a5991 80
sivuu 3:34f7c16a6a7f 81 }
sivuu 12:7903c0e55cd7 82 else if (button_ccw==0) // als d ingedrukt wordt gebeurd het volgende
sivuu 3:34f7c16a6a7f 83 {
sivuu 3:34f7c16a6a7f 84 if (n%2==0) // als d is ingedrukt en n is even dan gebeurd het volgende
sivuu 3:34f7c16a6a7f 85 {
sivuu 3:34f7c16a6a7f 86 pc.printf("n is even \n\r"); // print lijn "n is even"
sivuu 3:34f7c16a6a7f 87 pc.printf("down \n\r"); // print lijn "down"
sivuu 12:7903c0e55cd7 88 richting_motor1 = 0;
sivuu 12:7903c0e55cd7 89 pwm_motor1 = a;
sivuu 12:7903c0e55cd7 90 ledccw=1; ledcw=0;
sivuu 15:706e18b43dd6 91 counts_encoder1 = Encoder1.getPulses(); //tellen van de pulsen in
sivuu 14:4b934ac37656 92 rev_counts_motor1=counts_encoder1/(gearboxratio*rev_rond); //weergeven van het aantal rondjes
sivuu 14:4b934ac37656 93 pc.printf("motor rondjes omhoog: %f \r\n", rev_counts_motor1);
sivuu 12:7903c0e55cd7 94
sivuu 12:7903c0e55cd7 95
sivuu 3:34f7c16a6a7f 96 }
sivuu 3:34f7c16a6a7f 97 else // als d is ingedrukt maar het getal is niet even (dus oneven) gebeurdt het onderstaande
sivuu 3:34f7c16a6a7f 98 {
sivuu 3:34f7c16a6a7f 99 pc.printf("n is odd \n\r"); // print lijn "n is odd"
sivuu 3:34f7c16a6a7f 100 pc.printf("right \n\r"); // print lijn "right"
sivuu 12:7903c0e55cd7 101 richting_motor2 = 0;
sivuu 12:7903c0e55cd7 102 pwm_motor2 = b;
sivuu 12:7903c0e55cd7 103 ledccw=1; ledcw=0;
sivuu 15:706e18b43dd6 104 counts_encoder2 = Encoder2.getPulses(); //tellen van de pulsen in
sivuu 14:4b934ac37656 105 rev_counts_motor2=counts_encoder2/(gearboxratio*rev_rond); //weergeven van het aantal rondjes
sivuu 14:4b934ac37656 106 pc.printf("motor rondjes naar rechts: %f \r\n", rev_counts_motor2);
sivuu 12:7903c0e55cd7 107
sivuu 12:7903c0e55cd7 108 }
sivuu 12:7903c0e55cd7 109 }
sivuu 12:7903c0e55cd7 110 else{
sivuu 15:706e18b43dd6 111 // pc.printf("motor staat stil \n\r");
sivuu 12:7903c0e55cd7 112 pwm_motor2=0;
sivuu 12:7903c0e55cd7 113 pwm_motor1=0;
sivuu 12:7903c0e55cd7 114 ledccw=0; ;ledcw=0;
sivuu 12:7903c0e55cd7 115 }
sivuu 12:7903c0e55cd7 116
sivuu 3:34f7c16a6a7f 117
sivuu 0:b7cb5d3978b5 118 }
sivuu 3:34f7c16a6a7f 119 }
sivuu 3:34f7c16a6a7f 120