标题: 51简易小车转弯问题。。新手求助 [打印本页]

作者: environmentx    时间: 2016-1-24 09:27
标题: 51简易小车转弯问题。。新手求助
小车就只有51单片机最小系统一个,l298n驱动电机一个,直流减速电机两个以及若干红外传感器。。
转弯我是想让一边轮子正转一边轮子反转的,但转起来的效果很奇怪,程序写的很简单,如下:
#include<reg52.h>

sbit PWM1=P3^4;
sbit PWM2=P3^5;
sbit PWM3=P3^6;
sbit PWM4=P3^7;                        ///////////定义电机引脚


sbit ssl=P2^0;
sbit ssn=P2^1;
sbit ssf=P2^2;
sbit ssr=P2^3;
sbit ssm=P2^4;
sbit ssb=P2^5;       
sbit ssu=P2^6;
sbit ssd=P2^7;                ///////////传感器引脚


void stop()                        //////////两边电机停止供电
{
PWM1=0;
PWM2=0;
PWM3=0;
PWM4=0;
}
void move()                        /////////两边电机都供电
{
PWM1=0;
PWM2=1;
PWM3=0;
PWM4=1;
}
void left()                           /////////一边正转一边反转
{
PWM1=1;
PWM2=0;
PWM3=0;
PWM4=1;
}
void right()                  /////////一边反转一边正转
{
PWM1=0;
PWM2=1;
PWM3=1;
PWM4=0;
}


void main()
{
unsigned char i,j;                                                                                                                                                                           
while(1)
{
move();move();move()stop();
if(ssl==0&&ssr==1) for(i=0;i<5;i++)right();
if(ssl==1&&ssr==0) for(j=0;j<5;j++)left();
}
}



如果不加那个for循环的话,只会一边轮子正转一边轮子静止,加了就会反转,但是反转的速度不高。
刚做小车,想从最简单的开始,这些个请大牛解救啊~


作者: 腾飞的龙    时间: 2016-1-24 21:15
把程序修改一下while(1)
{
if(ssl==0&&ssr==0)move() ;//没有障碍前进
  if(ssl==0&&ssr==1) left() ;//右边有障碍左转
  if(ssl==1&&ssr==0) right();//左边有障碍右转
}
}





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1