永发信息网

下面是我基于51单片机的寻迹小车的代码,但过弯会因为车速过快冲出去,求大神帮我加一个调速的,完善一下

答案:2  悬赏:0  手机版
解决时间 2021-02-12 00:00
  • 提问者网友:难遇难求
  • 2021-02-11 09:28
我的点机驱动没用ENA,B
#include
#define uchar unsigned char
#define uint unsigned int
sbit L1=P1^0; //左边里侧寻迹灯
sbit L2=P1^1; //左边外侧寻迹灯
sbit R2=P1^2; //右边外侧寻迹灯
sbit R1=P1^3; //右边里侧寻迹灯
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
void init()
{
TMOD=0x02;
TH0=6;
TL0=6;
EA=1;
ET0=1;
TR0=1;
IN1=1;
IN2=1;
IN3=1;
IN4=1;
}
void detect()
{
if((R1==1&&L1==1)||(R2==0&&L2==0)){
IN1=0;
IN3=0;
}
if(R1==0&&L1==0){
IN1=1;
IN3=1;
}
if((R1==1&&L1==0)||(R2==1&&L2==0)){
IN1=1;
IN3=0;
}
if((R1==0&&L1==1)||(R2==0&&L2==1)){
IN3=1;
IN1=0;
}
}
void main()
{
init();
while(1){
detect();
}
}
void T0_tine() interrupt 1
{
TH0=6;
TL0=6;
if((R1==1&&L1==1)||(R2==0&&L2==0)){
IN1=0;
IN3=0;
}
if((R1==1&&L1==0)||(R2==1&&L2==0)){
IN1=1;
IN3=0;
}
if((R1==0&&L1==1)||(R2==0&&L2==1)){
IN3=1;
IN1=0;
}
}
最佳答案
  • 五星知识达人网友:蓝房子
  • 2021-02-11 09:53
做个PWM调速,应该就可以。
全部回答
  • 1楼网友:woshuo
  • 2021-02-11 11:28
你是什么样的车? 有舵机还是履带? 驱动电机驱动芯片是什么?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