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:
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;
     }