Opis znajduje sie w main.cpp

Dependencies:   mbed Motordriver

main1.cpp

Committer:
kociol1994
Date:
2019-03-02
Revision:
2:ef1505fe5b96
Child:
3:5b09cb69d476

File content as of revision 2:ef1505fe5b96:

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