找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15266|回复: 14
打印 上一主题 下一主题
收起左侧

LabVIEW倒计时红绿灯 虚拟仪器设计

  [复制链接]
跳转到指定楼层
楼主
ID:412676 发表于 2019-6-11 17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

交通灯模拟设计说明书

交通灯通常指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯。在我国交通法律上规定:绿灯亮时,准许车辆通行,黄灯亮时,已越过停止线的车辆可以继续通行;红灯亮时,禁止车辆通行。

设计目的:

设计这款交通灯模拟系统可以真实直观的反映出十字路口红绿灯亮灭情况,有利于驾驶员学习相关的交通规则,连接上相应的硬件设备还可以作为一款十字路口的交通灯控制系统。

程序特点:

这款交通灯模拟系统基于labview软件开发,界面全部自己设计,简洁明了。在以往单纯的红绿交替变化功能上添加了倒计时功能和灯光闪烁功能,并且配备有操作板可以人为设置各路口红绿灯的亮灭时间,现实中可以根据实际路况进行有目地的调整,使交通更加通畅。

设计过程:

1.首先我先用簇来创建交通灯,用一个while循环配合使用层叠顺序结构实现最简单的红绿黄灯交替变化,模拟出十字路口通行状态,东西南北方显可以调节,但功能简单。

2.通过实际路口的观察,确认需要添加倒计时模块,之后尝试多种方法来实现,均达不到预期的目标。通过一个小例子想到通过数组的索引来控制簇里各控件来模拟LED灯,之后 又加上一个算法成功实现交通灯倒计时功能。

3.现实十字路口的黄灯是闪烁而不是常亮,为了能更好的模拟需要添加一个能够使黄灯闪烁的模块,这个模块通过一个数除以2得到余数的1或者0来控制灯的亮灭,将循环时间缩短即可实现灯的闪烁。

4.在界面设计的时候画出斑马线,于是需要在斑马线两边安装提示灯,便将闪光模块在此控制绿灯闪烁来提示行人通过。

5.最后设计了一个欢迎界面用来介绍一下程序名称等。在后面板上程序调用上开始时出现了没反应的情况,后来反复尝试通过修改子vi节点设置才成功解决。

欢迎界面

本界面自己设计的一个开始界面,文字采用和交通灯相似的红绿黄颜色,介绍了一些相关信息,直接“确认进入”即可进入主程序界面。


欢迎后面板:

后面板采用条件结构来调用子VI。(这步中的子VI通过对子vi节点的设置才可以在运行中调用)

交通灯模拟界面前面板1)

这是程序的主体,结合实际的十字路口设计了红绿黄灯的交替亮灭,黄灯的闪烁,路口时间倒计时和控制面板。上图中展现的是南北方向允许通行,此时东西方向禁止通行时间为16s,同时斑马线两侧的绿灯也会每隔一秒的闪烁,提示行人通行。斑马线旁边的倒计时LED灯用来显示红灯还有多久熄灭,给行车人提前的准备时间。当倒计时完毕后首先东西方向红灯变成绿灯,同时斑马线两侧的绿灯停止闪烁,南北方向绿灯变为黄灯闪烁之后变成红灯,倒计时开始。在界面美化方面用的是labview自带的修饰功能自己绘图所以有一些地方不太完善。

后面板1

后面板用了一个while循环配合使用层叠顺序结构实现各组红绿灯的间歇亮灭。

下图为南北通行过程,在层叠顺序结构里包含两个for循环结构,上面的for循环实现灯光的闪烁,下面的for循环里用了模拟LED灯的子vi。可以通过调节东西方向的红灯点亮时间来控制南北通行时间。

前面板2

这个面板是东西方向刚恢复通行的指示,黄灯会根据设定的时间(初始时为1s)闪烁不同的次数,一次间隔200ms,之后南北方向的黄灯换成红灯禁止此方向车辆通行。

后面板2

这是黄灯阶段的后面板,采用了一个闪烁模块通过面板上黄灯的时间来控制闪烁次数。通过for循环里的等待时间来控制闪烁间隔。开始时设置的四组红绿灯是通过簇的方式组合,这样方便直观,但无法对其中的元素进行单独控制,所以换成繁杂的直接用布尔常量直接相连样子,将黄灯放进for循环里进行单独的闪烁控制。

前面板3:

上图是东西方向允许通行时的指示,此刻南北方向禁止通行时间是5s,倒计时完毕南北方向红灯换为绿灯,东西方向绿灯熄灭黄灯闪烁,之后又回到上面前面板1的情况,反复循环,实现红绿黄交通灯的点亮熄灭来控制十字路口的交通。

模拟LED灯子VI:

LED灯后面板:

