各位大神,咨询关于超声波避障小车的一点问题

IceFire 2013-07-29 02:53:12
做一下简单的超声波避障小车,想让它检测到距离小于20cm时左拐,但是为什么在调试的时候发现它一直是走直线的,而没有左拐啊。求大神帮忙看一下。谢啦。

#include<reg52.h>
#include<intrins.h>

sbit RX=P0^0; //ECHO
sbit TX=P0^1; //TRIG
sbit IN1=P0^2;
sbit IN2=P0^3;
sbit IN3=P0^4;
sbit IN4=P0^5;
sbit EN1=P0^6;
sbit EN2=P0^7;

unsigned int time=0;
unsigned int timer=0;

unsigned long s;
bit flag =0;
bit status=0;


void delay(int i)
{
int j;
for(;i>0;i--)
for(j=110;j>0;j--);
}
void carStop() //小车停止
{
EN1=0;
EN2=0;
}
void carTurnLeft() //小车左拐
{
EN1=0;
IN1=0;
IN2=0;
EN2=1;
IN3=1;
IN4=0;
}
void carGo() //小车前进
{
IN1=1;
IN2=0;
EN1=1;
IN3=1;
IN4=0;
EN2=1;
}
void conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;

s=(time*1.7)/100; //算出来是CM
if(s>=500||flag==1)
{
s=500;
}
if(s<20)
{
carTurnLeft();
delay(200);
}
carGo();
}
/********************************************************/
void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围
{
flag=1; //中断溢出标志
}
/********************************************************/
void zd3() interrupt 3 //T1中断用来扫描数码管和计800MS启动模块
{
TH1=0xf8;
TL1=0x30;
timer++;
if(timer>=400)
{
timer=0;
TX=1; //800MS 启动一次模块
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX=0;
}
}
/*********************************************************/
void main( void )
{
TMOD=0x11; //设T0为方式1,GATE=1;
TH0=0;
TL0=0;
TH1=0xf8; //2MS定时
TL1=0x30;
ET0=1; //允许T0中断
ET1=1; //允许T1中断
TR1=1; //开启定时器
EA=1; //开启总中断
while(1)
{
while(!RX); //当RX为零时等待
TR0=1; //开启计数
while(RX); //当RX为1计数并等待
TR0=0; //关闭计数
conut(); //计算
}
}
...全文
243 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lr2131 2013-08-01
  • 打赏
  • 举报
回复
自己调试一下, 1.先试试看,程序能不能检测到障碍。 2.不管能不能检测到障碍,你故意的调用左转函数,看这个动作能不能进行。
lao3 2013-07-29
  • 打赏
  • 举报
回复
跳不出第一个if语句就不能执行下一个了吧?
IceFire 2013-07-29
  • 打赏
  • 举报
