here is the code that lynx has. My question is why are they using Temp(3) and Temp(4) when the left joy is only Temp(5) and Temp(6)? I’ll try some stuff with this code, but the end result of the mixing is about what I need.
[code]'Work in progress!
LED con P0
;PS2 Controller / BotBoard I
DAT con P4
CMD con P5
SEL con P6
CLK con P7
;PS2 Controller / BotBoard II
;DAT con P12
;CMD con P13
;SEL con P14
;CLK con P15
temp1 var byte
index var byte
temp var byte(6)
cntr var byte
mode var byte
rhori var word
rvert var word
lhori var word
lvert var word
lservo var sword
rservo var sword
small var byte
large var byte
high CLK
test
low SEL
shiftout CMD,CLK,FASTLSBPRE,$1\8,$43\8,$0\8,$1\8,$0\8] ;Config Enable
high SEL
low SEL
shiftout CMD,CLK,FASTLSBPRE,$01\8,$44\8,$00\8,$01\8,$03\8,$00\8,$00\8,$00\8,$00\8] ;Set Mode and Fix(Analog
high SEL
pause 100
low SEL
shiftout CMD,CLK,FASTLSBPRE,$01\8,$4D\8,$00\8,$00\8,$01\8,$ff\8,$ff\8,$ff\8,$ff\8] ;Vibration Enable
high SEL
low SEL
shiftout CMD,CLK,FASTLSBPRE,$01\8,$4F\8,$00\8,$FF\8,$FF\8,$03\8,$00\8,$00\8,$00\8] ;Enable Pressure
high SEL
low SEL
shiftout CMD,CLK,FASTLSBPRE,$01\8,$43\8,$00\8,$00\8,$5A\8,$5A\8,$5A\8,$5A\8,$5A\8] ;Press_trans_start
high SEL
low SEL
shiftout CMD,CLK,FASTLSBPRE,$01\8,$43\8,$00\8,$00\8,$00\8,$00\8,$00\8,$00\8,$00\8] ;Config Exit
high SEL
main
’ This section find the mode the PSX controller is in.
low SEL
shiftout CMD,CLK,FASTLSBPRE,$1\8]
shiftin DAT,CLK,FASTLSBPOST,[mode\8]
high SEL
low SEL
shiftout CMD,CLK,FASTLSBPRE,$1\8,$42\8]
for index = 0 to 2
shiftin DAT,CLK,FASTLSBPOST,[temp(index)\8]
next
high SEL
low SEL
shiftout CMD,CLK,FASTLSBPRE,$1\8,$42\8,$0\8,small\8,large\8]
for index = 3 to 6
shiftin DAT,CLK,FASTLSBPOST,[temp(index)\8]
next
high SEL
’ This section does the mixing for throttle steering on a diff steered vehicle.
rhori = (255 + temp(3))
rvert = (255 + temp(4))
lhori = (255 + temp(5))
lvert = (255 + temp(6))
lservo = 383 + ((lhori-383) + (lvert-383))
rservo = 383 + ((lvert-383) - (lhori-383))
if lservo < 255 then
lservo = 255
endif
if lservo > 510 then
lservo = 510
endif
if rservo < 255 then
rservo = 255
endif
if rservo > 510 then
rservo = 510
endif
lservo = 4 * (lservo - 383)
rservo = 4 * (rservo - 383)
’ The following can be used as a debug to see the values of the joysticks and buttons.
’ serout S_OUT,i57600,[13]
’ for index = 1 to 6
’ serout S_OUT,i57600," ",dec3 temp(index)\3]
’ next
’ serout S_OUT,i57600," “,dec3 rhori\3]
’ serout S_OUT,i57600,” ",dec3 rvert\3]
’ serout S_OUT,i57600," LH “,dec3 lhori\3]
’ serout S_OUT,i57600,” LV “,dec3 lvert\3]
’ serout S_OUT,i57600,” LS “,sdec3 lservo\6]
’ serout S_OUT,i57600,” RS ",sdec3 rservo\6]
’ The following code relates to the internal vibrator motors and is not used in this application.
small = 0 'temp(7)
large = 0 'temp(8)
’ This section is where the servo style motor controller is directed.
servo 0, lservo, 1
servo 1, rservo, 1
goto main
[/code]