牟东
汽车倒车雷达系统可以根据汽车尾部与障碍物之间的距离发出警报。距离越小,蜂鸣器的“滴滴答答”鸣响频率越高。同样,我们可以借助Arduino开发板做一个小型的“超声波警示灯”系统,利用超声波传感器检测并显示与障碍物的距离,可以根据不同的距离值控制不同颜色的led发光:距离远,非常安全,绿灯;缩小距离,在警戒范围内,开黄灯;接近预警临界点,危险,红灯亮了。1.实验设备和电路连接
设备:Arduino UNO主板一块,HC-SR04超声波传感器一块,绿黄红LED灯一块,面包板一块,各种颜色的Du-Bang线若干。首先,将Arduino的5V电源正极和GND通过杜邦线连接至面包板;HC-SR04超声波传感器有四个引脚,其中的VCC和GND分别插接至面包板的正极和负极,Trig信号发射引脚和Echo信号接收引脚分别插接至Arduino的2号和3号数字引脚;绿色、黄色和红色LED的长腿(正极)通过面包板分别连接至Arduino的4号、7号和8号数字引脚,短腿(负极)与GND连接;最后,通过数据线将Arduino与计算机USB接口连接(如图1)。
首先通过杜邦线将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设置为INPUT输入模式外,将它的TrigPin和三个LED灯(GreenLED、YellowLED、RedLED)均设置为OUTPUT输出模式(如图2)。
在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)。
将程序保存、编译、上传到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)。
保存程序,按功能键F5运行程序,测试“超声波测距警示灯”。屏幕会显示检测到的距离值,同时相应颜色的LED灯会亮起(如图5)。
4.通过思维+图形化编程实现“超声波测距警示灯”。
运行Mind+进入图形化编程界面。首先点击左下角的“扩展”项,加载Arduino Uno主控板和超声波测距传感器;然后,建立变量“超声波测距”,并将其指定为“读取超声波传感器距离”。注意将模块中的Trigger和echo引脚分别设置为2号和3号;然后用“设置串行波特率”和“串行串输出”四句话,完成在屏幕上打印输出变量“超声波测距”的功能。然后建立三分支选择结构,根据超声波测距的数值控制相应颜色的LED灯发光;最后延时0.5秒,所有LED灯熄灭。点击“上传到设备”项,出现“上传成功”提示后,再次测试Arduino的“超声波测距警示灯”:右下角出现“与障碍物间的距离为:93.00cm”的提示信息,同时也会亮起对应颜色的LED灯,效果与使用代码编程相同(如图6)。
点击“上传到设备”项,出现“上传成功”提示后,再次测试Arduino的“超声波测距警示灯”:右下角出现提示信息“距离障碍物距离:93.00cm”,同时相应颜色的LED灯会亮起。效果和使用代码编程是一样的(图6)。
评论列表()