- Programming is the next step that you should do after building your line follower. This is a sample of the programming for line follower robot that are using PIC16877A microcontroller. This program can be use for the circuit on my previous post Line Follower Robot. If you haven’t already read it, I suggest you read it before going any further in this post.
__CONFIG(0x3732);
void main ()
{ int
x; //declare
variable x as integer type
TRISD
= 0b00000000; //select
port D as output for motor direction and LED
TRISC
= 0b00000000; //select
port C as output for motor enable
PORTC
= 0b00000000;
PR2
= 249; //set
period = 200µs @ frequency = 5 kHz
T2CON
= 0b00000111; //timer
2 ON, prescaler is 16
CCP1CON
= 0b00001100; //set CCP1 as PWM mode
CCP2CON
= 0b00001100; //set CCP2 as PWM mode
CCPR1L
= 249; //set
duty cycle = 100%
CCPR2L
= 249; //
set duty cycle = 100%
CMCON
= 0b00000110; //set for
internal voltage reference
CVRCON
= 0b11101001; //set Vref
= 3.125 volts
while(1)
{ if(C1OUT==1 && C2OUT==1){ //if both sensor detect white area
CCPR1L
= 113; //set
duty cycle = 45%
CCPR2L
= 118; //set
duty cycle = 47%
PORTD
= 0b00000110;} //robot is straight
on the line, robot
move straight forward
else
if(C1OUT==1 && C2OUT==0){ //sensor
1 detect white area while
sensor 2 detect black area
CCPR1L
= 165; //set
duty cycle = 66%
CCPR2L
= 165; //set
duty cycle = 66%
PORTD=0b10001010;} //robot steers to the left
else
if(C1OUT==0 && C2OUT==1){ //sensor
1 detect black area while
sensor 2 detect white area
CCPR2L
= 165; //set
duty cycle = 66%
CCPR1L
= 165; //set
duty cycle = 66%
PORTD=0b10000101;} //robot steers to the right
else
if(C1OUT==0 && C2OUT==0){ //both
sensor detect black area
PORTD=0b00000000;} //robot will stop moving
}
}
0 comments: