找回密码
 立即注册

QQ登录

arduino最基础应用 超声测距

来源: 创意制作 26wd 2015-4-10 17:05 显示全部楼层 |阅读模式
本帖最后由 26wd 于 2015-4-10 17:09 编辑

如图连接好超声波传感器与arduino

20150410_165333.jpg
大概原理就是如下:
当需要测距时,给OUTPUT端一个高于10us的高电平信号,则其会自动产生震荡信号,发出声波,同时,将声波返回的时间通过INPUT传输回来,所走的距离就是声波传输的时间t*声速340m/s再除以2。程序如下:
  1. /************************************************************
  2. 机器人基地 RobotBase www.robatbase.cn
  3. 目    的:  RB URF02超声波传感器功能测试实验例程
  4. 目标系统:  Carduino Mega168/Arduino Mega168/Mega328/Mega1280控制器
  5. 应用软件:  Arduino 0023
  6. 功能描述:  测试RB URF02超声波传感器的传输距离值
  7. 发布时间:  2015-01-27
  8. 说    明:  若用于商业用途,请保留此段文字或注明代码来源
  9.               哈尔滨奥松机器人科技有限公司保留所有版权
  10. ************************************************************/
  11. int duration;                      //变量duration用来存储脉冲时间
  12. int distance;                      //变量distance用来存储距离
  13. int srfPin=15;                     //定义srfPin引脚为2
  14. void setup()
  15. {
  16. Serial.begin(9600);               //设置波特率为9600
  17. }
  18. void loop()
  19. {
  20.   pinMode(srfPin,OUTPUT);          //将srf脚设置为输出
  21.   digitalWrite(srfPin,LOW);        //将srf脚设置为低电平
  22.   delayMicroseconds(2);            //暂停2微妙
  23.   digitalWrite(srfPin,HIGH);       //将srf脚设置为高电平
  24.   delayMicroseconds(10);           //暂停10微妙
  25.   digitalWrite(srfPin,LOW);        //将srf脚设置为低电平
  26.   pinMode(srfPin,INPUT);           //将srf脚设置为输入
  27.   duration=pulseIn(srfPin,HIGH);
  28.   distance=duration/58;           //将脉冲时间转化为距离(单位:厘米)
  29.   Serial.println(distance);         //输出距离值
  30.   delay(50);
  31. }
复制代码
然后编译下载,打开串口的窗口serial monitor就可以看到返回的距离值了。(注意Mode选择1,串口选择9600baud 通讯)
完成后测试图:
ss.jpg
这个超声测距应用虽然基础,但用途很广,比红外测距精度高,范围大,可以用在小车壁障,飞行器测高度,如果装在一个选择平台上,还可以当雷达(其实是声纳)来用,描绘周围环境信息,总之很有用,很好玩,对没有过超声测距的人很有帮助。



回复

使用道具 举报

大神点评2

最近还想入手超声波传感器装到我的机器人上呢,收藏了!好贴!
回复 支持 反对

使用道具 举报

cy0501 2015-4-14 08:52 显示全部楼层
正准备学习下,超声波传感器方面的知识,谢谢了
回复 支持 反对

使用道具 举报

您可能感兴趣的文章

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

关注0

粉丝0

帖子10

发布主题
社区热门 MORE+
    社区热帖 MORE+