AVR 초음파센서 카트
본 자료는 7페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
해당 자료는 7페이지 까지만 미리보기를 제공합니다.
7페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

AVR 초음파센서 카트에 대한 보고서 자료입니다.

본문내용

기억에서 지워버리자~
count=0; //카운터 0으로 떨궈주고
clrcnt=0; //클리어카운터도 0으로 떨궈줌
}
}//뭐 아직도 돌아오는 중이면 제낌.
}
//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9600 (0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x02;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x8F; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x08;
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer0_init();
timer1_init();
uart0_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x05; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
void delay(int n) //딜레이 함수
{
volatile int i,j;
for(i=1;i {
for(j=1;j<600;j++);
}
}
void main(void)
{
int flag=0,slr=0,spd=60,INPUT,dtcnt=0,dt=20;
init_devices();
delay(10);
INPUT=0;
while(1)
{
INPUT=(PINA>>2); //인풋 변수에 입력된 리모컨값을 넣음.
if(dist_buff>3)fflag=0; //만약 거리가 3보다 크면 초음파 플래그는 0
if(dist_buff<2)fflag=1; //거리가 2보다 작으면 1.
if(fflag==0) //장애물과 거리가 멀거나 장애물이 없으면
{
if(flag==0) //스위치 입력 딜레이가 끝나면
{
switch(INPUT) //들어간값이
{
case 0x01 : //첫번째 버튼이면
spd=60;break; //spd=60..정지하란 소리.
case 0x02 : //두번째 버튼.
spd=spd+2;break; // 속도를 2 늘림
case 0x08 :
slr=-1;break; //네번째 버튼이 눌리면 좌회전
case 0x10 :
spd=spd-2;break; //다섯번째 버튼은 속도를 2 줄임.
case 0x20 :
slr=1;break; //여섯번째 우회전
default :
slr=0;break; //아무것도 안눌리면 앞으로 감
}
INPUT=0; //인풋값 초기화
flag=1; //입력 딜레이를 주기위한 플래그
}
if(spd==120)spd=119; //스피드가 0~120범위를 벗어나지 못하게 함
if(spd<0)spd=0;
if(flag==1)dtcnt++; //입력플래그가 1이면 dtcnt를 늘려줌. 입력값에 딜레이를 약간 먹여주기 위한 루틴입니다.
if(dtcnt>1000){dtcnt=0;flag=0;} //dtcnt가 1000이 넘으면 0으로 초기화 시켜주면서 플래그 OFF
if(spd>=60) //스피드가 60 이상이면
{
if(slr==0) //직진
{
if((spd-60)>tcnt){Left_MOT_ON;Right_MOT_ON;} //스피드에서60을 뺀값이 tcnt보다 크면 바퀴 돌리고
else {Left_MOT_OFF;Right_MOT_OFF;} // 작으면 정지 (PWM방식 속도제어. 이하상동)
}
else if(slr==-1) //좌회전
{
if(((spd-60)/3)>tcnt){Left_MOT_ON;} //좌측 바퀴 속도를 1/3로 낮춤
else {Left_MOT_OFF;}
if((spd-60)>tcnt){Right_MOT_ON;} //우측은 속도 그대로
else {Right_MOT_OFF;}
}
else if(slr==1) //우회전. 좌회전과 마찬가지. 우측바퀴 속도 줄임
{
if((spd-60)>tcnt){Left_MOT_ON;}
else {Left_MOT_OFF;}
if(((spd-60)/3)>tcnt){Right_MOT_ON;}
else {Right_MOT_OFF;}
}
}
if(spd<60) //후진
{
if(slr==0) //직진(?)
{
if((60-spd)>tcnt){Left_MOT_BACK;Right_MOT_BACK;} //그냥 뒤로 감.
else {Right_MOT_OFF;Left_MOT_OFF;}
}
else if(slr==-1) //좌회전
{
if((60-spd)>tcnt){Left_MOT_BACK;} //직진과 반대로 우측바퀴 속도 줄임
else {Left_MOT_OFF;}
if(((60-spd)/3)>tcnt){Right_MOT_BACK;}
else {Right_MOT_OFF;}
}
else if(slr==1) //우회전
{
if(((60-spd)/3)>tcnt){Left_MOT_BACK;} //좌측바퀴 속도 줄임
else {Left_MOT_OFF;}
if((60-spd)>tcnt){Right_MOT_BACK;}
else {Right_MOT_OFF;}
}
}
}
else if(fflag==1) //장애물과 만났으면
{
Left_MOT_ON; //좌측모터 돌리고 우측모터 뒤로 돌림
Right_MOT_BACK; //무조건 우회전
}
}
}
[출처] 초음파 센서 이용 급조 카트|작성자 유리한
동영상
http://serviceapi.nmv.naver.com/flash/NFPlayer.swf?vid=1690722D49091DB241A448D72747E304CE6E&outKey=V128d931069098a07b6d14b65aa6201c810c88a4c3928839f22754b65aa6201c810c8
  • 가격3,000
  • 페이지수20페이지
  • 등록일2012.03.13
  • 저작시기2008.10
  • 파일형식한글(hwp)
  • 자료번호#780224
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니