模块初探:HC-SR04超声波测距模块感应灯

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36169781/article/details/86480688

好久没有更新关于Arduino方面的文章了,其实前几天一直在做,不过实现的功能都比较单一,也没有什么新奇的想法。也由于没钱的原因,来来去去也就只能围着一个小灯棒转,红外遥控、蓝牙远程控制、人体红外感应、红外避障传感,各种各样的去驱动点亮小灯棒。不过比较之后,除了蓝牙和红外,超声波测距模块是最为理想的传感方式了。
  人体红外感应模块虽然最符合人来即亮,人走即灭的理念,但是灵敏度真的是太低,听说有算法解决的算法,但是最后也没有琢磨出来。最后几天将红外避障模块用做感应器,效果还是相当不错的,特别是灵敏度,红外以光的速度传播,丝毫没有延迟。美中不足的是,红外避障模块的最大感应距离上限40cm不到,而且线性的红外光在经过一些小空隙,比如说手指间的时候,也会触发低电平信息,导致灯熄灭。
  而超声波测距模块就克服了两者的不足,此模块最大感应距离可以达到3m左右,并且超声波发出也有一个音波的广角,实验效果还是比较理想的。
  下面是制作一个超声波测距模块为感应器,继电器为动作执行器的感应LED灯棒。实现的功能为:当30cm内有物体时,给继电器发送一个高电平,并持续3秒,3秒后如果物体依然存在在30cm范围内,继续输出高电平,反之则输出一个低电平,由此来控制继电器的通断。

模块原理

HCSR04

通过模块说明文档可知,给Arduino板的数字接口接上超声波测距传感器后,程序开始Trig口会想模块发送一个10μs长的高电平信号,此时模块开始工作,发射器发出8个40KHz的超声波脉冲,同时内部计时器开始运行。当超声波脉冲遇到障碍物后立即返回,接收器接收到返回脉冲的同时会从Echo口向Arduino发送一个持续高电平,高电平持续的时间即为超声波从发射到被接收的时间。然后再通过声速与时间的关系,从而测出被测物体与模块的距离。
我给程序添加了一个输出的串口,这个串口能实时输出障碍物距离,通过距离的测定,规定如果障碍物与模块距离小于30cm,则触发数字引脚4输出一个高电平,并持续3s。而引脚4我连接了一个继电器,使用继电器的通断来实现LED灯管的点亮与熄灭。

材料准备

  1. Arduino UNO 开发板。
  2. Arduino IDE 1.81。
  3. 超声波测距模块。
  4. 面包线、面包板。
  5. LED灯管。

线路连接

继电器我使用了外接电源供电,只将信号端口插在Arduino上:

继电器针脚:
DC+ -> 5V
DC- -> GND
IN -> 4

使用高电平触发。
超声波测距模块:
VCC -> 5V
GND -> GND
Trig -> 2
Echo -> 3

效果演示

http://player.youku.com/player.php/sid/XMjY1ODczNzk3Mg==

源代码

const int TrigPin = 2; 
const int EchoPin = 3; 
const int jdqPin = 4;
float distance; 
void setup() 
{   // 初始化串口通信
     Serial.begin(9600); 
     pinMode(TrigPin, OUTPUT); 
     pinMode(jdqPin, OUTPUT); 
     pinMode(EchoPin, INPUT);
     Serial.println("Load Distance:");
} 
void loop() 
{ 
    // 高脉冲去触发TrigPin 
     digitalWrite(TrigPin, LOW); 
     delayMicroseconds(2); 
     digitalWrite(TrigPin, HIGH); 
     delayMicroseconds(10);
     digitalWrite(TrigPin, LOW); 
    //计算出距离
     distance = pulseIn(EchoPin, HIGH) / 58.00;
     Serial.print(distance); 
     Serial.print(" cm"); 
     Serial.println(); 
     delay(100); //串口输出距离结果的频率
     if(distance<30){
         digitalWrite(jdqPin,HIGH);
     }
     else
         digitalWrite(jdqPin,LOW);
     delay(3000);
}

猜你喜欢

转载自blog.csdn.net/qq_36169781/article/details/86480688