Opis zapisałem w main.cpp

Dependencies:   mbed Motordriver

Files at this revision

API Documentation at this revision

Comitter:
kociol1994
Date:
Sat Mar 02 18:59:32 2019 +0000
Parent:
1:00bee38b3f75
Child:
3:5b09cb69d476
Commit message:
habababa;

Changed in this revision

Map.lib Show diff for this revision Revisions of this file
main.cpp Show diff for this revision Revisions of this file
main1.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Map.lib	Sat Mar 02 12:12:08 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://os.mbed.com/users/Generic/code/Map/#dad975e2e150
--- a/main.cpp	Sat Mar 02 12:12:08 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-#include "mbed.h"
-#include "motordriver.h"
-#include "Map.hpp"
-
-
-    
-    
-    /*
-    
-    Problem jest w tym że trzeba zamienić dane z potencjometru na wartosci -1 do 1
-    Trzeba zmapować zmienną w taki sposób żeby w zakresie 0 do 0.5 przyjmowała wartości od -1 do 0
-    a w zakresie 0.5 do 1 wartości od 0 do 1.
-    W arduino wyglądało to następująco:
-        Y = map(wartosc_Y, 0,  0.5, -1,  0);
-        Y = map(wartosc_Y, 0,5,  1,  0,  1);
-    Tutaj niestety trzeba bardziej kombinować. Znalazłem biblioteke Map.hpp ale nie wiem jak ona działa :-|
-    Trzeba albo ją rozkminić albo znaleźć inny sposób.
-    
-    Bez sterownika też można to robić bo wewnętrzny kompilator sprawdza wszystko. 
-    Jeśli komuś się uda to niech da znać to sprawdze to na Nucleo.
-    
-    
-    */
-    
-float X0, X1, X;
-float Y0, Y1, Y;    
-    
-
-Motor A(D6, D4, D7, 1); // pwm, fwd, rev, can brake 
-Motor B(D5, D2, D3, 1); // pwm, fwd, rev, can brake
-
-AnalogIn joy_X(A0);
-AnalogIn joy_Y(A1);
-
-Serial pc(SERIAL_TX, SERIAL_RX);
-
-
-int main() {
-        while(1){
-        
-        X0 = joy_X.read();
-        Y0 = joy_Y.read();
-        
-        Map(0,  0.5, -1,  0);
-        Map(0.5,  1,  0,  1);
-        X  = X1;
-        
-        Map(0,  0.5, -1,  0);
-        Map(0.5,  1,  0,  1);
-        Y  = Y1;
-    
-        printf("Pomiar: ");
-        printf("measure X = %.0f ", X);
-        printf("measure Y = %.0f \r\n", Y);
-        wait_ms(50);    
-    
-    
-    if(X0==1) {
-        A.speed(Y0); 
-        B.speed(Y0); 
-    }else{
-    
-    A.stop(1);
-    B.stop(1);
-    }
-    /*
-    wait(1);
-    A.coast();
-    B.coast();
-    */
-    
-    }
-} 
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main1.cpp	Sat Mar 02 18:59:32 2019 +0000
@@ -0,0 +1,89 @@
+/*                                      PROBLEM
+    Należy utworzyć wektor ze zmiennych X, Y pozwalający przypisać odpowiednie wartośc PWM do mostka H
+    Wartości te muszą umożliwiać jazde robota w wybranym kierunku     
+*/
+
+
+#include "mbed.h"
+#include "motordriver.h"
+    
+float X0, X1, X;
+float Y0, Y1, Y;    
+    
+Motor mot_A(D6, D7, D4, 1); // pwm, fwd, rev, can brake 
+Motor mot_B(D5, D2, D3, 1); // pwm, fwd, rev, can brake
+
+
+AnalogIn joy_X(A0);
+AnalogIn joy_Y(A1);
+InterruptIn SW(USER_BUTTON);
+
+
+Serial pc(SERIAL_TX, SERIAL_RX);
+
+
+//--------funkcja mapująca zmienne X i Y-----------------
+    float map(float Q, float A, float B, float C, float D){
+            return ((D-C)/(B-A)*(Q-A)+C);                    
+}  
+
+//---------------------------------------------------------------------------------------------
+int main() {
+        while(1){
+            
+    // --------pobierz dane z JOY----------
+        X0 = joy_X.read()*256;
+        Y0 = joy_Y.read()*256;
+        
+    //--------mapowanie zmiennych ----------
+        //po wykonaniu tej części otrzymujemy zmienną X i Y z wartościami w zakresie -1 do 1
+        
+            //ZMIENNA X
+        if(X0>100 && X0<150){  //uwzględniam drganie styków
+            X1=0;
+        }else if((X0)<100){
+            X1=map(X0,0, 100, -256, 0);               
+        }else if((X0)>150){
+            X1=map(X0,150, 256, 0, 256);                    
+        } 
+        X=X1/256;  
+        
+            //ZMIENNA Y
+        if(Y0>100 && Y0<150){  //uwzględniam drganie styków
+            Y1=0;
+        }else if((Y0)<100){
+            Y1=map(Y0,0, 100, -256, 0);               
+        }else if((Y0)>150){
+            Y1=map(Y0,150, 256, 0, 256);                    
+        } 
+        Y=Y1/256;  
+                  
+    //----------wyświetl diagnostyke---------
+            /*
+            X0/Y0 wartość prosto z wejść analogowych
+            X1/Y1 wartość PWM z zakresu -255 do 255
+            X /Y  wartość PWM z zakresu -1   do 1 
+            */
+        printf("Pomiar: ");
+        printf("X0=%.0f    ", X0);
+        printf("X1=%.0f    ", X1);
+        printf("X =%.0f    ", X);
+        
+        printf("     Y0=%.0f    ", Y0);
+        printf("Y1=%.0f    ", Y1);
+        printf("Y =%.0f    \r\n", Y);
+        
+        wait_ms(50);    
+    
+    // ------------wpisz wartosc PWM--------
+    
+    
+       if(SW!=1){
+            mot_A.speed(Y); 
+            mot_B.speed(Y); 
+        }else{
+            mot_A.speed(0); 
+            mot_B.speed(0);
+        }
+    }
+}
\ No newline at end of file