17018浏览
查看: 17018|回复: 11

[项目] 超声波摇头避障小车

[复制链接]
制作过程:

一、准备材料
1、L298n电机驱动模块一个,淘宝也就10元一个(如下图
本模块是2路的H桥驱动,所以可以同时驱动两个电机,但是我用的小电机一个模块就能驱动四个电机。当然大家也可以用其他类型的驱动。

2、
LM2596稳压模块一个(如下图)(注意:LM2596稳压模块可以提供3A电流,如用7805的话电流会不够)

3、超声波模块一个(如下图


4、
9g舵机一个(如下图


5、
云台一个(可以自己制作用孔孔板)

6、车底盘一个带四个轮子(可以自己制作用铝板或其他材料)(如图)

7、杜邦线若干


8、
电池一块(要能提供大电流的那种,比如7.4V航模电池,18650电池等 ,当然能提供2A的充电宝也可以的哦)

9、
铜柱(1cm)及螺母和螺丝若干
注:以上模块淘宝都可以买到哈


二、
电路板的安装及模块的连接
1首先大家将各模块通过铜柱用胶水或其他东西安装到小车底盘上
2通过杜邦线将各模块连接起来,具体连接法在下就不多讲了大家参考使用说明连接就行哈
下图是我小车供大家参考一下



三、完成以上两步小车硬件就完成了接下来就是软件调试了,一下是我的软件,供大家参考
源代码
  1. #include <Servo.h>
  2. //#define send
  3. Servo myservo;
  4. int Echo = A1;  // Echo回声脚(P2.0)
  5. int Trig =A0;  //  Trig 触发脚(P2.1)
  6. int in1 = 5;
  7. int in2 = 4;
  8. int in3 = 3;
  9. int in4 = 2;
  10. int rightDistance = 0,leftDistance = 0,middleDistance = 0 ;
  11. void forward()
  12. {
  13. digitalWrite(in1,HIGH);
  14. digitalWrite(in2,LOW);
  15. digitalWrite(in3,HIGH);
  16. digitalWrite(in4,LOW);
  17. }
  18. void back()
  19. {
  20. digitalWrite(in1,LOW);
  21. digitalWrite(in2,HIGH);
  22. digitalWrite(in3,LOW);
  23. digitalWrite(in4,HIGH);
  24. }
  25. void turnleft()
  26. {
  27. digitalWrite(in1,HIGH);
  28. digitalWrite(in2,LOW);
  29. digitalWrite(in3,LOW);
  30. digitalWrite(in4,HIGH);
  31. }
  32. void turnright()
  33. {
  34. digitalWrite(in1,LOW);
  35. digitalWrite(in2,HIGH);
  36. digitalWrite(in3,HIGH);
  37. digitalWrite(in4,LOW);
  38. }
  39. void stop()
  40. {
  41. digitalWrite(in1,LOW);
  42. digitalWrite(in2,LOW);
  43. digitalWrite(in3,LOW);
  44. digitalWrite(in4,LOW);
  45. }
  46. int Distance_test()   // 量出前方距离
  47. {
  48.   digitalWrite(Trig, LOW);   // 给触发脚低电平2μs
  49.   delayMicroseconds(2);
  50.   digitalWrite(Trig, HIGH);  // 给触发脚高电平10μs,这里至少是10μs
  51.   delayMicroseconds(20);
  52.   digitalWrite(Trig, LOW);    // 持续给触发脚低电
  53.   float Fdistance = pulseIn(Echo, HIGH);  // 读取高电平时间(单位:微秒)
  54.   Fdistance= Fdistance/58;       //为什么除以58等于厘米,  Y米=(X秒*344)/2
  55.   // X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58
  56.   return (int)Fdistance;
  57. }  
  58. void setup()
  59. {
  60.   myservo.attach(9);
  61.   Serial.begin(9600);     // 初始化串口
  62.   pinMode(Echo, INPUT);    // 定义超声波输入脚
  63.   pinMode(Trig, OUTPUT);   // 定义超声波输出脚  
  64.   pinMode(in1,OUTPUT);
  65.   pinMode(in2,OUTPUT);
  66.   pinMode(in3,OUTPUT);
  67.   pinMode(in4,OUTPUT);
  68.   stop();
  69. }
  70. void loop()
  71. {
  72.     myservo.write(90);
  73.     delay(500);
  74.     middleDistance = Distance_test();
  75.     #ifdef send
  76.     Serial.print("middleDistance=");
  77.     Serial.println(middleDistance);
  78.     #endif
  79.      
  80.     if(middleDistance<=20)
  81.     {     
  82.       stop();
  83.       delay(500);                        
  84.       myservo.write(5);         
  85.       delay(1000);      
  86.       rightDistance = Distance_test();
  87.       #ifdef send
  88.       Serial.print("rightDistance=");
  89.       Serial.println(rightDistance);
  90.       #endif
  91.       
  92.       delay(500);
  93.        myservo.write(90);              
  94.       delay(1000);                                                  
  95.       myservo.write(175);              
  96.       delay(1000);
  97.       leftDistance = Distance_test();
  98.       #ifdef send
  99.       Serial.print("leftDistance=");
  100.       Serial.println(leftDistance);
  101.       #endif
  102.       delay(500);
  103.       myservo.write(90);              
  104.       delay(1000);
  105.       if(rightDistance>leftDistance)  
  106.       {
  107.         turnright();
  108.         delay(450);
  109.        }
  110.        else if(rightDistance<leftDistance)
  111.        {
  112.         turnleft();
  113.         delay(450);
  114.        }
  115.        else
  116.        {
  117.         forward();
  118.        }
  119.     }  
  120.     else
  121.       forward();                     
  122. }
复制代码



本帖转自http://www.Arduino.cn/thread-17702-1-1.html

丄帝De咗臂  高级技匠

发表于 2015-12-14 18:37:01

难道我是沙发
回复

使用道具 举报

大连林海  初级技神
 楼主|

发表于 2015-12-14 18:39:00


恩 是你 就是你 沙发就是你
回复

使用道具 举报

孙毅  初级技匠

发表于 2015-12-14 23:16:33

这个小车跟我的。。。。一个车架子哈。。。吼吼
只不过。。。。我那个搭载了“昂贵滴”艾迪森。。。。。牛!
回复

使用道具 举报

孙毅  初级技匠

发表于 2015-12-14 23:18:42

最近论坛里是不是有点冷清,还是说因为还不到月末的原因啊 ?!还是说我太忙了忽略的大家。。。吼吼
回复

使用道具 举报

大连林海  初级技神
 楼主|

发表于 2015-12-15 07:57:43

孙毅 发表于 2015-12-14 23:18
最近论坛里是不是有点冷清,还是说因为还不到月末的原因啊 ?!还是说我太忙了忽略的大家。。。吼吼 ...

你冷落了大家 大家都找不到你了
回复

使用道具 举报

大连林海  初级技神
 楼主|

发表于 2015-12-15 07:58:05

孙毅 发表于 2015-12-14 23:16
这个小车跟我的。。。。一个车架子哈。。。吼吼
只不过。。。。我那个搭载了“昂贵滴”艾迪森。。。。。牛 ...

什么时候我能玩一下你的牛车 哈哈
回复

使用道具 举报

孙毅  初级技匠

发表于 2015-12-15 09:21:47

大连林海 发表于 2015-12-15 07:58
什么时候我能玩一下你的牛车 哈哈

哈哈哈。。。。小车你还不有的是,不差我这一个。
你这个小车跟我一样的车架啊,话说,你有Edison没?直接换上,吼吼吼
回复

使用道具 举报

大连林海  初级技神
 楼主|

发表于 2015-12-15 14:25:55

孙毅 发表于 2015-12-15 09:21
哈哈哈。。。。小车你还不有的是,不差我这一个。
你这个小车跟我一样的车架啊,话说,你有Edison没?直 ...

我记得我是有 我又不知道放哪了
回复

使用道具 举报

孙毅  初级技匠

发表于 2015-12-15 15:13:56

大连林海 发表于 2015-12-15 14:25
我记得我是有 我又不知道放哪了

我想知道,你家到底多乱。。。?!
回复

使用道具 举报

大连林海  初级技神
 楼主|

发表于 2015-12-15 18:39:59

孙毅 发表于 2015-12-15 15:13
我想知道,你家到底多乱。。。?!

是书太乱 我可能又仍没了 最近收拾家里扔东西了
回复

使用道具 举报

稀里糊涂  见习技师

发表于 2020-12-30 02:06:29

有没有用mind+写的程序,代码看不懂
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail