Arduino智能避障小车避障程序汇编.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
首先建立一个名为modulecai.ino的主程序。 // modulecar.iiio,玩转智能小车主程序 #include Senro.h 〃导入舵机库 #include NewPmg.h 〃导入 NwePmg 库 //对照系统配线方案依次指定各I/O const mt ENA =3 ;//左电机 PWM const mt INI = 4 ; 〃左电机正 const mt IN2 = 5 ; 〃左电机负 const mt ENB = 6;//右电机 PWM const mt IN3 = 7 ; 〃右电机正 const mt IN4 = 8 ; 〃右电机负 const mt trigger = 9 ; 〃定义超声波传感器发射脚为D9 const int echo = 10 ; //定义传感器接收脚为D10 const mt max_read = 300; //设定传感器最大探测距离。 int no_good = 35; //*设定 35cm 警戒距离。 int read_aliead; 〃实际距离读数。 Seivo sensorStation; //设定传感器平台。 NewPmg sensor(tngger, echo, max_read); 〃设定传感器引脚和最人读数 〃系统初始化 void setup() { Senal.begin(9600); 〃启用串行监视器可以给调试带来极人便利 sensorStation.attach(ll); //把 D11 分配给舵机 pmMode(ENA, OUTPUT); //依次设定各 I O 属性 puiMode(INl, OUTPUT); puiMode(IN2, OUTPUT); pmMode(ENE, OUTPUT); puiMode(IN3, OUTPUT); puiMode(IN4, OUTPUT); puiMode(Uigger, OUTPUT); pinMode(echo, INPUT); sensorStation.write(90); //舵机复位至 90 1 delay(6000); 〃上电等待6s后进入主循环 } 〃主程序 void loopQ { read_aliead = readDistanceQ; 〃调用 readDistanceQ函数读岀前方距离 Senal.printlii(HAHEAD:n); Seiial.pnntlii(read_ahead); 〃串行监视器显示机器人前方距离 if (read_aliead no_good) //如果前方距离小于警戒值 { fastStopQ; 〃就令机器人紧急刹车 waTchQ; //然后左右查看,分析得出最佳路线 goFonvardQ;//*此处调用看似多余,但可以确保机器人高速运转下动作的连贯性 } else goFonvardQ; 〃否则就一直向前行驶 } 主程序用到了两个库,Sewo库是IDE自带的,NwePing库是第三方库,需要卞载安装。 接下来建立一个名为move .mo的标签。 //move.iiio,机动模块。 〃刹车 void fastStopQ { Senal.piintlii(nSTOPn); //串行监视器显示机器人状态为STOP (停止) 〃左电机急停(注:L298N和L293D均带有刹车功能,在使能成立的条件下,同时向两 相写入高电平可令电机急停,详见芯片手册) digitalWnte(ENA, HIGH); digitalWnte(INh HIGH); digitalWnte(IN2, HIGH); 〃右电机急停 digitalWnte(ENB, HIGH); digitalWnte(IN3, HIGH); digitalWnte(IN4, HIGH); } 〃前进 void goFoiwaidQ { Senal.pnntlii(HFOR\\ARDH); 〃串行监视器显示机器人状态为FORWARD (前进) 〃左电机逆时针旋转 analogWnte(ENA,106); //^电机PWM,可微调这个数值使小车左右两侧车轮转速相等,右 电机同理 digitalWnte(INl, LOW); digitalWnte(IN2, HIGH); 〃右电机顺时针旋转 analog Wiite(ENB,l 18); digitalWnte(IN3, HIGH); digitalWnte(IN4, LOW); } 〃原地左转 void mniLeftQ { Senal.pnntlii(HLEFTH); 〃串行监视器显示机器人状态为LEFT (向左转) 〃左电机正转 analogWrite(ENA, 106); digitalWnte(INh HIGH); digitalWnte(IN2, LO

文档评论(0)

kunpengchaoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档