目 录
超声波是一种振动频率超过20kHz的机械波,沿直线方向传播,传播方向性好,传播距离也较远,在介质中传播时遇到障碍物就会产生反射波。此外,模块本身体积小,易于在任何机器人项目中使用,并提供2厘米至400厘米(约1英寸至13英尺)之间出色的非接触范围检测,精度为3mm。工作电压为5伏。由于超声波的以上特点,因此被广泛地应用于物体距离的测量中。
HC-SR04一款设计有超声波发射探头、接收探头、信号放大集成电路等超声波模块模块共四个引脚,VCC为5V供电,Trig为触发信号输入,Echo为回响信号输出,GND为电源地。
实现功能
在扔垃圾之前,用手或其他障碍物放在超声波传感器之前,当距离15cm时,舵机转动,实现盖子翻起。指示灯亮,蜂鸣器发生。在10秒后,舵机回到原位,盖子盖上。
VCC | HC-SR04电源接口,接Arduino上的5V引脚 |
Trig (Trigger) | 向外界触发超声波脉冲,接引脚12 |
Echo | 回响信号输出。当接收到反射信号时,引脚产生一个脉冲。脉冲的长度与检测发射信号所需的时间成正比,接引脚11 |
GND | HC-SR04接地引脚,接Arduino GND |
工作原理
Arduino给超声波模块Trig引脚10μs以上的脉冲触发信号,模块内部自动发送8个40kHz的声音脉冲,一旦检测到反射信号,即输出回响信号(Echo引脚)使设备的“超声特征”变得独一无二,从而使接收器能够将发射模式与环境超声噪声区分开,回响信号脉冲宽度与被测距离成正比。如果这些脉冲没有被反射回来,则回波信号将在38毫秒(38毫秒)后超时并返回低电平。
电路连接
控制代码
#include <Servo.h> Servo myservo; int trig=12; int echo=11; int led13=13; int led3=3; void setup(){ myservo.attach(9); Serial.begin(9600); pinMode(echo,INPUT); pinMode(trig,OUTPUT); pinMode(led13,OUTPUT); pinMode(led3,OUTPUT); } void loop(){ myservo.write(0); long val=0; digitalWrite(trig,HIGH); delayMicroseconds(15); digitalWrite(trig,LOW); val=pulseIn(echo,HIGH); float S=val/58.00; if(S<15){ myservo.write(100); digitalWrite(led13,HIGH); digitalWrite(led3,HIGH); } delay(10000); S=0; digitalWrite(led13,LOW); digitalWrite(led3,LOW); }