MENU
- 原理
- 硬件电路设计
- 软件程序设计
原理
超声波是一种频率高于20000Hz的声波,功率密度为p≥0.3W/cm,它的方向性好,反射能力强,易于获得较集中的声能。超声波用于许多不同的领域,比如检测物体和测量距离,清洗设备,消毒杀菌等。
超声波传感器使用声纳来确定与物体的距离。使用的超声波模块由2个超声波探头组成。
1、T表示Transmitter(发射),负责发送超声波信号;
2、R表示Receiver(接收),负责接收回响信号。
如果在使用过程中,对其中任意一个探头进行遮挡,都会使超声波无法正常测量距离。
底部有四个引脚,分别是VCC、GND、TRIG和ECHO。
1、VCC:5V供电引脚;
2、GND:接地;
3、TRIG:控制信号输入;
4、ECHO:回响信号输出。
以上时序图表示超声波模块的基本工作原理。
1、采用IO口TRIG触发测距,给一个10us的高电平信号;
2、模块自动发送8个40khz的方波,自动检测是否有信号返回;
3、有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
测试距离 = (高电平时间 * 声速(340M/S)) / 2
回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。
距离 = 高电平时间 * 声速(340m/s) / 2
硬件电路设计
物料清单(BOM表)
材料名称 数量 0.96寸OLED屏幕 1 杜邦线(跳线) 若干 面包板 1 超声波模块 1
软件程序设计
该程序的功能是通过超声波模块测算距离并显示在OLED屏幕上。
#include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> // 定义超声波模块引脚 #define TRIG 13 #define ECHO 14 // OLED 显示屏尺寸 #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 // 软件SPI总线 #define OLED_MOSI 19 #define OLED_CLK 18 #define OLED_DC 2 #define OLED_CS 4 #define OLED_RESET 15 Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); void setup() { // 初始化超声波模块引脚 pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT); // 初始化 OLED oled.begin(); // 设置字体大小 oled.setTextSize(2); // 设置文本颜色 oled.setTextColor(SSD1306_WHITE); // 显示内容 oled.display(); } void loop() { // 清除trigPin digitalWrite(TRIG, LOW); delay(2); // 将trigPin设置为HIGH状态10微秒 digitalWrite(TRIG, HIGH); delay(10); digitalWrite(TRIG, LOW); // 读取echoPin,返回声波传播时间(微秒) float time = pulseIn(ECHO, HIGH); // 计算距离 float distance = time * 0.034 / 2; // 清空屏幕 oled.clearDisplay(); // 设置光标位置 oled.setCursor(0, 15); // 显示文字 oled.print("Distance: "); oled.print(distance); oled.print("cm"); // 刷新屏幕 oled.display(); // 延迟一段时间后更新显示 delay(100); }