今日对红外避障小车软件部分进行了调试:
这里主要是编写L298N有关代码实现对小车两电机的控制,其逻辑功能如下
写好代码后我将程序烧录进单片机运行小车,发现同一代码下两电机运行方向相反,我将电平赋值对调才能使两电机同向转动,最终代码如下:
#include <REG52.H>
sbit ENA=P2^2;
sbit IN1=P2^1;
sbit IN2=P2^0;
sbit ENB=P0^0;
sbit IN3=P0^1;
sbit IN4=P0^2;
sbit A1=P1^0;
sbit B2=P1^1;
void delay(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void back()
{
ENA=1;
IN1=1;
IN2=0;
ENB=1;
IN3=0;
IN4=1;
}
void go()
{
ENA=1;
IN1=0;
IN2=1;
ENB=1;
IN3=1;
IN4=0;
}
void left() {
ENA=1;
IN1=1;
IN2=0;
ENB=1;
IN3=1;
IN4=0;
}
void right()
{
ENA=1;
IN1=0;
IN2=1;
ENB=1;
IN3=0;
IN4=1;
}
void main()
{
while(1)
{
go();
if(B2==0) {
back();
delay(500);
left();
delay(700);
}
if(A1==0) {
back();
delay(500);
right();
delay(700);
}
}
}
io口定义部分我根据自己接线的实际情况进行了调整。
最后小车成功运行,但红外感应的硬件部分灵敏度不是很高,导致其运行有些笨拙。
烧录部分需要下载器,利用串口通信有关原理接线到单片机进行下载。