在本Arduino教程中,我们将学习如何HC-SR04超声波传感器的工作,以及如何使用Arduino板。你可以观看下面的视频或阅读下面的书面教程。
亚博88下载它是如何运作的 - 超声波传感器
它以40 000 Hz发出超声波穿过空气,如果它的路径上有物体或障碍物,它将反弹回模块。考虑到旅行时间和声音的速度,您可以计算距离。
HC-SR04超声波模块有4个引脚,接地,VCC,三角和回波。模块的地引脚和VCC引脚需要分别连接Arduino板上的地引脚和5伏引脚,以及Arduino板上的任何数字I/O引脚的三角引脚和回波引脚。
本教程所需的组件
您可以从下面的任何网站获取这些组件:
- 超声波传感器HC-SR04 ............亚马逊/Banggood/aliexpress.
- Arduino电路板 .................................亚马逊/Banggood/aliexpress.
- 面包板和跳线.........亚马逊/Banggood/aliexpress.
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上显示结果。
您可以如下连接超声波传感器和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项目集合足彩网女欧洲杯。
请注意您的Fritzing接线图中的错误,该方法将GND和VCC显示为Echo。
谢谢
谢谢你的评论。我会改那个的。
你能把更新后的超声波电路示意图发给我吗?
先感谢您,
Pradeep
它已经更新了。
Connet VCC到+5伏
请用LCD向我们提供超声波的图表
在这里,您可以找到详细信息如何连接和使用LCD:
https://亚搏手机版官方下载www.kuaixg.com/tutorials/arduino/lcd-tutorial/
我们可以用led来表示距离????吗如果是,请将代码发送给我....谢谢
你可以,但我没有密码。
https://亚搏手机版官方下载www.kuaixg.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/
你好,
遵循我猜的一切。
我仍然看到距离不会大于1厘米:
0in,0cm.
0in,0cm.
0in,0cm.
0in,0cm.
0in,1cm.
0in,0cm.
0in,0cm.
我正在使用Arduino到期,因为其他任何东西都可以直接连接到电路板。
什么好主意吗?
此致
问题可能是您正在使用的Arduino由于3.3V引脚,超声波传感器正在使用5V。尝试在回声引脚上使用电阻,因为3.3V对于Trig引脚很好,但传感器的回声引脚将输出5V,可能会损坏您的Arduino DUI。
确保您的Trig和回波引脚连接到数字销9和10而不是11和12。
不幸的是,我得到相同的0 0 .....对超声波传感器的响应,以及使用Mega 2560只用传感器代码本身??
任何其他建议?
欢呼,伊恩
很抱歉听到这个消息,但我刚刚尝试过这个代码,它与我的HC-SR04完美地工作。你必须做错了什么,或者你的传感器无法正常工作。
谢谢你对此是如此活跃。
我应该使用什么类型的Arduino?
嗯,您可以通过几乎任何工作电压为5V的模型进行。
你好,你忘记在LCD代码中写液晶了
是的,谢谢,现在修好了。
伟大的视频。谢谢。我正在尝试将其设置为触发在预定范围内的门或继电器,以便如果出现太近,则会离开灯。您是否已经开发了这种情况的草图。我似乎不能让它自己正常工作。谢谢。
谢谢!这是一个教程,可以帮助您了解传感器的基本工作原理和将其与Arduino合作的代码,但我没有特定的代码,就像所描述的那样。每个项目都是一个唯一的,需要一个唯一的代码,但我不做自定义代码。我希望观看一些其他教程,将获得您的代码写入知识足够好,以便您可以为您的项目制作自己的代码。干杯!
嘿,我得到了一切工作和你的教程是伟大的!我的显示器工作,但它只是一个蓝屏。它只是蓝色的,没有数字或任何东西在上面,请帮助!
问题是显示器的对比度。使用电位器来调整对比度(如我的Arduino LCD教程所示)或制作一个有两个电阻的分压器。
你能给我发邮件或更新这个项目的图的连接通过添加16×2液晶绿屏泰提前这个网站是一个真正的帮助我,我和我的第一个arduino项目使用arduino uno是好或我必须改变一些问题给项目等待快速反应:)
很好地将电路原理图与我的Arduino LCD教程和这一组合结合。
嘿,你能上传/邮寄我的代码和图表,同时测量x轴和y轴距离...谢谢
你是什么意思,这是本教程中的哪个例子?
其实我想知道,如果我想在同一时间连接两个超声波并在显示器中显示输出,那么...那将是什么代码???谢谢
是的! !我做到了……不管怎样谢谢. .
你好,我一直在研究HC-SR04超声波模块,想知道你是否可以给我一个带液晶显示器连接的项目示意图,谢谢你的时间
你好,苏加塔,你做到了!你能告诉我密码吗?谢谢。
传感器和LCD的源代码是在一个草图下吗?或者我需要使用两块arduino板??如果是的话,我怎么能把这两者联系起来呢?
这是一个Arduino,一个草图。超声波传感器连接的解释和LCD连接检查我的Arduino LCD教程
你能把arduino与HCSR-04传感器-SG-90伺服电机和带有蜂鸣器接口的lcd的接口代码发给我吗
对不起,我没有这样的代码。
我能用PIC控制器做同样的事情吗?通过改变程序
是的,肯定可以。
我可以为Arduino Uno Board使用此代码吗?
是的,你可以。
亲爱的德国,我正在建造一个简单的机器人,有这个传感器。问题是:我想避免距离约50厘米的碰撞。如何在我制作的简单软件中实现代码这个值。(机器人被编程为驱动八个),简单的代码在两个引脚上为DigiteWrite高或低。
关于,吨。
嗯,传感器可以在该距离检测对象,以便我猜使用一些“如果”语句,您可以制作简单的代码来避免碰撞。
嗨,德扬
我可以使用HCSR 04向另一个HC SR04发送数据吗?我的意思是让一个人用作发射机和其他接收器?如果是,我如何修改代码?
我还没试过,所以我什么都不能说。你应该试试,这是可能的。
亲,
我有一个想法测量水箱中的水量。
它已经在您的视频实验中看到了运动传感器。
问:是否有可能将屏幕上的厘米变化转换为百分比,例如40%或50%。
谢谢。
rakan.
当然,您只需要在代码中实现数学运算。
我能收到你的邮件吗?我们想和你签订这个协议。
谢谢。
我可以收到您的电子邮件,我们希望与您合同。
谢谢。
亲爱的,超声波有可能检测到水管漏水吗?是否超声波能接收到频率或其他值来表示水管有泄漏时,该值会发生变化?谢谢
好吧,我不太确定这个。我猜超声波可能会在撞到水的情况下反弹,但我不能说它是否会为你的想法而工作。
主席先生,因为我需要使用超声波传感器来检测从水管接收频率/脉冲的水管泄漏,所以可以将超声波传感器接收频率/脉冲?由于这是超声波的项目,你可以花时间解释超声波的概念,在检测水管泄漏中,我非常混淆,谢谢你回复我......。
我的HC SR04总是给予最大输出24厘米。
现在该怎么办>
如何来吗?您是否像教程中所示的那样正确地连接了所有内容,以及是否使用了完全相同的源代码?
您曾经用哪种软件绘制此电路设计
弗里茨。
你好,如果我想要测量不是厘米,如果不是公升或毫升的公式应该是?因为我想用这个传感器来测量水箱的水位
如果您知道罐的尺寸,可以使用和转换单位“cm”以测量罐的“升”。
嘿Dejan,是否有可能在输出中添加声音,以便百叶窗也可以使用距离!
当然这是有可能的。
我将传感器连接到PIC 16F877A,我想测量坦克中的水量,但是我会得到虚假的结果可能是问题
抱歉,但我没有使用特定的微控制器测试此模块。
嗨,我已经检查过这个和许多其他代码,但它没有提供准确的距离,只能给出2英寸。另外我想修改我如何做到的范围?
代码100%正常,所以要么是连接错误,要么是传感器出了问题。
老兄,你的教程太棒了!!
我从来没有像这个教程一样找到......
容易理解,易于执行
你有私人联系吗?我在我的科学中有最终项目,需要你的新想法......你能吗?
非常感谢
谢谢!抱歉,但我不在私人项目上工作。足彩网女欧洲杯
嗨伴侣,我想知道如何在应用程序发明家上的超声波传感器上展开数据,你可以帮我吗?thx和最好的问候。
嗨。很抱歉,但我能说的是检查我的教程的应用程序发明者和结合本教程,让自己的项目。
我的作品正在教授特定传感器,模块或程序的基础知识,您的是应该使用从这些教程中获得的知识来制作特定项目的那个。
干杯!
嗨…好project1
我有个问题,,
什么代码Arduino Mega与另一个arduino匹配?就像一个nano,uno..etc
谢谢你!
代码是一样的。
有可能在PIR传感器的帮助下停止直流电机吗?
当然,这是可能的。
我想通过使用Ardouino确定空间点(exemple房间)的坐标(x,yz)是可能的吗?怎么做?
你可以用这个超声波传感器来实现这一点。如果你知道角度和到物体的距离,你就能确定它的坐标。
有没有办法缩短测量到的最大距离?顺便说一句,很棒的tuto
以什么方式减少距离?我没有得到它。传感器的范围为〜2cm,高达4米。
嗨,你是否有整个事情的接线原理?距离传感器和LCD?
抱歉我没有,但你可以很容易地结合他们,如果你检查我的Arduino液晶教程。
有没有为距离传感器结合液晶显示器的接线图?
快速问题的德国,我想用覆盆子PI 3钩距离传感器3,所有教程我看到似乎使用电阻,如何与arduino不需要它们,但你需要他们用pi?
我可以在没有电阻的情况下在pi上吗?
你好,我是来自罗马的胭脂红,
它可以改变绝对读数到相对读数与电位器改变到相对距离显示?
谢谢你!
如果您修改代码以补偿最初的阅读,可能只需一个简单的算术操作,您就应该能够做到这一点。
超声波传感器能全天候工作吗?日常吗?它会烧还是会变热?谢谢
这是个好问题。好吧,它是电子产品,yabo7. com所以它应该能够工作,但我不能告诉这些廉价的传感器是多么可靠的。
超级有用谢谢分享!
你好它是真的,这个传感器可以从2cm - 4厘米中检测到吗?如果距离超过4米,则在液晶显示屏上显示什么?
这是真的。如果测量的距离超过4米,它不会给你正确的值,只是一些随机数。
这样不是没有任何解决办法吗?
谢谢你的清晰解释。我仍然不明白。计数开始,当Echopin(输入)获得高位(在此示例中)时开始。当它降低状态时,计数停止。Pingpin中的时间差是10US,并且它们在echopin中的时间差是10U。它总是相同的。距离没有任何差异。信号的开始在信号的末端快速移动。实际上开始计数。当信号进入Pingpin时必须启动。 And it has to stop, when the signal come sback to echoPin. Would You please explain me more.
根据触发器和echo引脚的代码和逻辑你完全有理由感到困惑,我确实感到困惑,但这里有个窍门:
当我们激活触发器输入时(DigiteWrite(Trigpin,高);),我们发送超声波,但同时,传感器在内部提高回声销。因此,当程序到达PlainIn()函数时,回声引脚已经很高,这意味着计数将取决于对象距离。
传感器读取速度很快,我想每5秒读取一次,我该怎么做
您可以在程序中添加一个延迟或某种时间计数器。
嗨。
我是新的,但我想知道。是否强制使用面包板?或者我可以直接将传感器直接连接到我的arduino uno?
谢谢,
克里克
你不一定要用面包板。你可以把它直接连接到Arduino上。
你好德州,
例如,我在测量一个容器的体积差。如何修改代码以度量容积。
谢谢
嘿,你需要测量三维,宽度,长度和深度,并将它们乘以获得卷。检查我的Arduino系列测量器项目,其中我展示了类似的东西,或者如何使用该传感器测量区域。
非常感谢你!我是一个初学者,这非常有用