# Controlling motor speed

I would like to control the speed of motors so that my arm motors spin slowly, ie when I use my joystick to control my arm and push it full throttle, it would return a quarter throttle response. If you could step by step instruct in easycpro, I am a newbie rookie.

A PWM is defined to be:

255 - Full Forward
127 - Stop
0 - Full Reverse

Letâ€™s assume that your PWM is #1 and you are using the Y axis of the Joystick installed into Port 1 to control it. Your C code would look like this:

pwm01 = (unsigned char) ((((int) p1_y - 127) / 4) + 127);

(int) and (unsigned char) are compiler directives called a cast. (int) tells the compiler to transform the unsigned char, p1_y, to a signed integer. (unsigned char) transforms it back.

Note that there are many ways to skin a cat, all of which are intensely undesirable to the catâ€¦

Regards,

Mike

You should use the online window to determine the speed you want your arm to move at and then using a formula like Mike posted make that your maximum.

I understand the formula however I do not have anything in my c window that resembles his format "pwm01 = (unsigned char) ((((int) p1_y - 127) / 4) + 127); otherwise I would replace my code with his. What steps in easycpro would I use to generate code in that format?http://www.chiefdelphi.com/forums/images/smilies/redface.gif
:o

Here is the easiest way to do this in easyC.

``````
int Arm_Joystick;
unsigned char Arm_Output;

while ( 1 )
{
Arm_Joystick = GetOIAInput ( 2 , 2 ) ; // Analog OI Input Block
Arm_Output = ((( Arm_Joystick - 127 ) / 4) + 127 ) ; // User Code Block
SetPWM ( 4 , Arm_Output ) ; // PWM Control Block
}

``````

Here is a more advanced way to do this in easyC Pro

``````
while (1)
{
SetPWM ( 5 , ((( GetOIAInput(2,2) - 127) / 4) +127 ) ) ;
}

``````

Oh, and when you put a smiley in your post all you have to do is click on the smile you want once and the forum software