2-Axis Joystick Documentation v1.1

Copyright © Parallax Inc. 2-Axis Joystick (#27800) v1.1 5/13/2010 Page 3 of 3
Advanced Circuit
This circuit creates two voltage dividers referenced to VDD (in this case 5 V), using a 2-channel ADC (in this
case the MCP3202) to read the voltages at the L/R and U/D pins using the code below. Caution: Do not
apply voltage to the L/R+ or U/D+ pins that exceeds the I/O pin voltage rating of the device you connect to
L/R or U/D, up to 10 VDC maximum. Ground<Analog voltage output at L/R and U/D<VDD.
BASIC Stamp
®
2 Program
' {$STAMP BS2}
' {$PBASIC 2.5}
CS PIN 0 ' Chip Select (MCP3202.1)
Clock PIN 1 ' Clock (MCP3202.7)
DataIn PIN 2 ' --> Data Out (MCP3202.6)
DataOut PIN 3 ' --> Data In (MCP3202.5)
Cnts2Mv CON $0139 ' x 1.22 (To Millivolts)
result0 VAR Word ' Conversion Result CH0
result1 VAR Word ' Conversion Result CH1
mVolts0 VAR Word ' Result0 --> mVolts
mVolts1 VAR Word ' Result1 --> mVolts
DEBUG CLS, "ADC CH 0:", CR, "Volts :", CR,
"ADC CH 1:", CR, "Volts :"
DO
LOW CS ' Enable ADC
SHIFTOUT DataOut, Clock, MSBFIRST, [%1101\4] ' Select CH0, Single-Ended
SHIFTIN DataIn, Clock, MSBPOST, [result0\12] ' Read ADC
HIGH CS ' Disable ADC
mVolts0 = result0 */ Cnts2Mv ' Convert To Millivolts
LOW CS ' Enable ADC
SHIFTOUT DataOut, Clock, MSBFIRST, [%1111\4] ' Select CH1, Single-Ended
SHIFTIN DataIn, Clock, MSBPOST, [result1\12] ' Read ADC
HIGH CS ' Disable ADC
mVolts1 = result1 */ Cnts2Mv ' Convert To Millivolts
DEBUG HOME, CRSRXY, 9, 0, DEC result0, CLREOL,
CRSRXY, 9, 1, DEC mVolts0 DIG 3,
".", DEC3 mVolts0,
CRSRXY, 9, 2, DEC result1, CLREOL,
CRSRXY, 9, 3, DEC mVolts1 DIG 3,
".", DEC3 mVolts1
PAUSE 100
LOOP