查看: 208619|回复: 244

Arduino教程(提高篇)——SR04超声波类库的使用

  [复制链接]

该用户从未签到

发表于 2012-4-21 10:31 | 显示全部楼层 |阅读模式
本帖最后由 奈何col 于 2013-5-12 13:43 编辑

SR04是最常见的超声波传感器之一,价格便宜,好用,是arduino开发的必备良品~

10490479igv91g1nd1n9a1.jpg
其工作原理如下




  • 采用IO触发测距,给至少10us的高电平信号;
  • 模块自动发送8个40KHz的方波,自动检测是否有信号返回;
  • 有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.距离=(高电平时间*声速(340m/s))/2;


下面使用的是arduino官方推荐的SR04超声波传感器类库 SR04.rar (2.45 KB, 下载次数: 19861)



  • 将附件下载后解压到arduinoIDE下的libraries文件夹即可,如下图
    104902iw1l0hk51mwz5shk.jpg




  • 打开ArduinoIDE,选择SR04例程

105532s95rczoc6n8r88s6.jpg



  • 打开后即可见到如下程序

    [mw_shl_code=cpp,true]#include "SR04.h"
    #define TRIG_PIN 2
    #define ECHO_PIN 3
    SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
    long a;
    void setup() {
    Serial.begin(9600);
    Serial.println("Example written by Coloz From Arduino.CN");
    delay(1000);}
    void loop() {
    a=sr04.Distance();
    Serial.print(a);
    Serial.println("cm");
    delay(1000);}[/mw_shl_code]
  • 如下连接你的超声波传感器
    [mw_shl_code=cpp,true]#define TRIG_PIN 2
    #define ECHO_PIN 3[/mw_shl_code]
    TRIG接到arduino的第二脚
    ECHO接到arduino的第三脚
    VCC、GND接上
  • 打开串口调试,即可看到效果了
1102002ok3n35m85wzkowz.jpg



最后提供一个不用库直接驱动SR04的程序(上面库,就是把这个程序封装了一次)
[mw_shl_code=cpp,true]const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
//发一个10ms的高脉冲去触发TrigPin
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);

cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(1000);
} [/mw_shl_code]

该用户从未签到

发表于 2012-4-30 00:04 | 显示全部楼层
试了下。。返回的全是0CM。。。搞不懂。。

该用户从未签到

发表于 2012-4-21 11:33 | 显示全部楼层
原来有库啊
我用的时候 自己写的哦

该用户从未签到

 楼主| 发表于 2012-4-30 00:58 | 显示全部楼层
本帖最后由 奈何col 于 2012-4-30 01:00 编辑
lengrang911 发表于 2012-4-30 00:04
试了下。。返回的全是0CM。。。搞不懂。。

线插错没?E、T不能接反哦~

该用户从未签到

发表于 2012-5-3 11:48 | 显示全部楼层
原来要答复,才能下载! 新来的不懂,见谅!

签到天数: 1 天

[LV.1]初来乍到

发表于 2012-4-21 11:34 | 显示全部楼层
大鹏·Roc 发表于 2012-4-21 11:33
原来有库啊
我用的时候 自己写的哦

后面我再陆续写点库的介绍,很多常用的都有

该用户从未签到

发表于 2012-4-21 11:36 | 显示全部楼层
coloz 发表于 2012-4-21 11:34
后面我再陆续写点库的介绍,很多常用的都有

好啊好啊 支持  

该用户从未签到

发表于 2012-4-21 11:48 | 显示全部楼层
有库方便多了,谢谢楼主了

该用户从未签到

发表于 2012-4-21 12:06 | 显示全部楼层
超声波能用在什么地方啊

该用户从未签到

发表于 2012-4-21 12:10 | 显示全部楼层
超声波有用做 超声波测距仪、超声波探鱼器、超声波探伤仪,貌似医用的B超也用超声波的吧~~~

该用户从未签到

发表于 2012-4-21 21:34 | 显示全部楼层
有库真方便啊,本来还在想怎么采样

该用户从未签到

发表于 2012-4-29 23:47 | 显示全部楼层
这个太方便了。。。本以为很难的。。谢谢了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

esp8266  Node mcu多用 含土壤温湿度和DHT11和四路继电器
esp8266 Node mcu多用 含
原来有空气湿度 和四路继电器 现在新加了土壤湿度的在这个里面 这个是为什么?
ArduinoBox
ArduinoBox
这个软件具体是做什么用的? 可以导入程序进行模拟吗?
按键个数上限
按键个数上限
使用ESP32 arduino 蓝牙开发时,设置了许多按键,前12个没有问题,之后的都不会响应如
ESP32 S2 的 SPI
ESP32 S2 的 SPI
ESP32 S2的Arduino环境对于 SPI 的定义是有问题的。 打开ESP32-S2技术参考手册 (“es
啃萝卜可不可以用于arduino UNO R3 开发板
啃萝卜可不可以用于arduin
啃萝卜可不可以用于arduino UNO R3 开发板
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表