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