小车就只有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循环的话,只会一边轮子正转一边轮子静止,加了就会反转,但是反转的速度不高。
刚做小车,想从最简单的开始,这些个请大牛解救啊~
|