View Single Post
  #1   Spotlight this post!  
Unread 14-02-2005, 17:51
the_undefined's Avatar
the_undefined the_undefined is offline
German FES
AKA: Felix Geisendörfer
#1648 (Gearbox Gangstas)
Team Role: Programmer
 
Join Date: Jan 2005
Rookie Year: 2005
Location: Germany
Posts: 77
the_undefined has a spectacular aura aboutthe_undefined has a spectacular aura about
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