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:
- 27:be2be9600e2d
- Parent:
- 26:a6b8bad5b0e2
- Child:
- 28:edfab1cb48df
--- a/main.cpp Fri Oct 28 12:14:20 2016 +0000 +++ b/main.cpp Fri Oct 28 14:06:13 2016 +0000 @@ -58,12 +58,7 @@ float rev_counts_motor2; t.attach(&tickerfunctie,ticker_TS); // attacht de ticker met een tick van 0.1 seconde (gelijk aan de tijdstap) volatile float voltage_motor1=0.27; //pwm is de pulse with tussen geen ampere en wel ampere motor 1 -volatile float voltage_motor2=1;//pwm is de pulse with tussen geen ampere en wel ampere motor 1 - - - - - +volatile float voltage_motor2=1;//pwm is de pulse with tussen geen ampere en wel ampere motor 1 while (true) { // zorgt er voor dat de code oneindig doorgelopen wordt @@ -117,11 +112,7 @@ value2_resetbutton = -1; } - if (button_cw==0) // als s ingedrukt wordt gebeurd het volgende - { - 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 && button_cw==0 && tickerflag == 1) // 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" @@ -133,7 +124,7 @@ 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. } - else // als s is ingedrukt maar het getal is niet even (dus oneven) gebeurdt het onderstaande + else if (n%2!=0 && button_cw==0 && tickerflag ==1) // 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" @@ -145,41 +136,8 @@ value2_resetbutton = 0; } - previous_position_motor1 = current_position_motor1; // zorgt er voor dat de huidige positie wordt gedefineerd als de vorige positie is - current_position_motor1 = rev_counts_motor1; // zorgt dat de huidige positie wordt gedefineerd als het huidige aantal rondejs dat gedraaid is - previous_position_motor2 = current_position_motor2; // zelfde maar dan voor motor2 - current_position_motor2 = rev_counts_motor2; - - snelheid_motor1 = ((current_position_motor1 - previous_position_motor1)*6.28318530718) / ticker_TS; // berekend de snelheid van de motor door te kijken naar het aantal rondjes dat gedraaid is in radialen (dus *2pi) delen door de tijd waarin dat gedraaid is (die is altijd 0.1 want de ticker laat het script iedere 0.1 seconde lopen). - pc.printf("snelheid motor 1 is: %f \r\n", snelheid_motor1); - - snelheid_motor2 = ((current_position_motor2 - previous_position_motor2)*6.28318530718) / ticker_TS; // doet het zelfde voor motor 2 - pc.printf("snelheid motor 2 is: %f \r\n", snelheid_motor2); - - if (abs(snelheid_motor1) > 3.0){ // zorgt dat als de absolute van de snelheid van motor 1 boven de target snelheid zit ( in dit geval 3.0 rad/s) dat er in dit loopje gelopen wordt - voltage_motor1 = voltage_motor1-0.005; // zorgt er voor dat de pwm verlaagd word hierdoor word de puls lengte kleiner en zal de motor langzamer gaan draaien. - pc.printf("motor1 draaid te snel voltage is nu %f \r\n",voltage_motor1); - } - else if (abs(snelheid_motor1) < 3.0 && snelheid_motor1 != 0){ // doet het zelfde maar dan als de snelheid lager is dan de target speed - voltage_motor1 = voltage_motor1+0.005; // verhoogd dus ook de pwm - pc.printf("motor1 draaid te langzaam voltage is nu %f \r\n",voltage_motor1); - } - if (abs(snelheid_motor2) > 5.0){// zelfde maar dan voor motor 2 - voltage_motor2 = voltage_motor2-0.005; - pc.printf("motor1 draaid te snel voltage is nu %f \r\n",voltage_motor2); - } - else if (abs(snelheid_motor2) < 5.0 && snelheid_motor2 != 0){ - voltage_motor2 = voltage_motor2+0.005; - pc.printf("motor1 draaid te langzaam voltage is nu %f \r\n",voltage_motor2); - } - tickerflag = 0; // reset de tickerflag weer op 0 zodat het loopje niet wordt doorlopen tot de volgende tick zo kan de tijd tussen het lopen van ieder loopje gecontroleerd worden - } - } - else if (button_ccw==0) // als d ingedrukt wordt gebeurd het volgende // dit doet het zelfde als bovenstaande alleen dan voor het andere knopje. - { - 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 && button_ccw==0 && tickerflag == 1) // 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" @@ -188,12 +146,10 @@ 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); - value1_resetbutton = 0; - + value1_resetbutton = 0; + } - - } - else // als d is ingedrukt maar het getal is niet even (dus oneven) gebeurdt het onderstaande + else if ( n%2!=0 && button_ccw==0 && tickerflag==1) // 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" @@ -203,8 +159,8 @@ 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); value2_resetbutton = 0; - } + previous_position_motor1 = current_position_motor1; current_position_motor1 = rev_counts_motor1; previous_position_motor2 = current_position_motor2; @@ -234,9 +190,8 @@ } tickerflag = 0; - } - } - else{ + + else { 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); @@ -244,7 +199,8 @@ rev_counts_motor2=counts_encoder2/(gearboxratio*rev_rond); pwm_motor2=0; pwm_motor1=0; - } + } + if (rev_counts_motor1 <-3.4 && richting_motor1 == 0){ pwm_motor1=0; } @@ -257,8 +213,6 @@ } else if (rev_counts_motor2 > 4.0 && richting_motor2 == 0){ pwm_motor2==0; - } - + } } -} - \ No newline at end of file +} \ No newline at end of file