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
Diff: main.cpp
- Revision:
- 24:2b47887bfd78
- Parent:
- 23:010d8edccc5b
- Child:
- 25:31179ebc3582
--- a/main.cpp Tue Oct 25 12:30:32 2016 +0000 +++ b/main.cpp Fri Oct 28 09:17:08 2016 +0000 @@ -27,7 +27,7 @@ const int CW = 2.5; //definitie rechtsom 'lage waarde' const int CCW =-1; //definitie linksom 'hoge waarde' const float gearboxratio=131.25; // gearboxratio van encoder naar motor -const int rev_rond=32; // aantal revoluties per omgang van de encoder +const float rev_rond=64.0; // aantal revoluties per omgang van de encoder volatile double current_position_motor1 = 0; // current position is 0 op het begin volatile double previous_position_motor1 = 0; // previous position is 0 op het begin @@ -50,8 +50,8 @@ int main() { pc.baud(115200); // zorgt voor de link voor putty, 115200 is snelheid - QEI Encoder2(D12,D13, NC, rev_rond); // maakt een encoder aan! D12/D13 ingangen, rev_rond zijn aantal pulsen per revolutie! Bovenaan in te stellen. - QEI Encoder1(D10,D11, NC, rev_rond); + QEI Encoder2(D12,D13, NC, rev_rond,QEI::X4_ENCODING); // maakt een encoder aan! D12/D13 ingangen, rev_rond zijn aantal pulsen per revolutie! Bovenaan in te stellen. + QEI Encoder1(D10,D11, NC, rev_rond,QEI::X4_ENCODING); float counts_encoder1; //variabele counts aanmaken float rev_counts_motor1; //variabele motor rondjes aanmaken in radialen!! float counts_encoder2; @@ -71,19 +71,18 @@ while(sw2==0 && rev_counts_motor1<0 && value1_resetbutton >= 0){ // zorgt er voor dat de loop wordt doorlopen als switch 2 wordt ingedrukt, aantal rondejs van de motor kleiner is dan 0 en de value resetbutton groter of gelijk is aan 0 pc.printf("switch 2 is ingedrukt \r\n"); - pc.printf("aantal rondjes is kleiner dan 0\r\n"); + pc.printf("aantal rondjes motor 1 is kleiner dan 0\r\n"); richting_motor1 = 1; // zorgt er voor dat de motor tegenovergestelde richting gaat draaien zodat het totaal aantal rondjes gedraaid op 0 komt te staan pwm_motor1 = voltage_motor1; // zorgt er voor dat er een ampere is voor de motor om te draaien pc.printf("richting motor is %f \r\n", richting_motor1); pc.printf("voltage motor 1 is %f \r\n", voltage_motor1); + counts_encoder1 = Encoder1.getPulses(); // zorgt er voor dat het aantal rondjes geteld worden rev_counts_motor1=counts_encoder1/(gearboxratio*rev_rond); // zorgt er voor dat rev counts niet het aantal pulsen is maar het aantal rondjes - counts_encoder1 = Encoder1.getPulses(); // zorgt er voor dat het aantal rondjes geteld worden pc.printf("rondjes motor is %f \r\n", rev_counts_motor1); value1_resetbutton = 1; // veranderd de value1_resetbutton in 1 hierdoor kan er niet meer in de andere loop gekomen worden maar nog wel in dezelfde. dit voorkomt dat als de loop 0 heeft bereikt die daar blijft staan en niet oneindig om nul blijft draaien. - } while (sw2==0 && rev_counts_motor1>0 && value1_resetbutton <=0){ // werkt het zelfde als de vorige loop maar dan met tegengestelde richting. - pc.printf("aantal rondjes is groter dan 0 \r\n"); + pc.printf("aantal rondjes motor 1 is groter dan 0 \r\n"); richting_motor1 = 0; pwm_motor1 = voltage_motor1; pc.printf("richting motor is %f \r\n", richting_motor1); @@ -97,17 +96,19 @@ pc.printf("aantal rondjes motor 2 is kleiner dan 0\r\n"); richting_motor2 = 0; pwm_motor2 = voltage_motor2; + pwm_motor1 = 0; pc.printf("richting motor 2 is %f \r\n", richting_motor2); pc.printf("voltage motor 2 is %f \r\n", voltage_motor2); + counts_encoder2 = Encoder2.getPulses(); rev_counts_motor2=counts_encoder2/(gearboxratio*rev_rond); - counts_encoder2 = Encoder2.getPulses(); pc.printf("rondjes motor 2is %f \r\n", rev_counts_motor2); - value2_resetbutton = 1; - + value2_resetbutton = 1; } while (sw2==0 && rev_counts_motor2>0 && value2_resetbutton <=0){ + pc.printf("aantal rondjes motor 2 is groter dan 0\r\n"); richting_motor2 = 1; pwm_motor2 = voltage_motor2; + pwm_motor1=0; pc.printf("richting motor 2is %f \r\n", richting_motor2); pc.printf("voltage motor 2 is %f \r\n", voltage_motor2); counts_encoder2 = Encoder2.getPulses(); @@ -120,7 +121,7 @@ { if ( tickerflag == 1) // als de ticker flag 1 is gaat dit loopje lopen. { - if (n%2==0) // als s ingedrukt wordt en het getal is even gebeurd het onderstaande + if (n%2==0 && rev_counts_motor1<3.4) // 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" @@ -130,7 +131,6 @@ 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 value1_resetbutton = 0; // reset de value van de resetbutton zodat als je hebt gereset en dan weer gaat draaien dat je gewoon normaal kan resetten. - value2_resetbutton = 0; } else // als s is ingedrukt maar het getal is niet even (dus oneven) gebeurdt het onderstaande @@ -142,7 +142,6 @@ 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); - value1_resetbutton = 0; value2_resetbutton = 0; } @@ -180,7 +179,7 @@ { if ( tickerflag == 1) // als de ticker flag 1 is gaat dit loopje lopen. { - if (n%2==0) // als d is ingedrukt en n is even dan gebeurd het volgende + if (n%2==0 && rev_counts_motor1>-3.4) // 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" @@ -190,7 +189,7 @@ rev_counts_motor1=counts_encoder1/(gearboxratio*rev_rond); //weergeven van het aantal rondjes pc.printf("motor rondjes omhoog: %f \r\n", rev_counts_motor1); value1_resetbutton = 0; - value2_resetbutton = 0; + } @@ -203,7 +202,6 @@ 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); - value1_resetbutton = 0; value2_resetbutton = 0; } @@ -239,7 +237,11 @@ } } else{ - // pc.printf("motor staat stil \n\r"); + pc.printf("rondjes motor1 is %f: \n\r",rev_counts_motor1); + counts_encoder1 = Encoder1.getPulses(); //tellen van de pulsen in + rev_counts_motor1=counts_encoder1/(gearboxratio*rev_rond); + counts_encoder2 = Encoder2.getPulses(); //tellen van de pulsen in + rev_counts_motor2=counts_encoder2/(gearboxratio*rev_rond); pwm_motor2=0; pwm_motor1=0; }