void initializePlatform(){ /* Initialize the PWMs that will be used to driver the motors*/ PWM_dreapta_SetRatio16(0xFFFF); // 0xFFFF = duty cycle 0% PWM_stanga_SetRatio16(0xFFFF); PWM_dreapta_Enable(); PWM_stanga_Enable(); }
void setLeftMotorSpeed(uint16 speed){ uint16_t value; if (speed > 100) value = 100; else value = speed; value = 0xFFFF - (value*0xFFFF)/100; sens_stanga_PutVal(0); PWM_stanga_SetRatio16(value); }
void motor(int left, int right) { /*############################################################################################################################################################################# ** Functia motor este functia de control al motoarelor. **Aceasta functie ia ca si argument vitezele celor doua motoare(-65535 -> 65535), iar in cazul in care viteza este negativa robotul va merge inapoi. **Pasii pe care ii urmeaza: ** --seteaza pinii corespunzatori motoarelor ca pini de output ** --daca viteza motorului din stanga/dreapta este negativa sa inverseaza directia ** --scade din viteza maxima viteza data deoarece 65535 este valoarea pentru viteza 0, iar 0 este valoarea pentru viteza 65535, astfel inversand valorile pentru viteza **#############################################################################################################################################################################*/ const int maxspd=65535; sens_dreapta_SetOutput(); sens_stanga_SetOutput(); if(left>0) { sens_stanga_PutVal(1); } else { sens_stanga_PutVal(0); left=-left; } if(right>0) { sens_dreapta_PutVal(1); } else { sens_dreapta_PutVal(0); right=-right; } PWM_stanga_SetRatio16(maxspd - left); PWM_dreapta_SetRatio16(maxspd - right); PWM_stanga_Enable(); PWM_dreapta_Enable(); }