回复
怎么没人来啊。求助啊。
这次的diy项目,是避障循迹小车。此小车为四驱驱动 车底盘网上买的现成的。使用stc89c52rc芯片、l298n电机驱动模块、四路红外寻迹、超声波避障。 小车主要逻辑是检测到黑线 按黑线行走 没有黑线 转到避障模式。 一、底盘 小车的底盘,我是在网上买的现成的。建议想做的朋友,如果动手能力强就自己做个底盘,然后买几个电机和轮子。 二、焊接最小系统 这一块基本了解一些,所以基本还可以。 三、测试电机驱动模块 电机驱动,我使用的网上现成的L298n模块。使用了两个,一个模块驱动两个电机。控制方式是一个模块控制前两个轮子,另外一个控制后两个轮子。这块的连线应该还是比较容易的 网上搜索有一堆资料。这块还是强调一下,要和单片机共地。 另外说一嘴,电机的导线接的长一点。我的驱动因为放在底层的底盘,所以弄的短了些。当时我手头没有104电容,所以电机也没焊接电容。但是还好,我没遇到干扰的问题。建议焊接上,具体什么作用,我就不大了解了,说是滤波。 四、测试舵机 舵机这块调试时间最长。程序调了好久,电路也调整好几次。我一开始连接到p0上了,怎么弄都不好用。后来查了一下,p0端口需要焊接上拉电阻。正好在单位捡了一块抽屉底下的小木板,就自己用壁纸刀切了一个舵机云台。感觉还不错。哈哈 五、避障模式 电机驱动、电机、舵机都拼到一块。用12v的变压器,测试都是正常的。当时晚上鼓捣的,不知怎么鬼使神差的居然把芯片烧掉了。然后换个芯片,又烧掉了。后来发现应该是有一个驱动模块稳压模块坏了,输出的电压不是5v。直接变成高电压了。最后的最后才发现,最终的损失不止两个芯片一个驱动模块,居然连超声波也烧坏了一个。没办法没芯片了,又得等好几天了。最后就采用单片机和驱动单独供电。两节电池供电机,一节电池供单片机。基本稳定下来了。程序就比较容易了。 六、循迹模式 我一开始没控制电机驱动的通道使能。小车都是全速前进的。在循迹这块发现不行了,跑的太快了。小车都冲出跑道。唉 真心觉得不能偷懒 又都都拆开,重新接上杜邦线。这块也发现,因为我个人不算有洁癖,但还是希望 小车整体看起来利索点。所以驱动和红外模块都放在底层底盘了。这个其实不是特别方便。因为在调试的时候 看不到红外模块的指示灯。大家可以注意点。 调整程序 通过占空比 控制轮子转速。这块程序也比较顺利 程序基本是一次性通过。 电路图就是参考网上焊接的。程序放上来,入不了大神的法眼,请勿见笑! 制作过程中的一些截图:
更多项目进度详情分享:智能小车开源项目文章汇总 我们为什么要做这件事? 困境:“跪求指点”的菜鸟一年比一年多,有空搭理菜鸟的大神一年比一年少。 原因:很多时候不是大神不肯帮忙,而是各种零散、离奇、重复的问题,浇灭了他们“扶弱济贫”的心。 对策:电路城团队深谙两方的急迫和苦衷,作为一个技术交流平台应有的责任,于是有了《来实战》的栏目构想,即每期选定一个富有启发性和趣味性的开源项目,由硬件设计大神带队,引领一批自愿报名加入的同道爱好者,从项目分析、思路梳理开始,逐步完成动手实践、项目调试,直到最后的完美再现和更进一步的功能升级。我们期望,今天的新手菜鸟,能用自己的勤勉好学,得到大神更多的关注和指导,更快加入硬件高手的行列;我们也期望,受益于这个项目的人们,也将更愿意帮助那些陷入迷茫的曾经的自己。 支持:电路城的美国兄弟工程师交流平台hackaday(www.hackaday.com)和摩尔吧视频平台(https://www.moore8.com/)... 关于开源项目,我们计划这样来操作: 1.对标摩尔吧中的中相关主题智能小车项目(基于恩智浦平台智能汽车),我们这次用基于意法半导体的STM32平台来打造多功能智能小车,最终实物性能如何?基于意法半导体平台的智能小车PK恩智浦智能小车,谁更胜一筹?电路城开源项目组现在开始就通过逐步实操并最终打造出来,最后实物演示操作对比。此外,我们将预留资源,增加创意点的功能:红外或者超声波避障、摄像头、激光测距、舵机等等(到时根据实际进度会有一定取舍调整)。 2.项目更新进度:每两天在《来实战》栏目上更新设计进度内容,在工程没有实质性进度的时候也可以在论坛发帖分享进行实施困难点、设计技术难点和原理讲解及器件分析等。 3.建立对应项目讨论群。利用现有已建立的技术Q群资源,我们在做每一个不同主题方向的项目时,为方便讨论同时活跃Q群用户,欢迎更多志同道合的小伙伴加进来参加开源项目讨论或给我们提供建议。 4.采购设计工具 工具:电焊台(刀头、尖头)、焊锡丝、吸锡器、助焊膏、烙铁架子带夹子、松香、热熔胶枪、螺丝刀、万用表、剪钳、镊子、钳子、海绵、美工刀、元器件收纳盒、手持钻孔机等等,以后可以慢慢完善。示波器以及信号源、多功能电源。 元器件及材料:采购电子元器件以及打板。 5.我们会定期举办开源项目直播交流,或制作一些项目设计过程中的小视频,在项目交流群中与大家分享,感兴趣的小伙伴马上加入我们吧。 6.建立开源项目贡献者名单荣誉榜,不定期在本开源项目页面更新。项目结束后,对该开源项目贡献突出的小伙伴,我们评选出“开源之星”给予神秘大奖奖励。开源项目贡献者名单会被注明在最终的开源项目方案中。 7.期待更多的志同道合的技术大咖加入我们“开源项目智囊团”,出谋划策,为开源贡献自己应有的力量。 8.这是一个开源项目,项目最终会被分享上传到“电路城-电路方案”频道,供大家免费下载。 智能小车开源项目开发周期 计划2020.3.5~2020.4.30内完成。 项目主要有以下几个阶段(每个阶段我们还会就开发过程中遇到的一些有价值的开发难点或经验教训,以直播的形式在摩尔吧开播,具体主题和时间后期持续更新,感兴趣的小伙伴可以关注下哈~): 第一阶段:设计的要求及技术指标 -硬件系统(确定硬件设计思路,出总体框图,完成主要器件选型及相关资料查找); -软件系统(确定程序流程框图,查看相关示例程序,一般传感器、相关模块会给示例程序); -设计方案介绍(整体设计方案的介绍,以及相关方案的对比); -工作原理介绍及说明(介绍功能参数、方案原理、相关科普); 第二阶段:硬件系统设计 -硬件系统各模块功能介绍(所用到的功能模块、传感器、少见器件学习以及出文章介绍); -原理图、PCB图或仿真图绘制(完成原理图设计,需制作实物还需进行PCB设计); -元器件选型与BOM表(跟据原理图设计同步确定元器件选型,给出具体BOM表); 第三阶段:软件系统设计 -使用单片机资源情况(单片使用资源介绍,完成一些基础的讲解,还有相关芯片器件); -软件系统各模块功能介绍(各功能模块程序设计流程图,程序实现原理); -程序编写及清单(进行总的程序编写,以及初步调试); 第四阶段:实物制作 -焊接(待元器件集齐,打板完成,进行焊接以及相关结构制作,模型安装等); -软件调试; -硬件调试(结合软硬件调试,完成程序修改,确保功能实现,验证硬件部分没有问题); -设计结果分析(测试功能、验证相关参数,有什么不足以及改正,对做的不好的地方留时间补救); -测试过程(完整测试的发表,实测); 第五阶段:项目总结 -完成知识总结等收尾工作; -整理打包完整的开源方案所有资料; -开源项目突出贡献者名单公布及颁发奖品。

27,509

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