목차
■서론
1.1 제작 배경
1.2 작품특징 및 개요
■본론
2.1 라인 트레이서의 블록선도
2.2 블록선도 세부설명
2.3 라인 트레이서 외형 설명
2.4 프로그램 순서도
2.5 알고리즘 설명
2.6 가감속 테이블
2.7 핸들 테이블
■ 결론
■ 부록
4.1 부품 리스트
4.2 참고 자료
4.3 전체 프로그램
1.1 제작 배경
1.2 작품특징 및 개요
■본론
2.1 라인 트레이서의 블록선도
2.2 블록선도 세부설명
2.3 라인 트레이서 외형 설명
2.4 프로그램 순서도
2.5 알고리즘 설명
2.6 가감속 테이블
2.7 핸들 테이블
■ 결론
■ 부록
4.1 부품 리스트
4.2 참고 자료
4.3 전체 프로그램
본문내용
ev=0;
}
break;
case 7 :
next=0;
break;
}
}
//
void tuning()
{
while(handle_make_flag)
{
mode_switch();
lcd_gotoxy(0,0);
lcd_putsf(" Handle ");
lcd_gotoxy(0,1);
sprintf(sbuf," %04u ",handle_num);
lcd_puts(sbuf);
if(next)
{
handle_num=handle_num+1;
next=0;
}
if(prev)
{
handle_num=handle_num-1;
prev=0;
}
if(select)
{
select=0;
handle_make();
handle_make_flag=FALSE;
tuning_start=TRUE;
}
}
while(adc_tuning)
{
mode_switch();
if(!select && !max_min_flag)
{
lcd_gotoxy(0,0);
lcd_putsf(" START ");
lcd_gotoxy(0,1);
lcd_putsf("Max Min");
}
else if(select && !max_min_flag)
{
max_min_sampling();
}
if(check_ch==8)
{
adc_tuning=FALSE;
tuning_start=TRUE;
select=0;
check_ch=0;
break;
}
}// adc 튜닝
while(check_adc_data)
{
if(!max_min_watch)
{
lcd_gotoxy(0,0);
sprintf(sbuf,"MAX%u=%03u",check_ch,max[check_ch]);
lcd_puts(sbuf);
lcd_gotoxy(0,1);
sprintf(sbuf,"MIN%u=%03u",check_ch,min[check_ch]);
lcd_puts(sbuf);
delay_ms(900);
check_ch++;
if(check_ch==8)
{
max_min_watch=1;
check_ch=0;
}
}
else if(max_min_watch)
{
lcd_gotoxy(0,0);
sprintf(sbuf,"Channel%u",check_ch);
lcd_puts(sbuf);
lcd_gotoxy(0,1);
if(check_ch==2 || check_ch==3 || check_ch==4 || check_ch==5)
{
sprintf(sbuf,"Dis%u=%03u",check_ch,dist[check_ch]);
lcd_puts(sbuf);
delay_ms(900);
}
else
{
sprintf(sbuf,"Avg%u=%03u",check_ch,avg[check_ch]);
lcd_puts(sbuf);
delay_ms(900);
}
check_ch++;
if(check_ch==8)
{
lcd_gotoxy(0,0);
lcd_putsf("Dist_TOT");
lcd_gotoxy(0,1);
sprintf(sbuf,"%08u",dist_total);
lcd_puts(sbuf);
delay_ms(700);
check_ch=0;
check_adc_data=FALSE;
tuning_start=TRUE;
}
}
}// adc 튜닝 데이터 확인
while(phase_tuning)
{
mode_switch();
lcd_gotoxy(0,0);
lcd_putsf("HowPhase");
lcd_gotoxy(0,1);
switch(next)
{
case 0 :
lcd_putsf(" 1-Phase");
if(select)
{
phase=0;
phase_tuning=FALSE;
tuning_start=TRUE;
select=0;
next=0;
}
if(prev)
{
next=2;
prev=0;
}
break;
case 1 :
lcd_putsf(" 2-Phase");
if(select)
{
phase=1;
phase_tuning=FALSE;
tuning_start=TRUE;
mark_count=7;
result_count=25;
not_count=70;
select=0;
next=0;
}
if(prev)
{
next=0;
prev=0;
}
break;
case 2 :
lcd_putsf("12-Phase");
if(select)
{
phase=2;
phase_tuning=FALSE;
tuning_start=TRUE;
max_speed=700;
mark_count=15;
result_count=50;
not_count=150;
select=0;
next=1;
}
if(prev)
{
next=1;
prev=0;
}
break;
}
}
while(speed_tuning)
{
mode_switch();
lcd_gotoxy(0,0);
lcd_putsf("MaxSPEED");
lcd_gotoxy(0,1);
sprintf(sbuf,"%05u ",max_speed);
lcd_puts(sbuf);
if(next)
{
max_speed=max_speed+5;
next=0;
}
if(prev)
{
max_speed=max_speed-5;
prev=0;
}
if(select)
{
select=0;
speed_tuning=FALSE;
tuning_start=TRUE;
}
}// 속도 튜닝
while(run_tuning)
{
mode_switch();
lcd_gotoxy(0,0);
lcd_putsf("How RUN?");
lcd_gotoxy(0,1);
switch(next)
{
case 0 :
lcd_putsf("0 Shift ");
if(select)
{
select=0;
next=0;
shift=0;
run_tuning=FALSE;
tuning_start=TRUE;
break;
}
if(prev)
{
next=1;
prev=0;
}
break;
case 1 :
lcd_putsf("1 Shift ");
if(select)
{
select=0;
next=0;
shift=1;
run_tuning=FALSE;
tuning_start=TRUE;
break;
}
if(prev)
{
next=0;
prev=0;
}
break;
case 3 :
next=0;
break;
}
}// 주행 선택
//
}
}
break;
case 7 :
next=0;
break;
}
}
//
void tuning()
{
while(handle_make_flag)
{
mode_switch();
lcd_gotoxy(0,0);
lcd_putsf(" Handle ");
lcd_gotoxy(0,1);
sprintf(sbuf," %04u ",handle_num);
lcd_puts(sbuf);
if(next)
{
handle_num=handle_num+1;
next=0;
}
if(prev)
{
handle_num=handle_num-1;
prev=0;
}
if(select)
{
select=0;
handle_make();
handle_make_flag=FALSE;
tuning_start=TRUE;
}
}
while(adc_tuning)
{
mode_switch();
if(!select && !max_min_flag)
{
lcd_gotoxy(0,0);
lcd_putsf(" START ");
lcd_gotoxy(0,1);
lcd_putsf("Max Min");
}
else if(select && !max_min_flag)
{
max_min_sampling();
}
if(check_ch==8)
{
adc_tuning=FALSE;
tuning_start=TRUE;
select=0;
check_ch=0;
break;
}
}// adc 튜닝
while(check_adc_data)
{
if(!max_min_watch)
{
lcd_gotoxy(0,0);
sprintf(sbuf,"MAX%u=%03u",check_ch,max[check_ch]);
lcd_puts(sbuf);
lcd_gotoxy(0,1);
sprintf(sbuf,"MIN%u=%03u",check_ch,min[check_ch]);
lcd_puts(sbuf);
delay_ms(900);
check_ch++;
if(check_ch==8)
{
max_min_watch=1;
check_ch=0;
}
}
else if(max_min_watch)
{
lcd_gotoxy(0,0);
sprintf(sbuf,"Channel%u",check_ch);
lcd_puts(sbuf);
lcd_gotoxy(0,1);
if(check_ch==2 || check_ch==3 || check_ch==4 || check_ch==5)
{
sprintf(sbuf,"Dis%u=%03u",check_ch,dist[check_ch]);
lcd_puts(sbuf);
delay_ms(900);
}
else
{
sprintf(sbuf,"Avg%u=%03u",check_ch,avg[check_ch]);
lcd_puts(sbuf);
delay_ms(900);
}
check_ch++;
if(check_ch==8)
{
lcd_gotoxy(0,0);
lcd_putsf("Dist_TOT");
lcd_gotoxy(0,1);
sprintf(sbuf,"%08u",dist_total);
lcd_puts(sbuf);
delay_ms(700);
check_ch=0;
check_adc_data=FALSE;
tuning_start=TRUE;
}
}
}// adc 튜닝 데이터 확인
while(phase_tuning)
{
mode_switch();
lcd_gotoxy(0,0);
lcd_putsf("HowPhase");
lcd_gotoxy(0,1);
switch(next)
{
case 0 :
lcd_putsf(" 1-Phase");
if(select)
{
phase=0;
phase_tuning=FALSE;
tuning_start=TRUE;
select=0;
next=0;
}
if(prev)
{
next=2;
prev=0;
}
break;
case 1 :
lcd_putsf(" 2-Phase");
if(select)
{
phase=1;
phase_tuning=FALSE;
tuning_start=TRUE;
mark_count=7;
result_count=25;
not_count=70;
select=0;
next=0;
}
if(prev)
{
next=0;
prev=0;
}
break;
case 2 :
lcd_putsf("12-Phase");
if(select)
{
phase=2;
phase_tuning=FALSE;
tuning_start=TRUE;
max_speed=700;
mark_count=15;
result_count=50;
not_count=150;
select=0;
next=1;
}
if(prev)
{
next=1;
prev=0;
}
break;
}
}
while(speed_tuning)
{
mode_switch();
lcd_gotoxy(0,0);
lcd_putsf("MaxSPEED");
lcd_gotoxy(0,1);
sprintf(sbuf,"%05u ",max_speed);
lcd_puts(sbuf);
if(next)
{
max_speed=max_speed+5;
next=0;
}
if(prev)
{
max_speed=max_speed-5;
prev=0;
}
if(select)
{
select=0;
speed_tuning=FALSE;
tuning_start=TRUE;
}
}// 속도 튜닝
while(run_tuning)
{
mode_switch();
lcd_gotoxy(0,0);
lcd_putsf("How RUN?");
lcd_gotoxy(0,1);
switch(next)
{
case 0 :
lcd_putsf("0 Shift ");
if(select)
{
select=0;
next=0;
shift=0;
run_tuning=FALSE;
tuning_start=TRUE;
break;
}
if(prev)
{
next=1;
prev=0;
}
break;
case 1 :
lcd_putsf("1 Shift ");
if(select)
{
select=0;
next=0;
shift=1;
run_tuning=FALSE;
tuning_start=TRUE;
break;
}
if(prev)
{
next=0;
prev=0;
}
break;
case 3 :
next=0;
break;
}
}// 주행 선택
//
}
소개글