|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Re: Joystick Input Mapping
The lookup tables suggested earlier are definitely the way to go.
If you're looking for a quick and dirty method to test things out, you can also try: Code:
temp_p1_long = (signed long)p1_y - 127; pwm01 = (unsigned char)(((temp_p1_long * temp_p1_long * temp_p1_long) >> 14) + 127); temp_p2_long = (signed long)p2_y - 127; pwm02 = (unsigned char)(((temp_p2_long * temp_p2_long * temp_p2_long) >> 14) + 127); |
|
#2
|
||||
|
||||
|
Re: Joystick Input Mapping
Code:
if (p1_y == 0)
{
LEFT_MOTOR = 0;
}
if (p1_y == 1)
{
LEFT_MOTOR = 1;
}
if (p1_y == 2)
{
LEFT_MOTOR = 2;
}
if (p1_y == 3)
{
LEFT_MOTOR = 3;
}
if (p1_y == 4)
{
LEFT_MOTOR = 4;
}
if (p1_y == 5)
{
LEFT_MOTOR = 5;
}
if (p1_y == 6)
{
LEFT_MOTOR = 5;
}
if (p1_y == 7)
{
LEFT_MOTOR = 5;
}
if (p1_y == 8)
{
LEFT_MOTOR = 5;
}
if (p1_y == 9)
{
LEFT_MOTOR = 5;
}
if (p1_y == 10)
{
LEFT_MOTOR = 10;
}
if (p1_y == 11)
{
LEFT_MOTOR = 10;
}
if (p1_y == 12)
{
LEFT_MOTOR = 10;
}
if (p1_y == 13)
{
LEFT_MOTOR = 10;
}
if (p1_y == 14)
{
LEFT_MOTOR = 10;
}
if (p1_y == 15)
{
LEFT_MOTOR = 10;
}
if (p1_y == 16)
{
LEFT_MOTOR = 10;
}
if (p1_y == 17)
{
LEFT_MOTOR = 20;
}
if (p1_y == 18)
{
LEFT_MOTOR = 20;
}
if (p1_y == 19)
{
LEFT_MOTOR = 20;
}
if (p1_y == 20)
{
LEFT_MOTOR = 20;
}
if (p1_y == 21)
{
LEFT_MOTOR = 20;
}
if (p1_y == 22)
{
LEFT_MOTOR = 30;
}
if (p1_y == 23)
{
LEFT_MOTOR = 30;
}
if (p1_y == 25)
{
LEFT_MOTOR = 30;
}
if (p1_y == 26)
{
LEFT_MOTOR = 30;
}
if (p1_y == 27)
{
LEFT_MOTOR = 40;
}
if (p1_y == 28)
{
LEFT_MOTOR = 40;
}
if (p1_y == 29)
{
LEFT_MOTOR = 40;
}
if (p1_y == 30)
{
LEFT_MOTOR = 40;
}
if (p1_y == 31)
{
LEFT_MOTOR = 40;
}
if (p1_y == 32)
{
LEFT_MOTOR = 50;
}
if (p1_y == 33)
{
LEFT_MOTOR = 50;
}
if (p1_y == 34)
{
LEFT_MOTOR = 50;
}
if (p1_y == 35)
{
LEFT_MOTOR = 50;
}
if (p1_y == 36)
{
LEFT_MOTOR = 50;
}
if (p1_y == 37)
{
LEFT_MOTOR = 50;
}
if (p1_y == 38)
{
LEFT_MOTOR = 50;
}
if (p1_y == 39)
{
LEFT_MOTOR = 50;
}
if (p1_y == 40)
{
LEFT_MOTOR = 50;
}
if (p1_y == 41)
{
LEFT_MOTOR = 50;
}
if (p1_y == 42)
{
LEFT_MOTOR = 60;
}
if (p1_y == 43)
{
LEFT_MOTOR = 60;
}
if (p1_y == 44)
{
LEFT_MOTOR = 60;
}
if (p1_y == 45)
{
LEFT_MOTOR = 60;
}
if (p1_y == 46)
{
LEFT_MOTOR = 60;
}
if (p1_y == 47)
{
LEFT_MOTOR = 60;
}
if (p1_y == 48)
{
LEFT_MOTOR = 60;
}
if (p1_y == 49)
{
LEFT_MOTOR = 60;
}
if (p1_y == 50)
{
LEFT_MOTOR = 60;
}
if (p1_y == 51)
{
LEFT_MOTOR = 60;
}
if (p1_y == 52)
{
LEFT_MOTOR = 70;
}
if (p1_y == 53)
{
LEFT_MOTOR = 70;
}
if (p1_y == 54)
{
LEFT_MOTOR = 70;
}
if (p1_y == 55)
{
LEFT_MOTOR = 70;
}
if (p1_y == 56)
{
LEFT_MOTOR = 70;
}
if (p1_y == 57)
{
LEFT_MOTOR = 70;
}
if (p1_y == 58)
{
LEFT_MOTOR = 70;
}
if (p1_y == 59)
{
LEFT_MOTOR = 70;
}
if (p1_y == 60)
{
LEFT_MOTOR = 70;
}
if (p1_y == 61)
{
LEFT_MOTOR = 70;
}
if (p1_y == 62)
{
LEFT_MOTOR = 85;
}
if (p1_y == 63)
{
LEFT_MOTOR = 85;
}
if (p1_y == 64)
{
LEFT_MOTOR = 85;
}
if (p1_y == 65)
{
LEFT_MOTOR = 85;
}
if (p1_y == 66)
{
LEFT_MOTOR = 85;
}
if (p1_y == 67)
{
LEFT_MOTOR = 85;
}
if (p1_y == 68)
{
LEFT_MOTOR = 85;
}
if (p1_y == 69)
{
LEFT_MOTOR = 85;
}
if (p1_y == 70)
{
LEFT_MOTOR = 85;
}
if (p1_y == 71)
{
LEFT_MOTOR = 85;
}
if (p1_y == 72)
{
LEFT_MOTOR = 95;
}
if (p1_y == 73)
{
LEFT_MOTOR = 95;
}
if (p1_y == 74)
{
LEFT_MOTOR = 95;
}
if (p1_y == 75)
{
LEFT_MOTOR = 95;
}
if (p1_y == 76)
{
LEFT_MOTOR = 95;
}
if (p1_y == 77)
{
LEFT_MOTOR = 95;
}
if (p1_y == 78)
{
LEFT_MOTOR = 95;
}
if (p1_y == 79)
{
LEFT_MOTOR = 95;
}
if (p1_y == 80)
{
LEFT_MOTOR = 95;
}
if (p1_y == 81)
{
LEFT_MOTOR = 95;
}
if (p1_y == 82)
{
LEFT_MOTOR = 105;
}
if (p1_y == 83)
{
LEFT_MOTOR = 105;
}
if (p1_y == 84)
{
LEFT_MOTOR = 105;
}
if (p1_y == 85)
{
LEFT_MOTOR = 105;
}
if (p1_y == 86)
{
LEFT_MOTOR = 105;
}
if (p1_y == 87)
{
LEFT_MOTOR = 105;
}
if (p1_y == 88)
{
LEFT_MOTOR = 105;
}
if (p1_y == 89)
{
LEFT_MOTOR = 105;
}
if (p1_y == 90)
{
LEFT_MOTOR = 105;
}
if (p1_y == 91)
{
LEFT_MOTOR = 105;
}
if (p1_y == 92)
{
LEFT_MOTOR = 110;
}
if (p1_y == 93)
{
LEFT_MOTOR = 110;
}
if (p1_y == 94)
{
LEFT_MOTOR = 110;
}
if (p1_y == 95)
{
LEFT_MOTOR = 110;
}
if (p1_y == 96)
{
LEFT_MOTOR = 110;
}
if (p1_y == 97)
{
LEFT_MOTOR = 115;
}
if (p1_y == 98)
{
LEFT_MOTOR = 115;
}
if (p1_y == 99)
{
LEFT_MOTOR = 115;
}
if (p1_y == 100)
{
LEFT_MOTOR = 115;
}
if (p1_y == 101)
{
LEFT_MOTOR = 115;
}
if (p1_y == 102)
{
LEFT_MOTOR = 115;
}
if (p1_y == 103)
{
LEFT_MOTOR = 115;
}
if (p1_y == 104)
{
LEFT_MOTOR = 115;
}
if (p1_y == 105)
{
LEFT_MOTOR = 115;
}
if (p1_y == 106)
{
LEFT_MOTOR = 115;
}
if (p1_y == 107)
{
LEFT_MOTOR = 120;
}
if (p1_y == 108)
{
LEFT_MOTOR = 120;
}
if (p1_y == 109)
{
LEFT_MOTOR = 120;
}
if (p1_y == 110)
{
LEFT_MOTOR = 120;
}
if (p1_y == 111)
{
LEFT_MOTOR = 120;
}
if (p1_y == 112)
{
LEFT_MOTOR = 120;
}
if (p1_y == 113)
{
LEFT_MOTOR = 120;
}
if (p1_y == 114)
{
LEFT_MOTOR = 120;
}
if (p1_y == 115)
{
LEFT_MOTOR = 120;
}
if (p1_y == 116)
{
LEFT_MOTOR = 120;
}
if (p1_y == 117)
{
LEFT_MOTOR = 127;
}
if (p1_y == 118)
{
LEFT_MOTOR = 127;
}
if (p1_y == 119)
{
LEFT_MOTOR = 127;
}
if (p1_y == 120)
{
LEFT_MOTOR = 127;
}
if (p1_y == 121)
{
LEFT_MOTOR = 127;
}
if (p1_y == 122)
{
LEFT_MOTOR = 127;
}
if (p1_y == 123)
{
LEFT_MOTOR = 127;
}
if (p1_y == 124)
{
LEFT_MOTOR = 127;
}
if (p1_y == 125)
{
LEFT_MOTOR = 127;
}
if (p1_y == 126)
{
LEFT_MOTOR = 127;
}
if (p1_y == 127)
{
LEFT_MOTOR = 127;
}
if (p1_y == 128)
{
LEFT_MOTOR = 127;
}
if (p1_y == 129)
{
LEFT_MOTOR = 127;
}
if (p1_y == 130)
{
LEFT_MOTOR = 127;
}
if (p1_y == 131)
{
LEFT_MOTOR = 127;
}
if (p1_y == 132)
{
LEFT_MOTOR = 127;
}
if (p1_y == 133)
{
LEFT_MOTOR = 127;
}
if (p1_y == 134)
{
LEFT_MOTOR = 127;
}
if (p1_y == 135)
{
LEFT_MOTOR = 127;
}
if (p1_y == 136)
{
LEFT_MOTOR = 127;
}
if (p1_y == 137)
{
LEFT_MOTOR = 127;
}
if (p1_y == 138)
{
LEFT_MOTOR = 130;
}
if (p1_y == 139)
{
LEFT_MOTOR = 130;
}
if (p1_y == 140)
{
LEFT_MOTOR = 135;
}
if (p1_y == 141)
{
LEFT_MOTOR = 135;
}
if (p1_y == 142)
{
LEFT_MOTOR = 135;
}
if (p1_y == 143)
{
LEFT_MOTOR = 135;
}
if (p1_y == 144)
{
LEFT_MOTOR = 135;
}
if (p1_y == 145)
{
LEFT_MOTOR = 135;
}
if (p1_y == 146)
{
LEFT_MOTOR = 135;
}
if (p1_y == 147)
{
LEFT_MOTOR = 135;
}
if (p1_y == 148)
{
LEFT_MOTOR = 135;
}
if (p1_y == 149)
{
LEFT_MOTOR = 140;
}
if (p1_y == 150)
{
LEFT_MOTOR = 140;
}
if (p1_y == 151)
{
LEFT_MOTOR = 140;
}
if (p1_y == 152)
{
LEFT_MOTOR = 140;
}
if (p1_y == 153)
{
LEFT_MOTOR = 140;
}
if (p1_y == 154)
{
LEFT_MOTOR = 140;
}
if (p1_y == 155)
{
LEFT_MOTOR = 140;
}
if (p1_y == 156)
{
LEFT_MOTOR = 140;
}
if (p1_y == 157)
{
LEFT_MOTOR = 140;
}
if (p1_y == 158)
{
LEFT_MOTOR = 140;
}
if (p1_y == 159)
{
LEFT_MOTOR = 145;
}
if (p1_y == 160)
{
LEFT_MOTOR = 145;
}
if (p1_y == 161)
{
LEFT_MOTOR = 145;
}
if (p1_y == 162)
{
LEFT_MOTOR = 145;
}
if (p1_y == 163)
{
LEFT_MOTOR = 145;
}
if (p1_y == 164)
{
LEFT_MOTOR = 150;
}
if (p1_y == 165)
{
LEFT_MOTOR = 150;
}
if (p1_y == 166)
{
LEFT_MOTOR = 150;
}
if (p1_y == 167)
{
LEFT_MOTOR = 150;
}
if (p1_y == 168)
{
LEFT_MOTOR = 150;
}
if (p1_y == 169)
{
LEFT_MOTOR = 150;
}
if (p1_y == 170)
{
LEFT_MOTOR = 150;
}
if (p1_y == 171)
{
LEFT_MOTOR = 150;
}
if (p1_y == 172)
{
LEFT_MOTOR = 150;
}
if (p1_y == 173)
{
LEFT_MOTOR = 150;
}
if (p1_y == 174)
{
LEFT_MOTOR = 160;
}
if (p1_y == 175)
{
LEFT_MOTOR = 160;
}
if (p1_y == 176)
{
LEFT_MOTOR = 160;
}
if (p1_y == 177)
{
LEFT_MOTOR = 160;
}
if (p1_y == 178)
{
LEFT_MOTOR = 160;
}
if (p1_y == 179)
{
LEFT_MOTOR = 160;
}
if (p1_y == 180)
{
LEFT_MOTOR = 160;
}
if (p1_y == 181)
{
LEFT_MOTOR = 160;
}
if (p1_y == 182)
{
LEFT_MOTOR = 160;
}
if (p1_y == 183)
{
LEFT_MOTOR = 160;
}
if (p1_y == 184)
{
LEFT_MOTOR = 170;
}
if (p1_y == 185)
{
LEFT_MOTOR = 170;
}
if (p1_y == 186)
{
LEFT_MOTOR = 170;
}
if (p1_y == 187)
{
LEFT_MOTOR = 170;
}
if (p1_y == 188)
{
LEFT_MOTOR = 170;
}
if (p1_y == 189)
{
LEFT_MOTOR = 170;
}
if (p1_y == 190)
{
LEFT_MOTOR = 170;
}
if (p1_y == 191)
{
LEFT_MOTOR = 170;
}
if (p1_y == 192)
{
LEFT_MOTOR = 170;
}
if (p1_y == 193)
{
LEFT_MOTOR = 170;
}
if (p1_y == 194)
{
LEFT_MOTOR = 185;
}
if (p1_y == 195)
{
LEFT_MOTOR = 185;
}
if (p1_y == 196)
{
LEFT_MOTOR = 185;
}
if (p1_y == 197)
{
LEFT_MOTOR = 185;
}
if (p1_y == 198)
{
LEFT_MOTOR = 185;
}
if (p1_y == 199)
{
LEFT_MOTOR = 185;
}
if (p1_y == 200)
{
LEFT_MOTOR = 185;
}
if (p1_y == 201)
{
LEFT_MOTOR = 185;
}
if (p1_y == 202)
{
LEFT_MOTOR = 185;
}
if (p1_y == 203)
{
LEFT_MOTOR = 185;
}
if (p1_y == 204)
{
LEFT_MOTOR = 195;
}
if (p1_y == 205)
{
LEFT_MOTOR = 195;
}
if (p1_y == 206)
{
LEFT_MOTOR = 195;
}
if (p1_y == 207)
{
LEFT_MOTOR = 195;
}
if (p1_y == 208)
{
LEFT_MOTOR = 195;
}
if (p1_y == 209)
{
LEFT_MOTOR = 195;
}
if (p1_y == 210)
{
LEFT_MOTOR = 195;
}
if (p1_y == 211)
{
LEFT_MOTOR = 195;
}
if (p1_y == 212)
{
LEFT_MOTOR = 195;
}
if (p1_y == 212)
{
LEFT_MOTOR = 195;
}
if (p1_y == 213)
{
LEFT_MOTOR = 195;
}
if (p1_y == 214)
{
LEFT_MOTOR = 205;
}
if (p1_y == 215)
{
LEFT_MOTOR = 205;
}
if (p1_y == 216)
{
LEFT_MOTOR = 205;
}
if (p1_y == 217)
{
LEFT_MOTOR = 205;
}
if (p1_y == 218)
{
LEFT_MOTOR = 205;
}
if (p1_y == 219)
{
LEFT_MOTOR = 205;
}
if (p1_y == 220)
{
LEFT_MOTOR = 205;
}
if (p1_y == 221)
{
LEFT_MOTOR = 205;
}
if (p1_y == 222)
{
LEFT_MOTOR = 205;
}
if (p1_y == 223)
{
LEFT_MOTOR = 205;
}
if (p1_y == 224)
{
LEFT_MOTOR = 215;
}
if (p1_y == 225)
{
LEFT_MOTOR = 215;
}
if (p1_y == 226)
{
LEFT_MOTOR = 215;
}
if (p1_y == 227)
{
LEFT_MOTOR = 215;
}
if (p1_y == 228)
{
LEFT_MOTOR = 215;
}
if (p1_y == 229)
{
LEFT_MOTOR = 225;
}
if (p1_y == 230)
{
LEFT_MOTOR = 225;
}
if (p1_y == 231)
{
LEFT_MOTOR = 225;
}
if (p1_y == 232)
{
LEFT_MOTOR = 225;
}
if (p1_y == 233)
{
LEFT_MOTOR = 225;
}
if (p1_y == 234)
{
LEFT_MOTOR = 235;
}
if (p1_y == 235)
{
LEFT_MOTOR = 235;
}
if (p1_y == 236)
{
LEFT_MOTOR = 235;
}
if (p1_y == 237)
{
LEFT_MOTOR = 235;
}
if (p1_y == 238)
{
LEFT_MOTOR = 235;
}
if (p1_y == 239)
{
LEFT_MOTOR = 245;
}
if (p1_y == 240)
{
LEFT_MOTOR = 245;
}
if (p1_y == 241)
{
LEFT_MOTOR = 245;
}
if (p1_y == 242)
{
LEFT_MOTOR = 245;
}
if (p1_y == 243)
{
LEFT_MOTOR = 245;
}
if (p1_y == 244)
{
LEFT_MOTOR = 245;
}
if (p1_y == 245)
{
LEFT_MOTOR = 245;
}
if (p1_y == 246)
{
LEFT_MOTOR = 250;
}
if (p1_y == 247)
{
LEFT_MOTOR = 250;
}
if (p1_y == 248)
{
LEFT_MOTOR = 250;
}
if (p1_y == 249)
{
LEFT_MOTOR = 250;
}
if (p1_y == 250)
{
LEFT_MOTOR = 250;
}
if (p1_y == 251)
{
LEFT_MOTOR = 251;
}
if (p1_y == 252)
{
LEFT_MOTOR = 252;
}
if (p1_y == 253)
{
LEFT_MOTOR = 253;
}
if (p1_y == 254)
{
LEFT_MOTOR = 254;
}
if (p1_y == 255)
{
LEFT_MOTOR = 255;
}
|
|
#3
|
||||
|
||||
|
Re: Joystick Input Mapping
Um, hmm, well your getting kinda the idea, but we can replace the ifs with something smaller. Here is the code:
Put this code outside of a function (it's a long story why it needs to be outside of a function): char curve[] = { 0, 1, 2, 4, 5, 5, 5, 5, 5, 10, 10, 10, 10, 10, 10, 10, 20, 20, 20, 20, 20, 30, 30, 30, 30, 40, 40, 40, 40, 40, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 130, 130, 135, 135, 135, 135, 135, 135, 135, 135, 135, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 145, 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 215, 215, 215, 215, 215, 225, 225, 225, 225, 225, 235, 235, 235, 235, 235, 245, 245, 245, 245, 245, 245, 245, 250, 250, 250, 250, 250, 251, 252, 253, 254, 255, 255, 255 }; Now in your function, replace all the if statements with: LEFT_MOTOR = curve[p1_y]; The right motor will look like this: RIGHT_MOTOR = curve[p2_y]; This make the p1_y into the index of the table that is in ram. The value of the table at the index p1_y will be put into LEFT_MOTOR. You may get a linker error about being out of space if you are using MC18. If you do, find your .lkr file and open it up in MPLAB. Find the section that looks like this: DATABANK NAME=gpr0 START=0x60 END=0xFF PROTECTED DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF DATABANK NAME=gpr3 START=0x300 END=0x3FF DATABANK NAME=gpr4 START=0x400 END=0x4FF DATABANK NAME=gpr5 START=0x500 END=0x5FF DATABANK NAME=gpr6 START=0x600 END=0x6FF DATABANK NAME=gpr7 START=0x700 END=0x7FF DATABANK NAME=gpr8 START=0x800 END=0x8FF DATABANK NAME=gpr9 START=0x900 END=0x9FF DATABANK NAME=gpr10 START=0xA00 END=0xAFF DATABANK NAME=gpr11 START=0xB00 END=0xBFF DATABANK NAME=gpr12 START=0xC00 END=0xCFF Delete one of the lines and add 100 to the end of the line above it. Here is mine where I delete grp2 and add 100 to grp1's end tag: DATABANK NAME=gpr0 START=0x60 END=0xFF PROTECTED DATABANK NAME=gpr1 START=0x100 END=0x2FF DATABANK NAME=gpr3 START=0x300 END=0x3FF DATABANK NAME=gpr4 START=0x400 END=0x4FF DATABANK NAME=gpr5 START=0x500 END=0x5FF DATABANK NAME=gpr6 START=0x600 END=0x6FF DATABANK NAME=gpr7 START=0x700 END=0x7FF DATABANK NAME=gpr8 START=0x800 END=0x8FF DATABANK NAME=gpr9 START=0x900 END=0x9FF DATABANK NAME=gpr10 START=0xA00 END=0xAFF DATABANK NAME=gpr11 START=0xB00 END=0xBFF DATABANK NAME=gpr12 START=0xC00 END=0xCFF Then it should link. -Jim Last edited by JimWright949 : 24-04-2008 at 22:18. |
|
#4
|
||||
|
||||
|
Re: Joystick Input Mapping
Curious, I was never successful in putting this kind of mapping on one controller, and we had an issue where one of the people, our next best driver, had to fill in at nationals, but he was really good wit one control joystick, so how would you map the curve for one joystick, for both motors, is it the same and you just say:
RIGHT_MOTOR = p1_y; LEFT_MOTOR = p1_y; then use the curve above? or do you do something different?? |
|
#5
|
||||
|
||||
|
Re: Joystick Input Mapping
Hmm, at this point what I would have you do, is put the robot up on blocks and download the code to it to see what happens. However since I'm not near you, I can't have you do that.
What your code will do is just move the robot forward or backward, there will not be any turning. To turn you can copy some code. If you are using the FrcCode_2007_8722 code base from the ifi site, find the user_routines.c file, and on line 238 you will find this code: /*---------- 1 Joystick Drive ---------------------------------------------- *-------------------------------------------------------------------------- * This code mixes the Y and X axis on Port 1 to allow one joystick drive. * Joystick forward = Robot forward * Joystick backward = Robot backward * Joystick right = Robot rotates right * Joystick left = Robot rotates left * Connect the right drive motors to PWM13 and/or PWM14 on the RC. * Connect the left drive motors to PWM15 and/or PWM16 on the RC. */ p1_x = 255 - p1_y; p1_y = 255 - pwm05; pwm13 = pwm14 = Limit_Mix(2000 + p1_y + p1_x - 127); pwm15 = pwm16 = Limit_Mix(2000 + p1_y - p1_x + 127); This maps one joystick to two motors (really four but two are the same). After these lines add: pwm13 = curve[pwm13]; pwm14 = curve[pwm14]; pwm15 = curve[pwm15]; pwm16 = curve[pwm16]; That will give you the one joystick drive and the curve that you want. You will have to add the curve array from my post above to the code, put it somewhere like line 31 which is outside of functions. -Jim |
|
#6
|
||||
|
||||
|
Re: Joystick Input Mapping
Okay, well as soon as our robot gets back from Atlanta, and I am aloud to go program on it, I will post up on this thread what happened using the curve way you described to me earlier, ty for all the advice, I have been having real problems with this lately.
|
|
#7
|
|||
|
|||
|
Re: Joystick Input Mapping
1075 has always done the floating point operations on the fly in our controller, but our CPU isnt doing much (any, really) difficult math so its no big deal... Though this year we discovered that we had been using the wrong equation for the curve for like 3 years... oops.
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Joystick Input for Rotation about Z-Axis | manderson5192 | Control System | 5 | 19-01-2008 18:48 |
| Joystick Input calibration in software | LieAfterLie | Programming | 3 | 14-02-2007 21:44 |
| issues limiting a joystick input | Unholy | Programming | 7 | 12-02-2006 19:53 |
| Change joystick to pwm mapping | Joe Lewis | Programming | 3 | 30-03-2005 19:27 |
| 2.5 is alive !!!! (input ! .. more input ! ) | Lloyd Burns | Programming | 2 | 14-01-2003 19:15 |