极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 53525|回复: 19

超声波测距(HC-SR04)+arduino制作倒车雷达

[复制链接]
发表于 2012-10-19 23:50:30 | 显示全部楼层 |阅读模式
上次买arduino的时候,顺带买了个HC-SR04,一直没玩,今年翻出来了,仅仅测距多没意思。想想可以做点什么呢?来做个倒车雷达吧。

在论坛上没有看到HC-SR04的库文件,我就找了找,放在后面了。

辛苦卷纸了。代码很简单。{:soso_e121:}

  1. #include <Ultrasonic.h>

  2. #define TRIGGER_PIN    12
  3. #define ECHO_PIN       13

  4. #define NUMBER_BUFFERS 3
  5. #define BUFFER_SIZE    3

  6. #define BUFFER_01      0
  7. #define BUFFER_02      1
  8. #define BUFFER_03      2

  9. Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);
  10. bool disableSD = false;

  11. size_t count = 0;


  12. void setup()
  13.   {
  14.   Serial.begin(9600);
  15.   Serial.println("Starting Ultasonic Test using standard deviation ...");
  16.   pinMode(3,OUTPUT);
  17.   pinMode(4,INPUT);

  18.   /*
  19.    * If NUMBER_BUFFERS is 2 then it must be followed by two size variables
  20.    * one for each buffer to be created. The size variables do not need to be
  21.    * the same value.
  22.    *
  23.    * Example: ultrasonic.sampleCreate(3, 20, 10, 3) is valid.
  24.    *
  25.    * Note: The minimum size for any buffer is 2. Using less than 2 will waist
  26.    *       resources and the buffer will be ignored.
  27.    */
  28.   if(!ultrasonic.sampleCreate(NUMBER_BUFFERS, BUFFER_SIZE, BUFFER_SIZE,
  29.       BUFFER_SIZE))
  30.     {
  31.     disableSD = true;
  32.     Serial.println("Could not allocate memory.");
  33.     }
  34.   }

  35. void loop()
  36.   {
  37.   float cmMsec, inMsec;
  38.   float msStdDev, cmStdDev, inStdDev;
  39.   long microsec = ultrasonic.timing();

  40.   cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
  41.   inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);


  42.     if(disableSD)
  43.       {
  44.       Serial.print("CM: ");
  45.       Serial.print(cmMsec);
  46.       Serial.print(", IN: ");
  47.       Serial.println(inMsec);
  48.       }
  49.     else
  50.       {
  51.       msStdDev = ultrasonic.unbiasedStdDev((float) microsec, BUFFER_01);
  52.       cmStdDev = ultrasonic.unbiasedStdDev(cmMsec, BUFFER_02);
  53.       inStdDev = ultrasonic.unbiasedStdDev(inMsec, BUFFER_03);
  54.       Serial.print(", CM: ");
  55.       Serial.print(cmMsec);
  56.       }

  57.   if(cmMsec<=200)
  58.   {
  59.     Serial.println("in if") ;
  60.     digitalWrite(3,HIGH);
  61.     delay(cmMsec*3);
  62.     digitalWrite(3,LOW);
  63.     tone(4,1000);
  64.     delay(cmMsec*6);
  65.     noTone(4);
  66.   }
  67.   delay(100);
  68.   }
  69.   
复制代码




本帖子中包含更多资源

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

x

评分

参与人数 1 +1 收起 理由
幻生幻灭 + 1 那卷手纸不会也是 ”今年翻出来了“的吧?

查看全部评分

回复

使用道具 举报

发表于 2012-10-20 14:55:22 | 显示全部楼层
我来补一些资料吧:

本帖子中包含更多资源

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

x
回复 支持 2 反对 0

使用道具 举报

发表于 2012-10-20 07:49:24 | 显示全部楼层
有创意,必须帮顶!不错!
回复 支持 反对

使用道具 举报

发表于 2012-10-21 11:40:14 | 显示全部楼层
shenhaiyu 发表于 2012-10-20 14:55
我来补一些资料吧:

好多我想要的,谢啦!
回复 支持 反对

使用道具 举报

发表于 2013-3-31 15:21:49 | 显示全部楼层
感谢了。。。。。。。。。
回复 支持 反对

使用道具 举报

发表于 2013-5-9 21:52:59 | 显示全部楼层
好东西!顶起来!
回复 支持 反对

使用道具 举报

发表于 2013-6-3 10:59:17 | 显示全部楼层
顶一下,麻烦高手能指导下小弟么
回复 支持 反对

使用道具 举报

发表于 2013-7-1 21:32:28 | 显示全部楼层
求接线图~~!
回复 支持 反对

使用道具 举报

发表于 2013-7-2 09:56:30 | 显示全部楼层
留个记号,
回复 支持 反对

使用道具 举报

发表于 2013-7-8 22:02:11 来自手机 | 显示全部楼层
学习学习~谢谢分享
回复 支持 反对

使用道具 举报

发表于 2013-8-6 23:10:29 | 显示全部楼层
shenhaiyu 发表于 2012-10-20 14:55
我来补一些资料吧:

It's very good!
回复 支持 反对

使用道具 举报

发表于 2014-6-9 17:22:27 | 显示全部楼层
不错,顶一个!
回复 支持 反对

使用道具 举报

发表于 2014-12-7 14:57:48 | 显示全部楼层
一个不拉,全收
回复 支持 反对

使用道具 举报

发表于 2015-12-17 14:27:59 | 显示全部楼层
good.arduino 的例子很好。
回复 支持 反对

使用道具 举报

发表于 2016-7-30 19:00:21 | 显示全部楼层
多谢,要好好学习了
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 13:30 , Processed in 0.050759 second(s), 36 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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