超声波传感器HC-SR04和Arduino教程

在本Arduino教程中,我们将学习如何HC-SR04超声波传感器的工作,以及如何使用Arduino板。你可以观看下面的视频或阅读下面的书面教程。

亚博88下载超声波传感器是如何工作的


它以40 000 Hz发出超声波穿过空气,如果它的路径上有物体或障碍物,它将反弹回模块。考虑到旅行时间和声音的速度,您可以计算距离。

超声波传感器如何工作亚博88下载

HC-SR04超声波模块有4个引脚,接地,VCC,三角和回波。模块的地引脚和VCC引脚需要分别连接Arduino板上的地引脚和5伏引脚,以及Arduino板上的任何数字I/O引脚的三角引脚和回波引脚。

本教程所需的组件


您可以从下面的任何网站获取这些组件:

yaboAG娱乐城披露:这些是附属链接。作为一名亚马逊助理,我从合格的购买中获得收入。

为了生成超声波,需要将三角函数设置为高状态10µs。这将发出8个周期的声波爆炸,将以声音的速度传播,它将在Echo针接收。Echo引脚将以微秒为单位输出声波传播的时间。

超声波传感器图

例如,如果物体远离传感器10厘米,声音的速度为340米/秒或0.034厘米/μs,声波需要大约294秒。但是,您将从回声引脚获得的是,因为声波需要向前行驶并向后反弹。因此,为了获得CM的距离,我们需要将接收的旅行时间值从回声引脚乘以0.034并将其划分为2。

超声波传感器等分

Arduino和HC-SR04超声波传感器代码


首先你必须定义Trig和Echo引脚。在这种情况下,它们是Arduino板上的引脚编号9和10,它们被命名为trigPin和echoPin。然后,你需要一个Long变量,命名为“持续时间”,表示你将从传感器获得的旅行时间,还有一个整数变量表示距离。

//定义引脚数Const int Trigpin = 9;const int echoPin = 10;//定义长持续时间的变量;int距离;

在设置中,您必须将trigPin定义为输出,将echoPin定义为输入,并启动串行通信,以便在串行监视器上显示结果。

