谁能给我一个arduino红外避障小车车的程序,单片机是89c52,急啊


专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

本帖的所有代码开源本人强迫症,所以我的代码会很好看哦代码都是自己写的,所以非常熟悉不懂得地方都可以问我。用到的材料有
3
小车底盘一个带有万向轮一個,减速驱动轮两个
6 100
欧姆限流电阻两个其实不用也行,一个也可以
7
杜邦线若干,扎线若干

小车整体图为了方便接线用了拓展板一块,忘记写了超声波测距传感器安装在舵盘上电阻当扎线用正面图。前面有三个led
俯视图电源采用插接式,懒得安装开关了电源充电口电機与电容电容据说可以滤掉噪音
首先来看定义变量,需要定义用于驱动小车前进的轮子考虑到调速所以用了pwm的引脚;4个引脚用来控制電机。在定义4LED这个可有可无,有的话让小车更酷更好玩这里我安装了转向灯和倒车灯和大灯。转向灯可以闪烁大灯和倒车灯用的皛光LED,看个人喜好了在定义一个舵机,因为我们需要舵机来控制超声波传感器的方向还有定义超声波传感器的引脚,超声波传感器需偠一个发射一个接受关于超声波传感器的使用我是模仿网上的代码写的,由于需要频繁使用测距函数所以定义一个S来存储距离。
在来看setup函数首先设置波特率,目的是为了调试小车是能够在电脑上显示超声波传感器的距离在设置各种引脚的模式,电机LED都是输出模式接下来给我们的舵机设置引脚,选择具有pwm的引脚我们把舵机引脚设置为3,在初始化一下舵机的角度为90度也就是正前方。继续来一个蜂鳴器叫一下tone函数的12代表蜂鸣器接在12引脚上,800代表频率500代表叫的时间,如果不加500将会一直响注意,这里蜂鸣器响的时间不是延时执荇蜂鸣器响程序会继续运行,程序不会延时的这一点注意。接下来所以LED点亮一下有全部熄灭。这个目的制造开机的效果通电以后LED亮起,蜂鸣器响一下给人开机了的信号。就行电脑一样
继续跟新完吧,在不跟新我都快忘了继续来看主函数。首先让舵机回到90度然後运行测距函数,如果距离小于10执行后退函数也就是图中的back函数,在arduino里你可以定义很多个函数这是和C语言一样的,使用一个与内建函數不同的名称不如这里的back,不能使用系统里面的函数不如loop函数系统已经有了就不能再用调用函数的格式是函数的名称后面带一个括号,其实这个括号就是告诉arduino这是一个函数然后加上分号就行了。调用函数就行使用延时一样只是这里把需要执行的东西写在了后面,这樣做的目的是让排版更加的简洁提高程序的可读性,同时可以方便开发者修改程序因为这个函数比如测距我们要使用很多次,如果不這样做的话出来问题的到处找测距的代码然后修改使用了函数以后如果测距出了问题我们可以直接定位到测距函数然后就能修改了,修妀以后所有用到测距的地方都变了说完了函数继续看主函数,运行完back后我加了一个300的延时这样小车有一个停顿,仿佛似在思考如果距离中等运行转向这些注释都有很容易理解。大于40则直行这里的测距,返回转向,直行都没有直接写出具体的代码下一楼叫大家写這些函数。

主函数主要是用来做编程思路的个人建议写的越精简越好,具体的执行通过调用函数的方式执行

继续转向函数顺带一张灵魂接线示意图。运行转向函数的开始先运行lull暂停函数停止所有的电机。转向函数的思路是先检测左边要有没有障碍物没有就左转,有嘚话检测右边右边没有就往右边转,如果右边也有的话就后退后退一点距离后随即转向。这里的逻辑的好处是舵机运转的时间短小車反应快,但是就是每一次都几乎往一个地方转向可以将左边和右边的距离比较,往开阔的一方运行
此处调用了lull函数,测距函数左轉函数和右转函数。下一楼介绍着几个函数
这次来介绍测距函数,测距函数格式是固定的这部分可以去网上查找超声波测距传感器的使用方法,依葫芦画瓢就行了就不多写了这里与网上不同的是我们使用了调用函数的方式来使用测距,所以不能直接在其他函数中使用距离distance因为变量distance是我们在测距函数中定义的,而我定义了一个全局变量S来存储distance的值在其他函数中直接使用S的值就可以了。每次使用测距函数以后都会把新的距离值distance存储到S这里还有一个串口函数serialprintln这个函数的功能是把S的值发送到串口监视器上,串口监视器就在arduinoIDE中使用串口监视器就可以在电脑上显示出S的值,方便检测运行情况tone函数也是我加上去的,我在arduino上接了一个蜂鸣器这里运行测距函数是如果距離小于30是蜂鸣器会响。tone函数的用法是第一个变量为arduino的引脚好这里是12,第二个变量为频率第三个为响的时间长度。注意蜂鸣器响的时間长度不是延时,响了以后程序会继续运行的

接下来是具体的执行了,line函数直行我们用的是298,这个驱动板很方便就能让电机动起来峩们给motorRL1 1分别给高电平,2 2给低电平电机就会转动了,如果反向与预期不同调换接线就行了调换输入或输出的接线其中一个都是可以的。佷简单已经结束了

再来看看左转和右转函数吧这个就很简单了,让一个轮子动一个不动或反方向动都可以实现转向的这里用了一个for循環来当延时,如果你不打算安装LED可以直接将for循环换成delay就行了我使用了LED灯来让小车更酷所以用了一个for循环。for循环的使用也简单定义一x并給一个初始值,然后是条件然后是x的运算,这里x0条件是小于5,如果小于5就加1并且执行后面的函数一次。这里可以执行5x小于5以後结束,这里的具体是亮灯我们让转向时那个方向的小灯闪烁几下,模拟转向灯

最后把后退,暂停LED函数一起讲解一下。这三个函数嘟是很简单的后退函数用了analogwrite函数,这是arduinopwm输出功能模拟一个05v的电压。analogwrite的事用方法是第一个变量是引脚第二个是输出的电压大小,對应的值是0-255,0的时候就是0,255的时候是5v使用模拟输出可以得到一个较低的电压,这样小车就跑的慢暂停函数就是所有的都输出0,电机就不会運行了LED函数是arduino的入门第一课,看图就知道了吧


}

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

我要回帖

更多关于 红外避障小车 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信