turn(count1,180,count2,0); 1110 当第四个LED检测到黑线时,小车右转
if(RP1==1&&RP2==1&&RP3==0&&RP4==0)
turn(count1,100,count2,0); 1100 当第三、四个LED检测到黑线时,小车右转
if(RP1==1&&RP2==0&&RP3==0&&RP4==0)
turn(count1,200,count2,0); 1000当第二、三、四个LED检测到黑线时,小车右大转
****************小车检测到全黑情况的处理**************** if(RP1==0&&RP2==0&&RP3==0&&RP4==0) { if(num==0) {
back1(); 0000 当四个LED第一次检测到黑线时,左轮后退右轮前进,小车左转 forward2();
delay(100); 延时100ms,等待小车转过弯道 }
if(num>0 && num<6) {
turn(count1,200,count2,200); 0000 当四个LED再次检测到黑线的
次数小于6次时 即到达黑线时小车前进速度大于后退速度
}
if(num>=6) {
PWM1=0;
PWM2=0; 当四个LED第六次检测到黑线时,小车停止 } num++; } }
*************第四部分 中断服务函数************* void time0()interrupt 1 {
TH0=()256; 定时1ms TL0=()%6; count1++; count2++;
if(count1>=500) 周期是500ms count1=0;
if(count2>=500) 周期是500ms count2=0; }
附录C 硬件实物图
自动循迹小车
TCRT5000 循迹传感器模块 L298N 电机驱动模块
单片机电路