void setup() {pinMode(trigPin, OUTPUT);//设置trigPin为输出pinMode(echoPin, INPUT);//设置echoPin为输入串行。begin(9600);//启动串行通信}

在循环中,首先你必须确保trigPin是清楚的,所以你必须将该pin设置为2µs的LOW状态。现在为了产生超声波,我们必须将trigPin设置在HIGH状态为10µs。使用pulseIn ()函数,你必须读取旅行时间,并将该值输入变量“持续时间”。这个函数有两个参数,第一个是echo pin的名字,第二个可以写HIGH或LOW。

//清除Trigpin DigitalWrite(Trigpin,低);delayMicroseconds (2);//设置trigPin on HIGH状态为10微秒delayMicroseconds (10);DigitalWrite(Trigpin,低);

在本例中,HIGH表示pulsIn ()功能将等待引脚致电由反弹声波引起,它将开始定时,然后它将等待引脚当声波将结束时会降低,这将停止定时。最后,函数将返回微秒中脉冲的长度。

为了获得距离,我们将持续时间乘以0.034并将其除以2,因为我们以前解释了这个等式。

//读取echoPin,返回以微秒为单位的声波传播时间= pulseIn(echoPin, HIGH);//计算距离距离=持续时间*0.034/2;//打印串行监视器序列号的距离.Print(“距离:”);serial.println(距离);

最后我们将在串行监视器上打印距离的值。

这是完整的代码:

/* *超声波传感器HC-SR04和Arduino教程* * by Dejan Nedelkovski, * www.HowToMechatronics.com * *亚搏手机版官方下载/ //定义引脚数const int trigPin = 9;const int echoPin = 10;//定义长持续时间的变量;int距离;void setup() {pinMode(trigPin, OUTPUT);//设置trigPin为输出pinMode(echoPin, INPUT);//设置echoPin为输入串行。begin(9600);//启动串行通信}void loop(){//清除trigPin digitalWrite(trigPin, LOW);delayMicroseconds (2);//设置trigPin on HIGH状态为10微秒 delayMicroseconds(10); digitalWrite(trigPin, LOW); // Reads the echoPin, returns the sound wave travel time in microseconds duration = pulseIn(echoPin, HIGH); // Calculating the distance distance= duration*0.034/2; // Prints the distance on the Serial Monitor Serial.print("Distance: "); Serial.println(distance); }

Arduino超声波传感器和LCD显示示例

这是另一个例子如何使用超声传感器Arduino和显示结果在LCD上。

Arduino超声波传感器和LCD显示示例

您可以如下连接超声波传感器和LDC:

Arduino超声波传感器及LDC电路图

测量距离的代码与基本示例基本相同。这里,我们把结果打印在液晶显示器上,而不是在串行显示器上。如果你需要更多详细介绍了如何使用和连接液晶显示器与Arduino你可以查看我的教程。

/ * *超声波传感器HC-SR04和Arduino教程* * by dejan nedelkovski,* www.www.kuaixg.com * *亚搏手机版官方下载 / #include  //包括液晶库液晶LCD(1,2,4,5,6,7);//创建LCD对象。参数:( RS,ENABLE,D4,D5,D6,D7)CONSS INT TRIGPIN = 9;const int echoPin = 10;持续时间;int distancm,tatchinginch;void setup(){lcd.begin(16,2);//初始化界面到LCD屏幕,并指定显示Pinmode的尺寸(宽度和高度)(Trigpin,输出);Pinmode(echopin,输入); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distanceCm= duration*0.034/2; distanceInch = duration*0.0133/2; lcd.setCursor(0,0); // Sets the location at which subsequent text written to the LCD will be displayed lcd.print("Distance: "); // Prints string "Distance" on the LCD lcd.print(distanceCm); // Prints the distance value from the sensor lcd.print(" cm"); delay(10); lcd.setCursor(0,1); lcd.print("Distance: "); lcd.print(distanceInch); lcd.print(" inch"); delay(10); }

我希望你喜欢这个教程,并学到一些新的东西。欢迎在下面的评论区提出任何问题,不要忘记看看我收集的Arduino项目足彩网女欧洲杯

95回复

    • 德扬Nedelkovski

      问题可能是您使用的是Arduino DUE,它有3.3V引脚,超声波传感器是5V工作。尝试使用一个电阻在回波引脚,因为3.3V是好的三角引脚,但传感器的回波引脚将输出5V到您的Arduino DUI,这可能会损坏它。

      回复
  1. 伊恩

    不幸的是,我得到相同的0 0 .....对超声波传感器的响应,以及使用Mega 2560只用传感器代码本身??
    还有其他的建议吗?
    欢呼,伊恩

    回复
  2. Haravey

    伟大的视频。谢谢。我正在尝试将其设置为触发在预定范围内的门或继电器,以便如果出现太近,则会离开灯。您是否已经开发了这种情况的草图。我似乎不能让它自己正常工作。谢谢。

    回复
    • 德扬Nedelkovski

      谢谢!这是一个教程,可以帮助你理解传感器的基本工作原理和代码,让它在Arduino中工作,但我没有你描述的特定代码。每个项目都是一个独特的,需要一个独特的代码,但我不做自定义代码。我希望看一些我的其他教程,将使您的代码编写知识足够好,以便您可以为您的项目制作自己的代码。干杯!

      回复
  3. 托尔

    嘿,我得到了一切工作和你的教程是伟大的!我的显示器工作,但它只是一个蓝屏。它只是蓝色的,没有数字或任何东西在上面,请帮助!

    回复
  4. 哈维

    你能给我发邮件或更新这个项目的图的连接通过添加16×2液晶绿屏泰提前这个网站是一个真正的帮助我,我和我的第一个arduino项目使用arduino uno是好或我必须改变一些问题给项目等待快速反应:)

    回复
    • 特里·舒尔茨

      你好,我一直在研究HC-SR04超声波模块,想知道你是否可以给我一个带液晶显示器连接的项目示意图,谢谢你的时间

      回复
  5. 朱迪凯瑟琳

    传感器和LCD的源代码是在一个草图下吗?或者我需要使用两块arduino板??如果是的话,我怎么能把这两者联系起来呢?

    回复
  6. Gaurav Jagannath Alande.

    你能把arduino与HCSR-04传感器-SG-90伺服电机和带有蜂鸣器接口的lcd的接口代码发给我吗

    回复
  7. 亲爱的德国,我正在建造一个简单的机器人,有这个传感器。问题是:我想避免距离约50厘米的碰撞。如何在我制作的简单软件中实现代码这个值。(机器人被编程为驱动八个),简单的代码在两个引脚上为DigiteWrite高或低。

    问候,吨。

    回复
    • 德扬Nedelkovski

      传感器可以探测到那个距离的物体,所以我猜使用一些“如果”语句,你可以制作一个简单的代码来避免碰撞。

      回复
  8. 帕拉

    嗨,德扬

    我可以使用HCSR 04发送数据到另一个HC SR04吗?我的意思是让一个作为发送器,另一个作为接收器?如果是,我如何修改代码?

    回复
  9. rakan

    亲,
    我有一个想法测量水箱中的水量。
    它已经在您的视频实验中看到了运动传感器。
    问:是否有可能将屏幕上的厘米变化转换为百分比,例如40%或50%。
    谢谢。
    rakan.

    回复
  10. rakan

    我能收到你的邮件吗?我们想和你就这个想法签订合同。
    谢谢。

    回复
  11. 威廉

    亲爱的,超声波有可能检测到水管漏水吗?是否超声波能接收到频率或其他值来表示水管有泄漏时,该值会发生变化?谢谢

    回复
      • 威廉

        主席先生,因为我需要使用超声波传感器来检测从水管接收频率/脉冲的水管泄漏,所以可以将超声波传感器接收频率/脉冲?由于这是超声波的项目,你可以花时间解释超声波的概念,在检测水管泄漏中,我非常混淆,谢谢你回复我......。

  12. yoangel

    你好,如果我想要测量不是厘米,如果不是公升或毫升的公式应该是?因为我想用这个传感器来测量水箱的水位

    回复
  13. 一只蚂蚁

    嘿Dejan,是否有可能在输出中添加声音,以便百叶窗也可以使用距离!

    回复
  14. 胖子

    我将传感器连接到PIC 16f877a,我想测量水箱中的水量,但我得到了错误的结果,这可能是问题所在

    回复
  15. 马利克

    你好,我检查了这个和许多其他代码,但它没有给出准确的距离,只给出2英寸。另外,我想修改范围,怎么做呢?

    回复
  16. 尼基泡芙

    老兄,你的教程太棒了!!
    我从来没有发现像这个教程…
    容易理解,易于执行

    你有私人联系吗?我在我的科学中有最终项目,需要你的新想法......你能吗?

    非常感谢

    回复
  17. 迈克·克劳福德

    你好,我想知道如何从超声波传感器的数据铸造的应用程序发明者,你可以帮助我吗?感谢并致以最良好的问候。

    回复
    • 德扬Nedelkovski

      嗨。很抱歉,但我能说的是检查我的教程的应用程序发明者和结合本教程,让自己的项目。
      我的工作是教授一个特定传感器、模块或程序的基础知识,而您应该使用从这些教程中获得的知识来制作一个特定的项目。
      干杯!

      回复
  18. 阿古斯萨利姆

    嗨…好project1
    我有一个问题,
    什么代码arduino的百万匹配另一种类型的arduino?像一个纳米,uno . .等
    谢谢你!

    回复
  19. 卜拉欣

    我想通过使用Ardouino确定空间点(exemple房间)的坐标(x,yz)是可能的吗?怎么做?

    回复
  20. Gustavo

    有没有办法缩短测量到的最大距离?顺便说一句,很棒的tuto

    回复
  21. Brian Burroughs.

    嗨,你是否有整个事情的接线原理?距离传感器和LCD?

    回复
  22. Brian Burroughs.

    快速问题的德国,我想用覆盆子PI 3钩距离传感器3,所有教程我看到似乎使用电阻,如何与arduino不需要它们,但你需要他们用pi?

    我可以在没有电阻的情况下在pi上吗?

    回复
  23. 胭脂

    大家好,我是卡迈因,来自罗马,
    它可以改变绝对读数到相对读数与电位器改变到相对距离显示?
    谢谢你!

    回复
  24. 克里斯

    超声波传感器能全天候工作吗?日常吗?它会烧还是会变热?谢谢

    回复
  25. 纳贾

    你好,这个传感器真的能探测到2cm - 4米的距离吗?如果距离超过4米,液晶显示器会显示什么?

    回复
  26. Hannu奥林

    谢谢你的清晰解释。我仍然不明白。计数开始,当Echopin(输入)获得高位(在此示例中)时开始。当它降低状态时,计数停止。Pingpin中的时间差是10US,并且它们在echopin中的时间差是10U。它总是相同的。距离没有任何差异。信号的开始在信号的末端快速移动。实际上开始计数。当信号进入Pingpin时必须启动。 And it has to stop, when the signal come sback to echoPin. Would You please explain me more.

    回复
    • 德扬Nedelkovski

      根据触发器和echo引脚的代码和逻辑你完全有理由感到困惑,我确实感到困惑,但这里有个窍门:
      当我们激活触发器输入(digitalWrite(trigPin, HIGH);),我们发送超声波,但同时,传感器内部提高回声引脚。因此,当程序到达pulseIn()函数时,echo pin已经是HIGH,这意味着计数将取决于对象的距离。

      回复
  27. 克里斯蒂娜

    嗨。
    我是新的,但我想知道。是否强制使用面包板?或者我可以直接将传感器直接连接到我的arduino uno?

    谢谢,
    克里克

    回复
  28. 阿巴

    你好,德扬,

    例如,我在测量一个容器的体积差。如何修改代码以度量容积。

    谢谢

    回复
    • 德扬

      嘿,你需要测量三维,宽度,长度和深度,并将它们乘以获得卷。检查我的Arduino系列测量器项目,其中我展示了类似的东西,或者如何使用该传感器测量区域。

      回复

发表评论

您的电子邮件地址将不会被公布。

受到推崇的

2019年面向初学者和爱好者的最佳入门级示波器

最适合初学者和爱好者的示波器

受到推崇的

2019年初学者的8个最佳Arduino Starter Kits

8个最好的arduino初学者工具包

受到推崇的

用于初学者和爱好者的最佳3D打印机 -  3D打印

初学者和爱好者的最佳3D打印机