|
Problems with NullZone
Hey Guys,
we have a problem with a scale function that we wrote in order to have a rectangular NullZone where the joystick is deactivated. Once the Joystick get s out of the Zone (for example p1_x > 147) then we want to scale the new value over the full range of the output (here from 147 - 255 TO 127 - 255) in order to not start with like 20 speed when we get out of the zone.
The function that we came up with works in calculators and other c-Compilers but not with the RC so I hope somebody could help us with this:
Here is the Function:
unsigned char scale ( unsigned char sNum , // Value to Scale
unsigned char sMin , // Old Min Value
unsigned char sMax , // Old Max Value
unsigned char eMin , // New Min Value
unsigned char eMax) // New Max Value
{
unsigned char eNum = (( sNum - sMin ) * ( eMax - eMin ) / ( sMax - sMin ) + eMin);
return eNum;
}
And here where we call it (N_ZONE_X = 40):
(int)scale((unsigned char)p1_x, 127 + (N_ZONE_X / 2), 254, 127, 254);
the value that we get is always either 127 or 254 but never stuff in between so we're kinda confused : ( ...
Thanks,
bye
Felix
|