📄 car_follow.c
字号:
////左---中---右
// PA0--PA1--PA2
// 压线:PAn = 0
// 离线:PAn = 1
//
#include "avr/io.h"
#include "util/delay.h"
unsigned int temp;
void sensor_init()
{
DDRA &= ~0x0F;
PORTA |= 0x08;
}
void car_follow()
{
temp = PINA&0x07;
switch(temp)
{
case 0x00: // 全部压线,原转
car_right1();
while((PINA&0x07) != 0x05);
break;
case 0x01: // 右中压线,右转
car_right1();
while((PINA&0x07) != 0x05);
break;
case 0x02: // 左右压线,直走
car_ahead();
break;
case 0x03: // 右压线, 右转
car_right1();
while((PINA&0x07) != 0x05);
break;
case 0x04: // 左中压线,左转
car_left1();
while((PINA&0x07) != 0x05);
break;
case 0x05: // 中间压线,直行
car_ahead();
break;
case 0x06: // 左压线, 左转
car_left1();
while((PINA&0x07) != 0x05);
break;
case 0x07: // 全不压线,直行
car_ahead();
break;
}
}
void main()
{
car_init();
car_ahead();
car_init();
car_ahead();
car_backward();
car_left();
car_right();
car_left1();
car_right1();
car_left2();
car_right2();
car_stop();
sensor_init();
while((PINA&0x08)==0x08);
while(1)
{
car_follow();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -