You are on page 1of 2

//Line Following Robot

//By Lee Kam Wah B020610093


//And Chuan Wen Sheng B020610199
#include <16f877a.h>
#fuses hs, noprotect, nowdt, nolvp
#use delay (clock=20000000)
#byte portc=7
#byte portd=8
#byte porte=9
void main()
{
set_tris_e(0x07);
set_tris_d(0);
setup_ccp1(ccp_pwm);
setup_ccp2(ccp_pwm);
setup_timer_2(t2_div_by_4,100,1);
//white = 1; black =0
while(true)
{
if(!input(pin_E2) && !input(pin_E1) && input(pin_E0))
{
portd=0x0A;
set_pwm1_duty(40);
//pwm1 control left motor
set_pwm2_duty(90);
//pwm2 control right motor
}
if(!input(pin_E2) && input(pin_E1) && input(pin_E0))

//Turn Left (001)

//Turn Left 2 (01

1)
{
portd=0x0A;
set_pwm1_duty(40);
set_pwm2_duty(90);
}
if(input(pin_E2) && !input(pin_E1) && !input(pin_E0))

//Turn Right (100

)
{
portd=0x0A;
set_pwm1_duty(90);
set_pwm2_duty(40);
}
if(input(pin_E2) && input(pin_E1) && !input(pin_E0))

//Turn Right 2 (1

10)
{
portd=0x0A;
set_pwm1_duty(90);
set_pwm2_duty(40);
}
if(!input(pin_E2) && !input(pin_E1) && !input(pin_E0))
{
portd=0x0A;
set_pwm1_duty(85);

//Forward (000)

set_pwm2_duty(85);
}
if(input(pin_E2) && input(pin_E1) && input(pin_E0))
{
portd=0x14;
set_pwm1_duty(85);
set_pwm2_duty(85);
}
}
}

//backward(111)

You might also like