Opis znajduje sie w main.cpp
Dependencies: mbed Motordriver
Revision 4:2171346afc64, committed 2019-03-03
- Comitter:
- kociol1994
- Date:
- Sun Mar 03 16:41:45 2019 +0000
- Parent:
- 3:5b09cb69d476
- Child:
- 5:765e3090ce0c
- Commit message:
- Opis w main.cpp
Changed in this revision
| main1.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main1.cpp Sat Mar 02 21:31:05 2019 +0000
+++ b/main1.cpp Sun Mar 03 16:41:45 2019 +0000
@@ -1,24 +1,25 @@
-/* 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
+/* KocioŁ
+
+ Program pobiera stan aktualny z Joy i przetwarza go na porządane wartości PWM
+ umożliwiające przemieszczanie się pojazdu w kierunkach wskazanych przez operatora.
*/
-
#include "mbed.h"
#include "motordriver.h"
float X0, X1, X;
float Y0, Y1, Y;
+int dzielnik = 2; //dzielnik prędkosci PWM
+
-Motor mot_A(D6, D7, D4, 1); // pwm, fwd, rev, can brake
-Motor mot_B(D5, D2, D3, 1); // pwm, fwd, rev, can brake
+Motor mot_A(D6, D4, D7, 1); // pwm, fwd, rev, can brake
+Motor mot_B(D5, D3, D2, 1); // pwm, fwd, rev, can brake
-
+ // Pobranie pozycji Joy-a
AnalogIn joy_X(A0);
AnalogIn joy_Y(A1);
-InterruptIn SW(USER_BUTTON);
-
+ // inicjacja portu szeregowego
Serial pc(SERIAL_TX, SERIAL_RX);
@@ -36,27 +37,28 @@
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
+ // po wykonaniu tej części otrzymujemy zmienną X i Y z wartościami w zakresie -1 do 1
+ // oraz zmienne X1 i Y1 używane w diagnostyce z wartościami w zakresie -255 do 255
//ZMIENNA X
- if(X0>100 && X0<150){ //uwzględniam drganie styków
+ if(X0>180 && X0<200){ //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);
+ }else if((X0)<180){
+ X1=map(X0,0, 180, -256, 0);
+ }else if((X0)>200){
+ X1=map(X0,200, 256, 0, 256);
}
- X=X1/512;
+ X=X1/256; // zmiana wartości na zakres od -1 do 1
//ZMIENNA Y
- if(Y0>100 && Y0<150){ //uwzględniam drganie styków
+ if(Y0>180 && Y0<200){ //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);
+ }else if((Y0)<180){
+ Y1=map(Y0,0, 180, -256, 0);
+ }else if((Y0)>200){
+ Y1=map(Y0,200, 256, 0, 256);
}
- Y=Y1/512;
+ Y=Y1/256; // zmiana wartości na zakres od -1 do 1
//----------wyświetl diagnostyke---------
/*
@@ -65,25 +67,24 @@
X /Y wartość PWM z zakresu -1 do 1
*/
printf("Pomiar: ");
- printf("X0=%.0f ", X0);
- printf("X1=%.0f ", X1);
- printf("X =%.0f ", X);
+ 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);
+ printf("Y1=%.0f ", Y1);
+ printf("Y =%.0f \r\n ", Y );
wait_ms(50);
- // ------------wpisz wartosc PWM--------
-
+ // --------wpisz wartosc PWM-----------
- if(SW!=1){
- mot_A.speed(Y);
- mot_B.speed(Y);
- }else{
- mot_A.speed(0);
- mot_B.speed(0);
- }
+ //zależność między położeniem Joy a obrotami kół
+ float L = Y + (X/2);
+ float P = Y - (X/2);
+
+ mot_A.speed(L/dzielnik);
+ mot_B.speed(P/dzielnik);
+
}
}
\ No newline at end of file