首页资讯科技 多途径实现“超声波测距警示灯”

多途径实现“超声波测距警示灯”

牟晓东汽车的倒车雷达系统能够根据车尾与障碍物的间距进行声音报警,间距值越小,蜂鸣器的“滴滴”啸叫频率越高。类似的,我们可以借助于Arduino开发板来制作一个小型“超声波警示灯”系统,利用超声波传感器来检测和显示与障碍物的间距,并且能够根据…

多途径实现“超声波测距警示灯”

牟东

汽车倒车雷达系统可以根据汽车尾部与障碍物之间的距离发出警报。距离越小,蜂鸣器的“滴滴答答”鸣响频率越高。同样,我们可以借助Arduino开发板做一个小型的“超声波警示灯”系统,利用超声波传感器检测并显示与障碍物的距离,可以根据不同的距离值控制不同颜色的led发光:距离远,非常安全,绿灯;缩小距离,在警戒范围内,开黄灯;接近预警临界点,危险,红灯亮了。1.实验设备和电路连接

设备:Arduino UNO主板一块,HC-SR04超声波传感器一块,绿黄红LED灯一块,面包板一块,各种颜色的Du-Bang线若干。

首先通过杜邦线将Arduino的5V电源和GND的正极连接到面包板上;HC-SR04超声波传感器有四个管脚,其中VCC和GND分别插入面包板的正极和负极,Trig信号发射管脚和回波信号接收管脚分别插入Arduino的2号和3号数字管脚;绿色、黄色和红色发光二极管的长腿(阳极)分别通过面包板连接到Arduino的4号、7号和8号数字引脚,短腿(阴极)连接到GND;最后,通过数据线将Arduino与电脑的USB接口连接起来(如图1)。2.Arduino IDE代码编程实现“超声波测距警示灯”

在Arduino IDE中,首先定义变量,与超声波传感器相关的语句包括“int trig pin = 2;”" int echo pin = 3;"和“浮动距离”,前两个分别声明其信号发射和接收引脚为2号和3号数字引脚,定义的浮点变量distance d用于存储超声波传感器测得的距离值;然后定义三个整形变量:“int GreenLED = 4;”" int yellow led = 7;"和“int red led = 8;”,分别对应绿色、黄色和红色led的三个数字引脚(4号、7号和8号)。

在setup()函数中,首先传递语句“serial . begin(9600);”设置串口监视器的波特率,以实时显示超声波传感器监测到的距离数据;然后有五个pinMode()引脚模式设置语句,将除超声波传感器EchoPin外的TrigPin和三个LED灯(GreenLED,YellowLED,RedLED)设置为输出模式(如图2)。

在loop()函数中,首先要控制超声波传感器的发射器触发信号,即要使用“低-高-低”的短脉冲:语句“digitalWrite(TrigPin,LOW);”和“延迟微秒(20);”它的作用是控制发射机保持低电平20微秒;然后传递语句“digitalWrite(TrigPin,HIGH);”和“延迟微秒(20);”控制发射机再保持高电平20微秒(即触发20微秒的高脉冲);最后一个语句“digitalWrite(TrigPin,低电平);”是控制发射机再次处于低电平状态。

然后,给存储距离值的变量distance赋值:“distance=pulseIn(EchoPin,HIGH) * 340/2/

10000;“,计算方法是借助pulse in()-此时要特别注意它的单位“微秒”(空气体中的声速计算为340m/s),“米与厘米”、“秒与微秒”之间有单位换算(相当于“除以10000”);而且超声波传感器监测到的距离值是“超声波从发射端发出,向前运动碰到障碍物,再返回接收端”的往返值(除以2),所以表达式中“pulseIn(EchoPin,HIGH)”的值要计算“*340/2/10000”。然后在串口监视器中输出一行提示信息,语句为“Serial.print("距离障碍物的距离为:");" ;然后传“Serial.print(距离);”和“serial . print(“cm”);"两行语句,在同一行显示距离变量和单位(" cm ");以及下面的语句“serial . println();”,用于输出一个“换行符”(相当于“回车”操作)。

