极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13101|回复: 5

基于UNO的倒车雷达系统

[复制链接]
发表于 2013-8-1 09:45:59 | 显示全部楼层 |阅读模式
本帖最后由 疯子。 于 2013-8-2 16:57 编辑

东西技术含量不大,转帖可以,但在别处说是你的原创!
http://tieba.baidu.com/p/2501792539  
有人复制我的帖子发到贴吧说是他的原创,而且还来问我为什么抄袭他的,可笑。


前一阵见有人拿着东西做毕设。我修改优化了一下。

所用器材:
UNO * 1
HC--SR04 * 1
蜂鸣器 * 1
RGB LED *1 (也可用三种颜色的led)


图:


  1. const int TrigPin = 3;
  2. const int EchoPin = 4;  
  3. // 定义变色灯LED的三个输出接口,这里也可以选用三个led
  4. int ledpin1 = 5;  // R
  5. int ledpin2 = 6;  // G
  6. int ledpin3 = 7;  // B
  7. int beeppin = 8;  // 蜂鸣器的pin
  8. int i = 0;


  9. void setup ()
  10. {
  11.   Serial.begin(9600);     //测量结果将通过此串口输出至 PC 上的串口监视器
  12.   pinMode(EchoPin, INPUT);      //设置EchoPin 为输入模式
  13.   pinMode(TrigPin, OUTPUT);     //设置超声波数字IO脚模式,OUTPUT为输出
  14.   pinMode(ledpin1,OUTPUT);
  15.   pinMode(ledpin2,OUTPUT);
  16.   pinMode(ledpin3,OUTPUT);
  17.   pinMode(beeppin,OUTPUT);      //设置蜂鸣器引脚输出模式
  18. }


  19. void loop()
  20. {
  21.   digitalWrite(TrigPin, LOW);     // 通过Trig/Pin 发送脉冲,触发 HC-SR04 测距,使发出发出超声波信号接口低电平2μs
  22.   delayMicroseconds(2);
  23.   digitalWrite(TrigPin, HIGH);    // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
  24.   delayMicroseconds(10);
  25.   digitalWrite(TrigPin, LOW);     // 保持发出超声波信号接口低电平
  26.   int distance = pulseIn(EchoPin, HIGH);   // 读出脉冲时间
  27.   distance= distance/58;           // 将脉冲时间转化为距离(单位:厘米)
  28.   Serial.println(distance);        //输出距离值

  29.   if(distance<20)            //当距离<20cm(这个数据可以在超声波测量的范围内随意改,3cm~450cm )
  30.   {
  31.     setColor(255, 0, 0);//三色LED的设置颜色,如果是用三个led则这里删去
  32.     buzzer1();
  33.   }
  34.   else if (distance<=120)    //当距离<120cm(这个数据可以在超声波测量的范围内随意改,3cm~450cm )
  35.   {
  36.     setColor(0, 0, 255);
  37.     buzzer2();
  38.   }
  39.   else
  40.   {
  41.     setColor(0, 255, 0);
  42.     buzzer3();
  43.   }
  44. }

  45. //*****************************************************************
  46. void buzzer1()
  47. {
  48.   tone(beeppin,900);
  49.   delay(300);  //响声间隔300ms 听上去更急促
  50.   noTone(beeppin);
  51. }

  52. void buzzer2()
  53. {
  54.   tone(beeppin,600);
  55.   delay(500);  //响声间隔500ms 听上去普通
  56.   noTone(beeppin);
  57. }

  58. void buzzer3()  //这里我用了除余的方法,目的是如果处在安全距离,在不用delay的情况下蜂鸣器响声不要那么频繁
  59. {
  60.   if(i%100 == 1){
  61.     tone(beeppin,500);
  62.   }
  63.   else{
  64.     noTone(beeppin);
  65.   }
  66.   i++;
  67. }

  68. void setColor(int red, int green, int blue)  //三色LED的设置颜色函数,如果是用三个led则这里删去。然后把上面也改一下
  69. {
  70.   analogWrite(ledpin3, red);
  71.   analogWrite(ledpin2, green);
  72.   analogWrite(ledpin1, blue);
  73. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-8-1 10:15:40 | 显示全部楼层
不错!支持一下!
回复 支持 反对

使用道具 举报

发表于 2013-8-1 11:17:58 | 显示全部楼层
可以用个温度感应器修正一下音速,音速与温度的关系是V=331.3+0.606*C,C是摄氏温度值。
温度对测距的影响还挺大的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-1 13:17:32 | 显示全部楼层
328522073 发表于 2013-8-1 11:17
可以用个温度感应器修正一下音速,音速与温度的关系是V=331.3+0.606*C,C是摄氏温度值。
温度对测距的影响 ...

嗯,有道理~~~
回复 支持 反对

使用道具 举报

发表于 2013-8-1 22:05:50 | 显示全部楼层
只装一个超声波头么……感觉商品化的话起码得来上四个
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-1 23:27:05 | 显示全部楼层
friskit 发表于 2013-8-1 22:05
只装一个超声波头么……感觉商品化的话起码得来上四个


嗯啊,自己玩玩。离商品化还比较远~~~

比如商品话不可能用这个超声波头,太笨重了,也不精准。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-6 21:21 , Processed in 0.035473 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表