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
main.cpp@16:135908f85971, 2016-10-11 (annotated)
- 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?
User | Revision | Line number | New 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 |