You are on page 1of 4

//

//
//
//
//

Project name
Compile Date
Complied by
Designed By

:
:
:
:

5 sensor lfr
28/03/2013 Time : (13:10)
Pradeep Kumar Sharma (Pradeep.elcom@gmail.com)
ROBOSAPIENS TECHNOLOGIES PVT. LTD
http://www.robosapiensindia.com

/* Program for "BLACK_LINE_FOLLOWER/Follows black path using 2 IR Sensors connec


ted on PC0 and PC3"
________________________________________________________________________________
___________________
Connection Settings of the Kit
LEDs---@------------->PB1
LEDs---@------------->PB2
LEDs---@------------->PB3
LEDs---@------------->PB4
Left Sensor---------->PC3
Right Sensor--------->PC0
Buzzer--------------->PD4
SOUND SENSOR--------->PB0
RIGHT MOTOR(+)------->PB1
RIGHT MOTOR(-)------->PB2
LEFT MOTOR(-)-------->PB3
LEFT MOTOR(+)-------->PB4
BOOTLoader Condition Check----->PC5(If 0 bootloader section else program executi
on
section of Flash mem
ory)
RESET-------------------------->PC6
Crystal Ossilator-------------->PB6 and PB7
VB=Battery Supply
VCC=regulated 5V+
Gnd=Ground(0V)
*/
#include<avr/io.h>
void main()
{
DDRC=0b0000000; // set PORTC as input port
DDRB=0b00011110; // PB1, PB2, PB3, PB4 as output port
int ls1=0, rs1=0, ls2=0, rs2=0, ms=0; // define & initialize ls, rs integer
as 0 to
// acquire the left sensor status
in ls and right sensor
// status in rs
while(1)
{

// create infinite loop

rs1=(PINC&0b0000001);
rs2=(PINC&0b0000010);
ms=(PINC&0b0010000);

// acquire only left sensor status connected at

PC0
ls1=(PINC&0b0001000);
t PC3
ls2=(PINC&0b0000100);

// acquire only right sensor status connected a

if((rs1==0b0000000)&(ls1==0b0000000)&(rs2==0b0000000)&(ls2==0b00
00000)) // check sensor status for both sensor OFF
{
if(ms==0b0010000)
{
PORTB=0b00010000; //right
}
if(ms==0b0000000)
{
PORTB=0b00010010; //forward
}
}
if((rs1==0b0000001)&(ls1==0b0000000)&(ls2==0b0000000)&(rs2==0b00
00000)) // check sensor status for right sensor=ON and
{
PORTB=0b00001010;

// acute left

}
if((rs1==0b0000000)&(ls1==0b0000000)&(rs2==0b0000010)&(ls2==0b00
00000)) //check sensor status for left sensor=OFF and
// right sensor=ON
{
_delay_ms(500);

//delay

if((rs1==0b0000001)&&(ls1==0b0000000)&(rs2==0b0000010)&(ls2==0b0000000))
// check sensor status for both sensor ON
{
PORTB=0b00000010;

// 90deg left

}
if((rs1==0b0000000)&&(ls1==0b0000000)&(rs2==0b0000000)&(ls2==0b0
000100)) // check sensor status for both sensor ON
{
_delay_ms(500);

//delay

}
if((rs1==0b0000001)&&(ls1==0b0000000)&(rs2==0b0000000)&(ls2==0b0
000100)) // check sensor status for both sensor ON
{
_delay_ms(500);
}

//delay

if((rs1==0b0000000)&&(ls1==0b0000000)&(rs2==0b0000010)&(ls2==0b0
000100)) // check sensor status for both sensor ON
{
_delay_ms(500);

//delay

}
if((rs1==0b0000001)&&(ls1==0b0000000)&(rs2==0b0000010)&(ls2==0b0
000100)) // check sensor status for both sensor ON
{
PORTB=0b00001010;

// acute left

}
if((rs1==0b0000000)&&(ls1==0b0001000)&(rs2==0b0000000)&(ls2==0b0
000000)) // check sensor status for both sensor ON
{
PORTB=0b00010100;

// acute right

}
if((rs1==0b0000001)&&(ls1==0b0001000)&(rs2==0b0000000)&(ls2==0b0
000000)) // check sensor status for both sensor ON
{
_delay_ms(500);

//delay

}
if((rs1==0b0000000)&&(ls1==0b0001000)&(rs2==0b0000010)&(ls2==0b0
000000)) // check sensor status for both sensor ON
{
_delay_ms(500);

//delay

}
if((rs1==0b0000001)&&(ls1==0b0001000)&(rs2==0b0000010)&(ls2==0b0
000000)) // check sensor status for both sensor ON
{
PORTB=0b00000010;

// slight left

}
if((rs1==0b0000000)&&(ls1==0b0001000)&(rs2==0b0000000)&(ls2==0b0
000100)) // check sensor status for both sensor ON
{
PORTB=0b00010000;

// 90deg right

}
if((rs1==0b0000001)&&(ls1==0b0001000)&(rs2==0b0000000)&(ls2==0b0
000100)) // check sensor status for both sensor ON
{

PORTB=0b00010000;

// slight right

}
if((rs1==0b0000000)&&(ls1==0b0001000)&(rs2==0b0000010)&(ls2==0b0
000100)) // check sensor status for both sensor ON
{
PORTB=0b00010000;

// 90deg right

}
if((rs1==0b0000000)&&(ls1==0b0000000)&(rs2==0b0000010)&(ls2==0b0
000100)) // check sensor status for both sensor ON
{
if(ms==0010000)
{
_delay_ms(500);
//delay
}
if(ms==0000000)
{
PORTB=0b00010010; // forward
}
}
}
}

You might also like