接下来要构造一个“if…else if…else…”三分支选择结构,判断可变距离的范围:如果距离大于30cm(“距离> = 30.00”),执行语句“digitalWrite(GreenLED,HIGH);”,控制绿色LED灯发光;如果距离在15厘米和30厘米之间(“距离= 15.00”),执行“数字写入(黄色LED,高);”,控制黄色LED灯发光;否则-相当于距离小于15cm(“距离< 15.00”),执行语句“digitalWrite(红色,高);”,控制红色LED灯发光。

最后,添加一个“延迟(500);”语句,用于控制每个周期500毫秒的延迟;而三个digitalWrite()语句将低电平写入三个LED连接引脚,用于关闭所有LED灯,从而为下一个周期的正确响应做好初始化准备(如图3所示)。

将程序保存、编译、上传到Arduino,测试“超声波测距警示灯”(注意要点击打开右上角的“串口监控”项):将超声波传感器与障碍物的距离分别控制在30厘米以外、15厘米到30厘米之间、15厘米以内,发现绿色、黄色、红色LED灯会根据不同的安全距离发光;同时,串行监视器中每隔0.5秒就会显示一条类似“距离障碍物32.00cm”的提示信息(如图4所示)。3.Python代码编程实现“超声波测距警示灯”

在PythonIDLE编程环境中,先导入time和Pinpong库:“导入time”,“从pinpong.board导入board,pin,SR04_URM10”,注意“SR04_URM10”对应的是HC-SR04超声波传感器的“调用”;然后,声明“董事会(“uno”)。begin()”仍然用于完成Arduino uno板的初始化。

设置两个变量trigger _ pin和ECHO_PIN,通过两句话“trigger _ pin = pin (pin.d2)”和“ECHO _ PIN = PIN(PIN . D2)”声明超声波传感器的连接管脚为D2和D3(超声波传感器的trigger和ECHO管脚分别插入Arduino的2号和3号数字管脚)。D3)”。添加语句“sonar = sr04 _ urm10 (trigger _ pin,ECHO_PIN)”来初始化超声波传感器。然后,设置三个LED灯:“GreenLED = Pin(Pin。D4,平。OUT)"," YellowLED = Pin(引脚。D7,引脚。OUT)”和“RedLED = Pin(引脚。D8,引脚。OUT)”,包括插的数字引脚分别是4号、7号和8号。

建立一个“while True:”循环结构,将读取的超声波传感器的距离数据存入变量distance:“distance = sonar . distance _ cm()”(单位为cm),通过print()函数将数值打印在屏幕上:“print("与障碍物之间的距离为:{0: .2f} cm”)格式,然后建立一个“if…elif…else…”的三分支选择结构,通过判断变量distance的值来控制不同颜色的led灯的发光(对相应LED灯的数字引脚写一个高电平“1”);最后加入“time.sleep(0.5)”的延时语句,将低电平“0”写入所有三个LED灯的数字引脚,完成“熄灯”操作。

保存程序,按功能键F5运行程序,测试“超声波测距警示灯”。屏幕会显示检测到的距离值,同时相应颜色的LED灯会亮起(如图5)。4.通过思维+图形化编程实现“超声波测距警示灯”。

运行Mind+进入图形化编程界面。首先点击左下角的“扩展”项,加载Arduino Uno主控板和超声波测距传感器;然后,建立变量“超声波测距”,并将其指定为“读取超声波传感器距离”。注意将模块中的Trigger和echo引脚分别设置为2号和3号;然后用“设置串行波特率”和“串行串输出”四句话,完成在屏幕上打印输出变量“超声波测距”的功能。然后建立三分支选择结构,根据超声波测距的数值控制相应颜色的LED灯发光;最后延时0.5秒,所有LED灯熄灭。

点击“上传到设备”项,出现“上传成功”提示后,再次测试Arduino的“超声波测距警示灯”:右下角出现提示信息“距离障碍物距离:93.00cm”,同时相应颜色的LED灯会亮起。效果和使用代码编程是一样的(图6)。

本文来自网络,不代表管理窝立场。转载请注明出处: https://www.guanliwo.com/a/zx/63666.html
上一篇数字华容道游戏
下一篇 修改注册表提高性能
管理窝

作者: 管理窝

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部