Opis zapisałem w main.cpp
Dependencies: mbed Motordriver
Revision 2:ef1505fe5b96, committed 2019-03-02
- 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