该子vi的应用数组常量索引的方式得到相应数组,再将数组转换成簇用来控制簇里指示灯的亮灭来显示不同的数码。这里每个簇里的指示灯都需要按一定的顺序组合,然后按照数组常量里的布尔常量位置通过不同的索引值来确定不同灯的亮灭显示不同数字。只需要在数值控件中输入一个0--99的数字通过除以10来确定出个位十位后分别在两个簇里显示出来。

上图是一个完整的倒计时模块,通过将模拟LED灯放入一个for循环来构成。等待1000ms确定了时间以一秒的间隔递减。

闪烁部分后面板


该部分主要应用了用0和1来控制灯的亮灭,加入for循环并且控制循环时间即可实现灯的闪烁。首相用0除以2得到余数0通过和0比较产生“真”来控制等亮,之后加1除以2的余数1比较后产生“假”控制灯熄灭一直这样循环即可使灯闪烁。

设计心得

通过本次自己亲自设计并独立完成交通灯模拟系统,我学到了很多。

1.做一件事情的时候要对它进行了解,我在设计期间仔细观察了石家庄十字路口红绿黄灯的交替变化,发现其中规律,才能根据实际情况进行模拟,在斑马线两侧绿灯设计上是自己的小改动。

2.加强了自己发现问题解决问题的能力,开始的时候认为比较简单,但真正开始后在各部分设计上才发现很多预期之外的问题,通过上网查阅资料,经过不断尝试后才得以解决。

3.锻炼了自己的优良品质,以后在最事情上要有耐心,有细心,遇到困难后不灰心,这样才可以真正实现自我。


以上图文的Word格式文档下载(内容和本网页上的一模一样,方便保存):

倒计时红绿灯.doc (1.1 MB, 下载次数: 143)

工程文件(目前还不完整,只有基本框架,很多预想功能还未完成,仅供参考,希望大家继续完善,一起学习提升技术水平):

交通灯仿真.7z (33.17 KB, 下载次数: 301)




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏12 分享淘帖 顶4 踩
回复

使用道具 举报

来自 2#
ID:827231 发表于 2020-10-10 15:19 | 只看该作者
楼主发的不包括前面说的数组的索引来控制簇里各控件(如双位数码计时器)
但是基本功能和框架已经搭建得很好了
总之还是非常感谢
回复

使用道具 举报

板凳
ID:412676 发表于 2019-6-11 17:13 | 只看该作者
了解一下
回复

使用道具 举报

地板
ID:574073 发表于 2019-6-28 16:09 | 只看该作者
最近正在学习labview,谢谢资料分享
回复

使用道具 举报

5#
ID:400217 发表于 2019-11-4 17:29 来自手机 | 只看该作者
谢谢资料分享
回复

使用道具 举报

6#
ID:880871 发表于 2021-1-27 11:10 | 只看该作者
刚开始学习,通过实例能够快速了解labview的使用方法,谢谢!
回复

使用道具 举报

7#
ID:77126 发表于 2021-4-24 09:09 | 只看该作者
楼主太强大了,下来好好学习学习,谢谢!
回复

使用道具 举报

8#
ID:337609 发表于 2021-5-9 13:36 | 只看该作者
我想问下,怎么在多个循环体里调用一个控件,比如一个灯,我在第一个判断语句里执行了,我第二个判断语句里再执行,使用复制操作会导致前面板多出来控件,请问有别的办法吗?
回复

使用道具 举报

9#
ID:986013 发表于 2021-12-3 12:45 | 只看该作者
说的和附件不一致
回复

使用道具 举报

10#
ID:165498 发表于 2021-12-8 16:17 | 只看该作者
红绿灯是数组进行控制的吗?
回复

使用道具 举报

11#
ID:990257 发表于 2021-12-9 20:07 | 只看该作者
984055 发表于 2021-5-9 13:36
我想问下,怎么在多个循环体里调用一个控件,比如一个灯,我在第一个判断语句里执行了,我第二个判断语句里 ...

创建局部变量
回复

使用道具 举报

12#
ID:1029399 发表于 2022-5-24 21:19 | 只看该作者
我想请问下,模拟LED灯那里具体是怎么创建簇的
回复

使用道具 举报

13#
ID:1029382 发表于 2022-5-25 00:16 | 只看该作者
非常有趣,值得学习,謝謝
回复

使用道具 举报

14#
ID:1032823 发表于 2022-6-7 10:29 | 只看该作者
本帖最后由 上南下北 于 2022-6-11 12:07 编辑
984055 发表于 2021-5-9 13:36
我想问下,怎么在多个循环体里调用一个控件,比如一个灯,我在第一个判断语句里执行了,我第二个判断语句里 ...

用局部变量调用
回复

使用道具 举报

15#
ID:1099316 发表于 2023-11-12 16:28 | 只看该作者
请问一下LED的倒计时灯是如何实现的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表