创新创业教育 4.2.3 超声波模块应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2.3 超声波模块应用
超声波时序图
控制程序
#include <NewPing.h>
#define TRIGGER_PIN 12 // 宏定义12号数字端口为触发
#define ECHO_PIN 11 // 宏定义11号数字端口为接收模块反馈信号
#define MAX_DISTANCE 200 //宏定义模块的最大测量距离,规格标450cm,但实测一般为200cm
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); //声明模块的参数void setup() {
Serial.begin(115200); // 设置串口的波特率,可以改为9600
}
void loop() {
delay(500); // 每次测量的时间间隔,模块规格为40Hz,因此最小为25ms,但一般不少于30ms
Serial.print("Ping: ");
Serial.print(sonar.ping_cm()); // 调用库里面的 ping_cm() 方法,直接输出距离
Serial.println("cm");
}
在没有库文件的情况下也是可以使用超声波模块测出障碍物距离,控制程序如下:const int TrigPin = 2;
const int EchoPin = 3;
float distance;
void setup()
{ // 初始化串口通信及连接SR04的引脚
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
// 要检测引脚上输入的脉冲宽度,需要先设置为输入状态 pinMode(EchoPin, INPUT);
Serial.println("Ultrasonic sensor:");
}
void loop()
{
// 产生一个10us的高脉冲去触发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(1000);
}
超声波模块原理图。