超声波传感器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使用和连接LCD您可以检查我的特定教程。

/ * *超声波传感器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由于3.3V引脚,超声波传感器正在使用5V。尝试在回声引脚上使用电阻,因为3.3V对于Trig引脚很好,但传感器的回声引脚将输出5V,可能会损坏您的Arduino DUI。

      回复
  1. 伊恩

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

    回复
  2. 哈瓦西

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

    回复
    • 德扬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高或低。

    关于,吨。

    回复
  8. 帕拉

    嗨,德扬

    我可以使用HCSR 04向另一个HC SR04发送数据吗?我的意思是让一个人用作发射机和其他接收器?如果是,我如何修改代码?

    回复
  9. rakan

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

    回复
  10. 威廉

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

    回复
      • 威廉

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

  11. yoangel.

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

    回复
  12. 一只蚂蚁

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

    回复
  13. 胖子

    我将传感器连接到PIC 16F877A,我想测量坦克中的水量,但是我会得到虚假的结果可能是问题

    回复
  14. 马利克

    嗨,我已经检查过这个和许多其他代码,但它没有提供准确的距离,只能给出2英寸。另外我想修改我如何做到的范围?

    回复
  15. 尼基泡芙

    老兄,你的教程太棒了!!
    我从来没有像这个教程一样找到......
    容易理解,易于执行

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

    非常感谢

    回复
  16. 迈克克劳福德

    嗨伴侣,我想知道如何在应用程序发明家上的超声波传感器上展开数据,你可以帮我吗?thx和最好的问候。

    回复
    • 德扬Nedelkovski

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

      回复
  17. 阿古斯萨利姆

    嗨…好project1
    我有个问题,,
    什么代码Arduino Mega与另一个arduino匹配?就像一个nano,uno..etc
    谢谢你!

    回复
  18. 卜拉欣

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

    回复
  19. Gustavo

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

    回复
  20. Brian Burroughs.

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

    回复
  21. Brian Burroughs.

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

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

    回复
  22. 胭脂

    你好,我是来自罗马的胭脂红,
    它可以改变绝对读数到相对读数与电位器改变到相对距离显示?
    谢谢你!

    回复
  23. 克里斯

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

    回复
    • 德扬Nedelkovski

      这是个好问题。好吧,它是电子产品,yabo7. com所以它应该能够工作,但我不能告诉这些廉价的传感器是多么可靠的。

      回复
  24. 纳贾

    你好它是真的,这个传感器可以从2cm - 4厘米中检测到吗?如果距离超过4米,则在液晶显示屏上显示什么?

    回复
  25. 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引脚的代码和逻辑你完全有理由感到困惑,我确实感到困惑,但这里有个窍门:
      当我们激活触发器输入时(DigiteWrite(Trigpin,高);),我们发送超声波,但同时,传感器在内部提高回声销。因此,当程序到达PlainIn()函数时,回声引脚已经很高,这意味着计数将取决于对象距离。

      回复
  26. 克里斯蒂娜

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

    谢谢,
    克里克

    回复
  27. 阿巴

    你好德州,

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

    谢谢

    回复
    • 德扬

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

      回复

留下一个回复

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

受到推崇的

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

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

受到推崇的

2019年针对初学者的8个最佳Arduino入门工具包

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

受到推崇的

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

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