Arduino一个简单的小车(实现测距和避障功能—可以自行DIY).doc_第1页
Arduino一个简单的小车(实现测距和避障功能—可以自行DIY).doc_第2页
Arduino一个简单的小车(实现测距和避障功能—可以自行DIY).doc_第3页
Arduino一个简单的小车(实现测距和避障功能—可以自行DIY).doc_第4页
Arduino一个简单的小车(实现测距和避障功能—可以自行DIY).doc_第5页
免费预览已结束,剩余6页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Arduino一个简单的小车(实现测距和避障功能可以自行DIY)复制链接Randy87主题19好友3689积分版主 发消息电梯直达楼主发表于 2012-4-18 08:54:55|只看该作者|倒序浏览本帖最后由 Randy 于 2012-4-18 08:57 编辑 首先申明,这个帖子是转别人的,仅供大家一起学习用。这个小车很简单,超声波测量前方距离,Arduino 根据超声波模块接受的距离控制小车前进、后退或者左转右转。也就是说它有自己的“思维”方式,只要打开电源在没有人干预的情况下可以独自在房间里闲逛而不会碰到任何东西。先上一些整体图片:如果你也对这个有兴趣那么可以和我一起来制作这样一个ROBOT。材料准备:1、arduino 板子一个,我使用的是 arduino duemilanove 2009 - ATMega328P,因为我觉得这个性价比最高。Arduino UNO 也可以。2、 超声波测距模块一个3、 直流电机 + 轮胎4、 L298N电机驱动模块 一个 电机驱动最好带光耦的,否则可能会对超声波信号产生干扰5、万向轮 + 小车底盘 + 杜邦线 + 螺丝、螺母 + 烙铁 + 螺丝刀 + 剪刀等 万向轮可以去淘宝购买 小车底盘是用来固定电机和电路板的,可以选用PVC板自己动手制作也可以买现成的 材料都有了就可以将它们链接起来。接线方式可以从程序的注释中看出来,本来准备用舵机控制超声波模块转向的,后来觉得舵机固定比较麻烦就没用,android程序如下:1. #define DEBUG 0 / set to 1 to print to serial monitor, 0 to disable2. #include 3.4. Servo headservo;/ 头部舵机对象5.6. / Constants7. const int EchoPin = 2; /超声波信号输入8. const int TrigPin = 3; /超声波控制信号输出9.10. const int leftmotorpin1 = 4; / 直流电机信号输出11. const int leftmotorpin2 = 5;12. const int rightmotorpin1 = 6;13. const int rightmotorpin2 = 7;14.15. const int HeadServopin = 9; / 舵机信号输出 只有9或10接口可利用16. const int Sharppin = 11; / 红外输入17.18. const int maxStart = 800;/run dec time19.20. / Variables21. int isStart = maxStart; /启动22. int currDist = 0; / 距离23. boolean running = false;24.25. void setup() 26.27. Serial.begin(9600); / 开始串行监测28.29. /信号输入接口30. pinMode(EchoPin, INPUT);31. pinMode(Sharppin, INPUT);32.33. /信号输出接口34. for (int pinindex = 3; pinindex 11; pinindex+) 35. pinMode(pinindex, OUTPUT); / set pins 3 to 10 as outputs36. 37.38. /舵机接口39. headservo.attach(HeadServopin);40.41. /启动缓冲活动头部42. headservo.write(70);43. delay(2000);44. headservo.write(20);45. delay(2000);46. 47.48. void loop() 49.50. if(DEBUG)51. Serial.print(running:);52. if(running)53. Serial.println(true);54. 55. else56. Serial.println(false);57. 58. 59.60. if (isStart 0) 70. isStart = maxStart;71. 72. delay(4000);73. return;74. 75. isStart-;76. delay(100);77.78. if(DEBUG)79. Serial.print(isStart: );80. Serial.println(isStart);81. 82.83. currDist = MeasuringDistance(); /读取前端距离84.85. if(DEBUG)86. Serial.print(Current Distance: );87. Serial.println(currDist);88. 89.90. if(currDist 30) 91. nodanger();92. 93. else if(currDist 15)94. backup();95. randTrun();96. 97. else 98. /whichway();99. randTrun();100. 101. 102.103. /测量距离 单位厘米104. long MeasuringDistance() 105. long duration;106. /pinMode(TrigPin, OUTPUT);107. digitalWrite(TrigPin, LOW);108. delayMicroseconds(2);109. digitalWrite(TrigPin, HIGH);110. delayMicroseconds(5);111. digitalWrite(TrigPin, LOW);112.113. /pinMode(EchoPin, INPUT);114. duration = pulseIn(EchoPin, HIGH);115.116. return duration / 29 / 2;117. 118.119. / 前进120. void nodanger() 121. running = true;122. digitalWrite(leftmotorpin1, LOW);123. digitalWrite(leftmotorpin2, HIGH);124. digitalWrite(rightmotorpin1, LOW);125. digitalWrite(rightmotorpin2, HIGH);126. return;127. 128.129. /后退130. void backup() 131. running = true;132. digitalWrite(leftmotorpin1, HIGH);133. digitalWrite(leftmotorpin2, LOW);134. digitalWrite(rightmotorpin1, HIGH);135. digitalWrite(rightmotorpin2, LOW);136. delay(1000);137. 138.139. /选择路线140. void whichway() 141. running = true;142. totalhalt(); / first stop!143.144. headservo.write(20);145. delay(1000);146. int lDist = MeasuringDistance(); / check left distance147. totalhalt(); / 恢复探测头148.149. headservo.write(120);/ turn the servo right150. delay(1000);151. int rDist = MeasuringDistance(); / check right distance152. total

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论