Page 89 - Making PIC Microcontroller Instruments and Controllers
P. 89
t servofpotenriomerers
rrrree pore,ltiomere.s
llll]l: -5.. 1 corro,t,ns ore
servo: coine.l lhe servo ro Jurrpe. J7 lo.ft s p.ogra.r|t tContinued)
SERVO1 VAt PORTC.I alias servo pin
ADCIN O, A2D VII-UE
read channel 0 ro A2D Value
OPTION_REG E S01111111 enable PORTB pullups
IJOW SERVO1
servo outpur low
GOSUB CENTER
ITCDOUE $FE, 1 cLears screen only
poRTB = 0
PORTB lines 1ow ro read buttons
TRISB = %11111110
enable f,rst button rod
nain prosrar loop
!'AINIOOP:
check aay but. pressed ro
IF PORIB.4 = 0 TBEN GOS('B
IF PORIB.5 = 0 TEEN GOSITBCEN!ER
IF PORTB.6 = 0 THEN COSUB RIGIIT
a.Dcrar 0, a2D_vAIrnE
read channel 0 to a2D_Value
ADCIN 1. A2D_VAIUEI
read channeL 1to A2D_vatue 1
ADCIN 3, A2D_VAI,I'E2
read channet 2 to AZD Vatue 2
MAXPOS =1500 + A2D-VALUE1*3
MINPOS =1500 - A2D-v!!UEt*3
CENTERPOS=1500+3* (A2D_vaJ)vE_
I27
POSSIEP =A2D VATUE2/1O +1
SERVO1 = 1 start servo putse
PAUSEUS POS
SERVOI = 0 end serwo pulse
I]CDOUT $FEI $80, \POS=-, DEC pOS
IJCDOUE $FE, $CO, DEC A2D VATUE, / \,DEC A2D VAIrtEl,/ s
POSSTEP, a \ , DEC_
PAUSE 10
; servo update rate about 60 Hz
GOTO !'AINI]OOP
; do ir all forever
; move servo Lefr
LEFT: IF POS < llA)(POS THEN pOS = pOS + POSSTEp
RETURN
. v o . ^
- - _ . o ! : q .
RIGHT: IF POS > UTAIPOS TIIEN POS = POS - POSSTE'
RETURN
CENTER3 POS = 150 0+3* (A2D VA',IIE_127)
REEUXN
END
, end proqran
Exercises
Carlion: Thinking requiredl
An.q e^ ro lh.4e probjem\ dn Mt prc, ida1. there are no unrque .oturion\.
rlr(e mcunp Innrumenl. rnd ronlroller, i, rcdll) allabour input. and ouFul, and
what you do wirh them, a comprehensive
ser of exelc;*.,fr" t-, .p*in""fiy J, i"p"i"
ancl outputs are prorided.