专注电子技术学习与研究
当前位置:单片机教程网 >> Arduino >> 浏览文章

HC-SR04超声波模块的Arduino代码

作者:huqin   来源:本站原创   点击数:  更新时间:2014年04月03日   【字体:

今天入手了HC-SR04超声波模块、飞思卡尔三轴加速器、人体红外热释传感器。

先来介绍HC-SR04超声波模块:


 

1、本模块性能稳定,测度距离精确:
能和国外的SRF05,SRF02等超声波测距模块相媲美。模块高精度,盲区(2cm)超近,稳定的测距是此产品成功走向市场的有力根据!

2、主要技术参数:
1)使用电压:DC5V
2)静态电流:小于2mA
3)电平输出:高5V
4)电平输出:底0V
5)感应角度:不大于15度
6)探测距离:2cm-450cm
7)高精度:可达0.3cm

3.接线方式:

VCC、trig(控制端)、 echo(接收端)、 GND

4.使用方法:
一个控制口发一个10US以上的高电平,就可以在接收口等待高电平输出.一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了~~

5.模块工作原理:
  (1)采用IO触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
  (3)有信号返回,通过IO输出一高电平,高电平持续的时间就是
超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2;

Arduino代码:

// Trig接Arduino板的Digital 5口,触发测距;Echo接Digital 4口,接收距离信号。

int inputPin=4; // 定义超声波信号接收接口
int outputPin=5; // 定义超声波信号发出接口
int ledpin=13;
void setup()
{
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
pinMode(inputPin, INPUT);
pinMode(outputPin, OUTPUT);
}
void loop()

{
digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs
delayMicroseconds(2);
digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
delayMicroseconds(10);
digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平
int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间
distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)
Serial.println(distance); //输出距离值
delay(50);
if (distance >=50)
{//如果距离大于50厘米小灯亮起
digitalWrite(ledpin,HIGH);
}//如果距离小于50厘米小灯熄灭
else
digitalWrite(ledpin,LOW);
}

 

关闭窗口

相关文章