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

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