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
- Committer:
- sivuu
- Date:
- 2016-10-10
- Revision:
- 15:706e18b43dd6
- Parent:
- 14:4b934ac37656
- Child:
- 16:135908f85971
File content as of revision 15:706e18b43dd6:
#include "mbed.h" //standaard bieb mbed #include "QEI.h" //bieb voor encoderfuncties in c++ #include "MODSERIAL.h" //bieb voor modserial InterruptIn sw3(SW3); DigitalIn encoder1A(D13); DigitalIn encoder1B(D12); DigitalIn button_cw(D11); DigitalIn encoder2A(D15); DigitalIn encoder2B(D14); DigitalIn button_ccw(D9); DigitalOut ledcw(D10); DigitalOut ledccw(D2); MODSERIAL pc(USBTX, USBRX); DigitalOut richting_motor1(D4); PwmOut pwm_motor1(D5); DigitalOut richting_motor2(D7); PwmOut pwm_motor2(D6); int n = 0; //start van de teller wordt op nul gesteld void SwitchN() { // maakt simpele functie die 1 bij n optelt n++; } //constanten voor de encoder const int CW = 2.5; //definitie rechtsom 'lage waarde' const int CCW =0; //definitie linksom 'hoge waarde' const float gearboxratio=131; // gearboxratio van encoder naar motor const int rev_rond=32; // aantal revoluties per omgang van de encoder int main() { pc.baud(115200); // zorgt voor de link voor putty, 115200 is snelheid 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. QEI Encoder2(D15,D14, NC, rev_rond); float counts_encoder1; //variabele counts aanmaken float rev_counts_motor1; //variabele motor rondjes aanmaken in radialen!! float counts_encoder2; float rev_counts_motor2; const float a=1.0; const float b=10.0; while (true) { // zorgt er voor dat de code oneindig doorgelopen wordt sw3.fall(&SwitchN); // zorgt er voor dat void switch wordt gedaan als switch 3 wordt ingedrukt if (button_cw==0) // als s ingedrukt wordt gebeurd het volgende { if (n%2==0) // als s ingedrukt wordt en het getal is even gebeurd het onderstaande { pc.printf("n is even \n\r"); // print lijn "n is even" pc.printf("up \n\r"); // print lijn "up" richting_motor1 = 1; pwm_motor1 = a; ledcw=1; ledccw=0; counts_encoder1 = Encoder1.getPulses(); //tellen van de pulsen in 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! pc.printf("motor rondjes omhoog: %f \r\n", rev_counts_motor1); //weergeven } else // als s is ingedrukt maar het getal is niet even (dus oneven) gebeurdt het onderstaande { pc.printf("n is odd \n\r"); // print lijn "n is odd" pc.printf("left \n\r"); // print lijn "left" richting_motor2 = 1; pwm_motor2 = b; ledcw=1; ledccw=1; counts_encoder2 = Encoder2.getPulses(); //tellen van de pulsen in rev_counts_motor2=counts_encoder2/(gearboxratio*rev_rond); //weergeven van het aantal rondjes pc.printf("motor rondjes omhoog: %f \r\n", rev_counts_motor2); } } else if (button_ccw==0) // als d ingedrukt wordt gebeurd het volgende { if (n%2==0) // als d is ingedrukt en n is even dan gebeurd het volgende { pc.printf("n is even \n\r"); // print lijn "n is even" pc.printf("down \n\r"); // print lijn "down" richting_motor1 = 0; pwm_motor1 = a; ledccw=1; ledcw=0; counts_encoder1 = Encoder1.getPulses(); //tellen van de pulsen in rev_counts_motor1=counts_encoder1/(gearboxratio*rev_rond); //weergeven van het aantal rondjes pc.printf("motor rondjes omhoog: %f \r\n", rev_counts_motor1); } else // als d is ingedrukt maar het getal is niet even (dus oneven) gebeurdt het onderstaande { pc.printf("n is odd \n\r"); // print lijn "n is odd" pc.printf("right \n\r"); // print lijn "right" richting_motor2 = 0; pwm_motor2 = b; ledccw=1; ledcw=0; counts_encoder2 = Encoder2.getPulses(); //tellen van de pulsen in rev_counts_motor2=counts_encoder2/(gearboxratio*rev_rond); //weergeven van het aantal rondjes pc.printf("motor rondjes naar rechts: %f \r\n", rev_counts_motor2); } } else{ // pc.printf("motor staat stil \n\r"); pwm_motor2=0; pwm_motor1=0; ledccw=0; ;ledcw=0; } } }