Arduino教程(提高篇)——SR04超声波类库的使用
奈何col 于 2013-5-12 13:43 编辑
SR04是最常见的超声波传感器之一,价格便宜,好用,是arduino开发的必备良品~
其工作原理如下
采用IO触发测距,给至少10us的高电平信号;模块自动发送8个40KHz的方波,自动检测是否有信号返回;有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.距离=(高电平时间*声速(340m/s))/2;
下面使用的是arduino官方推荐的SR04超声波传感器类库
SR04.rar
将附件下载后解压到arduinoIDE下的libraries文件夹即可,如下图
打开ArduinoIDE,选择SR04例程
打开后即可见到如下程序
[C++] 纯文本查看 复制代码
#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);}
[C++] 纯文本查看 复制代码
#define TRIG_PIN 2
#define ECHO_PIN 3
TRIG接到arduino的第二脚
ECHO接到arduino的第三脚
VCC、GND接上打开串口调试,即可看到效果了
最后提供一个不用库直接驱动SR04的程序(上面库,就是把这个程序封装了一次)
[C++] 纯文本查看 复制代码
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);
}
via - arduino中文社区