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:
Mon Oct 10 14:31:10 2016 +0000
Revision:
14:4b934ac37656
Parent:
12:7903c0e55cd7
Child:
15:706e18b43dd6
hij telt nu alleen de rondjes van omhoog en omlaag maar niet van naar links en recht

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 14:4b934ac37656 37 QEI Encoder(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 12:7903c0e55cd7 44 const float a=1.0;
sivuu 12:7903c0e55cd7 45 const float b=10.0;
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 14:4b934ac37656 62 counts_encoder1 = Encoder.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 14:4b934ac37656 76 counts_encoder2 = Encoder.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 14:4b934ac37656 91 counts_encoder1 = Encoder.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 14:4b934ac37656 104 counts_encoder2 = Encoder.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 12:7903c0e55cd7 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