Code:
DEFINE osc 4
ANSEL = %00000111 ' Make AN0-AN7 Analog
ANSELH= %00000000 ' Make AN8-AN13 digital
TRISA = %00111111
ADCON1 = %00001001
TRISC = 0
TRISD = 0
TRISB = 0
;-------------Variables
senCenter var byte
senRight var byte
senLeft var byte
i var word
i = 0
PORTD.0 = 1 ' In1
PORTD.1 = 0 ' In2
PORTB.0 = 1 ' In3
PORTB.1 = 0 ' In4
; PORTC.4 PWM Signal
loop1:
Adcin 0, senCenter
Adcin 1, senRight
Adcin 2, senLeft
;Serout2 PORTD.2, 84, [$1B,$45,Dec senCenter," ", DEc senRight," ",Dec senLeft]
;------------------------Select options seen by the sensors
IF senCenter > 150 and senRight > 150 then
Gosub movExtRight
Endif
IF senCenter > 150 and senLeft > 150 then
Gosub movExtLeft
Endif
IF senCenter > 150 then
;Serout2 PORTD.2, 84, [$1B,$45]
;Serout2 PORTD.2, 84, [$D," Center"]
gosub movForward
Endif
IF senRight > 150 then
;Serout2 PORTD.2, 84, [$1B,$45]
;Serout2 PORTD.2, 84, [$D,"Rigth"]
gosub movRight
Endif
IF senLeft > 150 then
;Serout2 PORTD.2, 84, [$1B,$45]
;Serout2 PORTD.2, 84, [$D," Left"]
gosub movLeft
Endif
;------------------------
;gosub movForward
GOTO loop1 ' Do it forever
END
movForward: ' forward
PORTD.0 = 1 ' In1
PORTD.1 = 0 ' In2
PORTB.0 = 1 ' In3
PORTB.1 = 0 ' In4
PWM PORTC.4 ,200,10
PWM PORTC.5 ,200,10
return
movExtRight: ' turn more to the right
PWM PORTC.4 ,50,10
PWM PORTC.5 ,200,10
return
movRight: ' short right
PWM PORTC.4 ,100,10
PWM PORTC.5 ,200,10
return
movLeft: ' short left
PWM PORTC.4 ,200,10
PWM PORTC.5 ,100,10
return
movExtLeft: ' turn more to the left
PWM PORTC.4 ,200,10
PWM PORTC.5 ,50,10
return
senLost: ' Getback no line detected
PORTD.0 = 0 ' In1
PORTD.1 = 1 ' In2
PORTB.0 = 0 ' In3
PORTB.1 = 1 ' In4
PWM PORTC.4 ,200,5
PWM PORTC.5 ,200,5
pause 50
return
Thanks in advance,
Bookmarks