Opis znajduje sie w main.cpp
Dependencies: mbed Motordriver
main1.cpp
- Committer:
- kociol1994
- Date:
- 2019-03-05
- Revision:
- 5:765e3090ce0c
- Parent:
- 4:2171346afc64
File content as of revision 5:765e3090ce0c:
/* 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, 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); // inicjacja portu szeregowego 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 // oraz zmienne X1 i Y1 używane w diagnostyce z wartościami w zakresie -255 do 255 //ZMIENNA X if(X0>180 && X0<200){ //uwzględniam drganie styków X1=0; }else if((X0)<180){ X1=map(X0,0, 180, -256, 0); }else if((X0)>200){ X1=map(X0,200, 256, 0, 256); } X=X1/256; // zmiana wartości na zakres od -1 do 1 //ZMIENNA Y if(Y0>180 && Y0<200){ //uwzględniam drganie styków Y1=0; }else if((Y0)<180){ Y1=map(Y0,0, 180, -256, 0); }else if((Y0)>200){ Y1=map(Y0,200, 256, 0, 256); } Y=Y1/256; // zmiana wartości na zakres od -1 do 1 //----------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----------- //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); } }