寻迹小车不能实现差速转弯,使用L298N
#include <reg52.h>
#define uchar unsigned char
uchar counter_l,counter_r,left,right;
sbit input1=P1^6;//left1
sbit input2=P1^5;//left2
sbit input3=P1^4;//mid3
sbit input4=P1^3;//right4
sbit input5=P1^2;//right5
sbit in1=P2^0;//motor left1
sbit in2=P2^1;//motor right1
sbit in3=P2^2;//motor left2
sbit in4=P2^3;//motor right2
sbit ena=P1^0;
sbit enb=P1^1;
void delayMS(int t);
void go_forward();
void turn_left();
void turn_right();
void Timer0_Init();
void main()
{
Timer0_Init();
go_forward();
while(1)
{
if(input1==1&&input2==1&&input3==0&&input4==1&&input5==1)
{
go_forward();
}
if(input1==0&&input2==1&&input3==1&&input4==1&&input5==1)
{
delayMS(2000000);
turn_left();
delayMS(2000000);
}
if(input1==1&&input2==0&&input3==1&&input4==1&&input5==1)
{
delayMS(2000000);
turn_left();
delayMS(2000000);
}
if(input1==1&&input2==1&&input3==1&&input4==0&&input5==1)
{
delayMS(2000000);
turn_right();
delayMS(2000000);
}
if(input1==1&&input2==1&&input3==1&&input4==1&&input5==0)
{
delayMS(2000000);
turn_right();
delayMS(2000000);
}
else
{
ena=0;
enb=0;
}
}
}
void go_forward()
{
while(1)
{
left=10;
right=10;
in1=1;
in2=0;
in3=0;
in4=1;
}
}
void turn_left()
{
while(1)
{
left=10;
right=40;
in1=1;
in2=0;
in3=0;
in4=1;
}
}
void turn_right()
{
while(1)
{
left=40;
right=10;
in1=1;
in2=0;
in3=0;
in4=1;
}
}
void delayMS(int t)
{
while(t--);
}
void Timer0_Init()
{
TMOD |=0X01;
TL0=(65536-100)/256;
TH0=(65536-100)%256;
TR0=1;
ET0=1;
EA=1;
}
void Timer0_Routine() interrupt 1
{
TL0=(65536-100)/256;
TH0=(65536-100)%256;
while(1)
{
counter_l++;
counter_l%=100;
counter_r++;
counter_r%=100;
if(counter_l<left)
{
ena=1;
}
else
{
ena=0;
}
if(counter_r<right)
{
enb=1;
}
else
{
enb=0;
}
}
}
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。