找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3100|回复: 1
打印 上一主题 下一主题
收起左侧

51简易小车转弯问题。。新手求助

[复制链接]
跳转到指定楼层
楼主
ID:102000 发表于 2016-1-24 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小车就只有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循环的话,只会一边轮子正转一边轮子静止,加了就会反转,但是反转的速度不高。
刚做小车,想从最简单的开始,这些个请大牛解救啊~

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:79544 发表于 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();//左边有障碍右转
}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表