Exemplo n.º 1
0
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();


}
Exemplo n.º 2
0
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);
		
}