本帖最后由 奈何col 于 2013-5-12 13:43 编辑
SR04是最常见的超声波传感器之一,价格便宜,好用,是arduino开发的必备良品~
其工作原理如下
- 采用IO触发测距,给至少10us的高电平信号;
- 模块自动发送8个40KHz的方波,自动检测是否有信号返回;
- 有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.距离=(高电平时间*声速(340m/s))/2;
下面使用的是arduino官方推荐的SR04超声波传感器类库
SR04.rar
(2.45 KB, 下载次数: 20331)
- 将附件下载后解压到arduinoIDE下的libraries文件夹即可,如下图
- 打开后即可见到如下程序
[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接上 - 打开串口调试,即可看到效果了
最后提供一个不用库直接驱动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] |