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 15Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);void setup() {// 初始化超声波模块引脚pinMode(TRIG, OUTPUT);pinMode(ECHO, INPUT);// 初始化 OLEDoled.begin();// 设置字体大小oled.setTextSize(2);// 设置文本颜色oled.setTextColor(SSD1306_WHITE);// 显示内容oled.display(); }void loop() {// 清除trigPindigitalWrite(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); }