PIC programming

Status
Not open for further replies.

Nilanka Pushpakumara

Newbie level 1
Joined
Jul 26, 2015
Messages
0
Helped
0
Reputation
0
Reaction score
0
Trophy points
0
Activity points
0
I.m currently working in a line folowweing robot.I want to read 3 IR sensors.please can anyone tell me how to edit my following code

int leftsensor=0;
int middlesensor=0;
int rightsensor=0;
int lefsenval=60;
int midsenval=60;
int rigsenval=60;
PWM1_Init();

int goforward()
{
PWM1_Set_Duty(255);
PORTC.F0=0; //4y=0; rightside motor
PORTC.F1=1; //3y=1;
PORTC.F2=0; //1y=0 leftsidemotor
PORTC.F3=1; //2y=1
}
int turnleft()
{ PWM1_Set_Duty(127);
PORTC.F0=0; //4y=0; rightside motor
PORTC.F1=1; //3y=1;
PORTC.F2=1; //1y=1 leftsidemotor
PORTC.F3=0; //2y=0
}
int turnright()
{ PWM1_Set_Duty(127);
PORTC.F0=1; //4y=1; rightside motor
PORTC.F1=0; //3y=0;
PORTC.F2=0; //1y=0 leftsidemotor
PORTC.F3=1; //2y=1
}
int stop()
{
PORTC.F0=0; //4y=0; rightside motor
PORTC.F1=0; //3y=0;
PORTC.F2=0; //1y=0 leftsidemotor
PORTC.F3=0; //2y=0
}

void main() {

TRISA=0xff;
TRISC=0x00;
PORTA=0xff;
PORTC=0x00;
ADC_Init();
ADCON0=0x00;



leftsensor=ADC_Read(0);
middlesensor=ADC_Read(1);
rightsensor=ADC_Read(2);

while(1)
{
if(leftsensor<lefsenval)
{
while(middlesensor<midsenval)
{
middlesensor=ADC_Read(1);
turnleft();
}
leftsensor=ADC_Read(0);
}
else if(middlesensor<midsenval)
{
while((rightsensor<rigsenval)|| (leftsensor<lefsenval))
{
rightsensor=ADC_Read(2);
leftsensor=ADC_Read(0);
goforward();
}
middlesensor=ADC_Read(1);
}
else if(rightsensor<rigsenval)
{
while(middlesensor<midsenval)
{
middlesensor=ADC_Read(1);
turnright();
}
rightsensor=ADC_Read(2);
}
else if((leftsensor<lefsenval)&&(middlesensor<midsenval))
{
while(middlesensor<midsenval)
{
middlesensor=ADC_Read(1);
turnleft();
}
leftsensor=ADC_Read(0);
middlesensor=ADC_Read(1);
}
else if((rightsensor<rigsenval)&&(middlesensor<midsenval))
{
while(middlesensor<midsenval)
{
middlesensor=ADC_Read(1);
turnright();
}
rightsensor=ADC_Read(2);
middlesensor=ADC_Read(1);
}
else if((rightsensor<rigsenval)&&(middlesensor<midsenval)&&(leftsensor<lefsenval))
{
rightsensor=ADC_Read(2);
leftsensor=ADC_Read(0);
middlesensor=ADC_Read(1);
stop();
}
}
}
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…