文号
t60373
阅读
5931
回复
0
收藏
1
所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
转帖:Arduino教程(提高篇)——SR04超声波类库的使用
2013/09/06
IP:广西
Arduino教程(提高篇)——SR04超声波类库的使用

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

001.jpg


其工作原理如下


·


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


下面使用的是arduino官方推荐的SR04超声波传感器类库

attachment icon SR04超声波传感器类库.rar 2.45KB RAR 82次下载
(2.45 KB)

·


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

打开ArduinoIDE,选择SR04例程

003.jpg
·

打开后即可见到如下程序
#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 XXXXXXXXXX");
delay(1000);}
void loop() {
a=sr04.Distance();
Serial.print(a);
Serial.println("cm");
delay(1000);}

如下连接你的超声波传感器

#define TRIG_PIN 2
#define ECHO_PIN 3

TRIG接到arduino的第二脚
ECHO接到arduino的第三脚
VCC、GND接上
· 打开串口调试,即可看到效果了
004.jpg

·



最后提供一个不用库直接驱动SR04的程序(上面库,就是把这个程序封装了一次)
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);
}
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的