초음파센서를 이용한 장애물 회피 자동차
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

초음파센서를 이용한 장애물 회피 자동차에 대한 보고서 자료입니다.

목차

Ⅰ. 서론
(1) 작품 개요 ---------------------- p.2
(2) 구현 목표 ---------------------- p.2

Ⅱ. 기초 자료
(1) 계획 및 일정 -------------------- p.3
(2) 블록다이어그램 -------------------- p.3
(3) 부품 상세 -------------------- p.4

Ⅲ. 작품 기능
(1) 회로도 ----------------------- p.17
(2) 작품 설계 ---------------------- p.18
(3) 흐름도 ---------------------- p.21

Ⅳ. 실 험
(1) SRF04 초음파 센서 거리값 측정 ---------- p.26

Ⅴ. 결과 고찰 ----------------------- p.27

Ⅵ. 결 론 ------------------------- p.29

Ⅶ. 참고 문헌 ------------------------ p.30

Ⅷ. 부 록
(1) 전체 회로도 ------------------- p.31
(2) 프로그램 소스 ------------------ p.32

본문내용

터 방향 설정 포트
PORTB.4 = 1; // 오른쪽 모터 인에이블
PORTB.3 = 1; // 왼쪽 모터 인에이블
DDRF = 0xFF; // LED 출력
PORTC = 0x00;
PORTD = 0x00;
cm = 0;
cm_left = 0;
cm_right = 0;
cm_center = 0; //측정 거리 변수
state =0; //초음파 센서 상태 변수
move_state =0; // 로봇 상태 변수
}
///////////////////////////////////////////// 타이머 설정 부분
void timer1_init() //트리거 신호 출력 주기 50ms, 하이 신호 12us출력
{
TCCR1A = 0xAA; //모드 14, 출력 OC1A(PB5),OC1B(PB6)
TCCR1B = 0x1C; //256분주
ICR1 = 0x061a; //100ms 주기
OCR1A = 0x0003; //12us : INT7
OCR1B = 0x0003; //12us : INT4
OCR1CH = 0x00; //12us : INT5
OCR1BL = 0x03; //12us : INT5
}
void timer3_init()
//Echo 신호 체크, 1cm = 5.941 카운트, 58.5125us마다 인터럽트발생
{
TCCR3B = 0x01; //기본 모드.
TCNT3H = 0xFC;
TCNT3L = 0x52;
}
//////////////////////////////////////////////////////// 인터럽트 설정 부분
void send_data1() //INT7 걸릴때 (왼쪽 센서)
{
cm_left = cm;
}
void send_data2() //INT4 걸릴때 (앞 센서)
{
cm_center = cm;
}
void send_data3() //INT5 걸릴때 (오른쪽 센서)
{
cm_right = cm;
}
void SelectMove();
void main(void) /////////////////////////////////////////////////////////// 메인
{
delay_ms(1000);
TestLED();
port_set(); // 포트 설정
timer1_init(); // 타이머1 초기화
timer3_init(); // 타이머3 초기화
#asm("sei") // 전역 인터럽트 인에이블
TestMove(); // 모터 테스트
delay_ms(1000);
Front();
while (1)
{
cm_left = 0; cm_right = 0; cm_center = 0;
//센서 측정
srf_01(); //INT7
srf_02(); //INT4
srf_03(); //INT5
SelectMove();
}
}
/* 200 => 15도 / 320 => 45도 / 650 => 90도 / 1500 => 180도 */
void SelectMove()
{
if(cm_center <= 7)
{
StopMove();
srf_02(); //INT4
srf_03(); //INT5
delay_ms(100);
//////////////////////////////////////////////////////////////////// ㄷ 자형 장애물
if( (cm_left<=6) && (cm_right<=6) )
{
do{
Back(1000);
srf_02(); //INT4
srf_03(); //INT5
}while((cm_right<=6) && (cm_left<=6));
StopMove();
srf_02(); //INT4
srf_03(); //INT5
if(cm_left>cm_right)
{
Left_turn(650);
StopMove();
Front();
return;
}
else if(cm_left {
Right_turn(650);
StopMove();
Front();
return;
}
else
TestLED();
}
//////////////////////////////////////////////////////// 전방 장애물 우측면 개방형
else if((cm_left<=5) || (cm_right >= 15))
{
Right_turn(320);
StopMove();
Front();
return;
}
else if((cm_left<=5) || (cm_right < 15))
{
Right_turn(1500);
StopMove();
Front();
return;
}
//////////////////////////////////////////////////////////// 전방 장애물 좌측면 개방형 else if((cm_right<=5) || (cm_left >= 15))
{
Left_turn(320);
StopMove();
Front();
return;
}
else if((cm_right<=5) || (cm_left < 15))
{
Left_turn(1500);
StopMove();
Front();
return;
}
else
TestLED();
}
////////////////////////////////////////////////////////////////// 벽면 따라 주행하기
else if( (cm_center>=6)&&(cm_left<=4)&&(cm_right<=4) )
{
StopMove();
Front();
return;
}
////////////////////////////////////////////////////////////////좌측면 장애물 피하기
else if(cm_left<4)
{
Right_turn(200);
Front();
return;
}
////////////////////////////////////////////////////////////////우측면 장애물 피하기
else if(cm_right<4)
{
Left_turn(200);
Front();
return;
}
cm_left = 0; cm_right = 0; cm_center = 0;
Front();
}
  • 가격5,000
  • 페이지수40페이지
  • 등록일2009.11.20
  • 저작시기2009.11
  • 파일형식한글(hwp)
  • 자료번호#562049
본 자료는 최근 2주간 다운받은 회원이 없습니다.
  • 편집
  • 내용
  • 가격
청소해
다운로드 장바구니