Log in

View Full Version : Change joystick to pwm mapping


Joe Lewis
24-03-2005, 21:14
We are trying to program the following scenario and are having a difficult time:

Joystick one - push forward - makes pwm11 go forward
Joystick one - pull back - makes pwm09 go forward
Joystick one - move left - make pwm05 go forward
Joystick one - move right - make pwm07 go foward

Each of the outputs needs to be variable, so the further the joystick is moved, the higher the output to the motors.

Lastly, if the joystick is moved forward, back, left or right off the x/y axis, then a combination of the motors needs to be triggered.

Can we do this, and if so, how? Below is a sample of my code that is not working. The code that I have is just triggering PWM01 to go forward or backward as the joystick is moved on the Y axis.

Thanks much,
Joe

pwm01 = pwm02 = pwm03 = pwm04 = pwm05 = pwm06 = pwm07 = pwm08 = 127;
pwm09 = pwm10 = pwm11 = pwm12 = pwm13 = pwm14 = pwm15 = pwm16 = 127;

/* Check if Port 1 Joystick is being pulled back or pushed forward */

if (p1_y <= 125) /* Joystick is being pulled back */
{
Pwm09 = 255 - p1_y; /* turn on motor 5 to go up */
Pwm11 = 127; /* turn off motor 6 */
}
else if (p1_y >= 135) /* Joystick is being pushed down */
{
Pwm11 = p1_y; /* turn on motor 6 to go down*/
Pwm09 = 127; /* turn off motor 5 */
}
else
{ /* In neither forward or reverse position */
Pwm11 = pwm09 = 127; /* Turn off motors 5 and 6 */
}

dm0ney
26-03-2005, 19:47
Default code has p1_y mapped straight to pwm01.
Check Default_Routine, where the pwms are all mapped.
I would tell you that since you are going through and editing the code, comment out or #if 0 the mapping.

Insert the code you have into Default_Routine as well. I'm not sure where you have it currently.

One last thing: the pwms are all lowercase, NOT Pwm

PM me or post more of the code here if you need more help.

Good Luck

RbtGal1351
27-03-2005, 02:49
We are trying to program the following scenario and are having a difficult time:

Joystick one - push forward - makes pwm11 go forward
Joystick one - pull back - makes pwm09 go forward
Joystick one - move left - make pwm05 go forward
Joystick one - move right - make pwm07 go foward

Each of the outputs needs to be variable, so the further the joystick is moved, the higher the output to the motors.

Lastly, if the joystick is moved forward, back, left or right off the x/y axis, then a combination of the motors needs to be triggered.

Can we do this, and if so, how? Below is a sample of my code that is not working. The code that I have is just triggering PWM01 to go forward or backward as the joystick is moved on the Y axis.

Thanks much,
Joe

pwm01 = pwm02 = pwm03 = pwm04 = pwm05 = pwm06 = pwm07 = pwm08 = 127;
pwm09 = pwm10 = pwm11 = pwm12 = pwm13 = pwm14 = pwm15 = pwm16 = 127;

/* Check if Port 1 Joystick is being pulled back or pushed forward */

if (p1_y <= 125) /* Joystick is being pulled back */
{
Pwm09 = 255 - p1_y; /* turn on motor 5 to go up */
Pwm11 = 127; /* turn off motor 6 */
}
else if (p1_y >= 135) /* Joystick is being pushed down */
{
Pwm11 = p1_y; /* turn on motor 6 to go down*/
Pwm09 = 127; /* turn off motor 5 */
}
else
{ /* In neither forward or reverse position */
Pwm11 = pwm09 = 127; /* Turn off motors 5 and 6 */
}

well its probably too late, but its always good to solve the problem anyway

1. if you directly copy/pasted that, its a lowercase "p" for pwm01, etc.
2. you might want a bigger deadzone than that, i normally use 140 and 115
(depending on the joysticks tho, we use the KoP ones and i admit, they suck)
3. you can test the logic in visual c - i do this a LOT and can thus prove it is not directly a SW problem
4. i did that, and the logic works, so its not the obvious problem unfortunately... so sorry, must be something else

Plz tell me what the problem is when you find it, you have me curious
feel free to IM me or something, i can try to help

~Stephanie Schmit
Team 1351

Joe Lewis
30-03-2005, 19:27
Stephanie,

My big DUHHHH was the case sensitive "P" - I am sure that is the problem and I knew it was something simple that I forgot. I will be testing the revised program next week (this is not for a competition).

Thanks much, :D
Joe