W80x 超声波测微距

发布于 2023-07-25 17: 16: 56

超声波传感器介绍

超声波传感器是一种常用的测距传感器, 它利用超声波的传播特性进行距离测量. 它通常由超声波发射器和接收器组成.
超声波传感器的工作原理是: 首先, 超声波发射器发送一个超声波脉冲信号, 该脉冲信号在空气中传播. 当这个脉冲波遇到物体时, 会被物体表面反射回传感器, 并被接收器接收到. 接收器会将接收到的回波转化为电信号, 并通过处理电路进行处理.
通过测量发射超声波和接收回波之间的时间差, 可以计算出超声波传感器到物体的距离. 根据声速 (通常在空气中为约 343 米/秒) 和时间差, 可以使用简单的速度-时间-距离公式 (d = v * t) 计算出实际距离.
常见的超声波传感器包括 HC-SR04, LV-MaxSonar, Ultrasonic Ranging Module 等, 它们具有不同的特性和性能参数. 在选择和使用超声波传感器时, 需要根据具体需求和应用场景进行选择, 并注意参考传感器的说明文档和资料进行正确的接线和设置.

必需品

  1. 1 x 面包板
  2. 1 x W801 板
  3. 1 × HC-SR04 超声波模块
  4. 4 × 跳线

接线图

根据电路图连接面包板上的元件, 如下图所示.

超声波. jpg

草图

在计算机上打开 Arduino IDE 软件. 使用 Arduino 语言对电路进行编码和控制. 点击 "新建" 打开新建草图文件. 这里不讨论具体的配置.

open. jpg

代码

const int Triger = PA2; 
const int Echo = PA1; 
unsigned long timeOfFlight () ;  //function declaration

void setup () 
{
  Serial. begin (115200) ; 
  pinMode (Triger,  OUTPUT) ; 
  pinMode (Echo,  INPUT) ; 

}

void loop () 
{
   digitalWrite (Triger,  LOW) ; 
   delay (2) ; 
   digitalWrite (Triger,  HIGH) ; 
   delay (10) ; 
   digitalWrite (Triger,  LOW) ; 
   float distance =  (timeOfFlight () *0. 0347) /2;  //The temperature is 25℃ for the speed of sound. 
   Serial. print ("Distance: ") ; 
   Serial. print (distance) ; 
   Serial. print ("cm\n") ; 
   delay (100) ;   //Delay 100ms. 

}
 unsigned long timeOfFlight () 
{

  unsigned long startTime,  endTime; 
  unsigned long duration; 
  while  (digitalRead (Echo)  == LOW) ;  //Wait for the Echo pin to turn high to start timing. 
  startTime = micros () ;  //us. 
  while  (digitalRead (Echo)  == HIGH) ;  //Wait for the Echo pin to turn low to end timing. 
  endTime = micros () ; 
  duration = endTime - startTime; 
  return duration;  // return value. 
}

代码导入步骤

首先单击 Verify 验证代码是否正确

1eb55992e618394f516378dc48b779b3. jpg

接着单击 Upload 上传代码弹出保存框, 在相应的位置编辑文件名并保存即可

27f363e694f6a241818561e7e1236ab9. jpg

16892212723385. jpg

也可以如下步骤

烧录步骤 1_副本. jpg

最后等待上传需要十几秒的时间, 显示以下即表示成功

6f1f1a696c4d4368c9238972d20e5c5b. jpg

代码解释

 endTime = micros () ; 

micros () 函数返回开发板开始运行当前程序时的微秒数. 该数字在大约 70 分钟后溢出, 即回到零.
此函数返回自程序启动后的微秒数 (无符号长整型) .

结果

现在, 通过单击顶部绿色条右侧的图标或按 Ctrl+Shift+M, 在 Arduino IDE 中打开串口监视器观测打印的通过超声波测出的物体距离.
f1b6ce4e7efae324e5ed81b8cb5c263c. jpg

HC-SR04. jpg

新手一个, 如有更精确的方法, 希望各位大佬不吝赐教!
1 条评论

发布
问题