原创 使用LabVIEW来玩耍Arduino-Day4-LIAT实现流水灯

2022-5-23 17:25 823 1 1 分类: MCU/ 嵌入式 文集: 使用LabVIEW玩耍Arduino
实验:流水灯

周日给自己小放了一天,所以今天周一接着做《Arduino与LabVIEW开发实战》这本书里的实验。前天尝试了LINX这个工具包,感觉用起来还是不太舒服的,虽然LIAT已经不再更新,但是还是可以试试LIAT,对比一下,说不定之后可以自己做一个工具包。

按照前天安装LINX的步骤,安装一下LIAT,在VIPM中搜索Arduino就可以找到它了。

安装好之后需要用Arduino IDE把LIAT提供的基础工程烧录到Arduino Uno中,这个基础工程的路径在你安装的LabVIEW路径下,我的是“D:\Program Files (x86)\National Instruments\LabVIEW 2021\vi.lib\LabVIEW Interface for Arduino\Firmware\LIFA_Base”,大家参考vi.lib这个文件夹之后的路径找到这个文件。

然后一个超级大坑需要注意避免,烧录这个基础工程必须要使用低版本的Arduino IDE,我这里使用的是1.0.1(Previous IDE Releases | Arduino在这个页面找到1.0.1下载即可)。不用低版本的Arduino IDE,会在运行的时候遇到5003这个错误如下图,还好网上有人解决过这个问题,不然我今天就死在这一步了。

下面按照《Arduino与LabVIEW开发实战》这本书里的实验步骤开始今天的流水灯:

(1)实验目的

利用LIAT中的数字I/O函数库,通过LabVIEW控制Arduino Uno控制板上多个管脚上LED灯,实现依次点亮,依次熄灭,形成流水灯效果。

(2)硬件连接

书上是这样做的:硬件连接图如图4-3所示,LED灯的阳极通过220Ω的限流电阻接至Arduino Uno的D2~D7,阴极直接接至GND。最后,用USB电缆将Arduino Uno控制板与计算机的USB端口连接起来即可。

我为了省时间只连了四个LED灯,并且是用电阻(330Ω)作为接地的那一端,可以省点连线的工夫,但是电阻间离得很近,如果你想这么连别忘了把它们分开点,还有注意分清发光二极管的正负极,具体的连接图如下:

(3)程序设计

LabVIEW的前面板:

程序框图:

照例说下这个程序框图的基本过程,实际上做到现在就体会出LabVIEW这种可视化编程的香了,会比文本编程更有意思,虽然坑也多。

首先是必要的串口初始化,LIAT和之前的串口连接方式差不多,也是通过串口和下位机通信然后完成编程,这也是为什么要事先烧录一个程序,就是LIAT给了一个基础的程序,然后在VI中会给下位机发送数据,从而达到控制的目的,具体可以看看它的源程序。所以这里使用VISA进行串口连接,然后按照给出的输入输出进行连线,这里需要注意的是LIAT中的默认波特率是115200,和Arduino程序中通常用的9600不一样。

其次是引脚初始化,For循环中D2~D5都设置为输出状态,用来控制LED灯的亮灭。

然后在While循环中通过一维数组循环移位、移位寄存器和Digital Write Port实现流水灯,这里需要了解一下移位寄存器的概念(循环结构 | LabVIEW 编程经验)。逻辑很好理解就是将一个四个bool组成的一维数组中的True值循环移位,通过来设置D2~D5的状态,这里需要注意的是这个VI是控制D0~D13,所以需要在之前的一维数组基础上加入D0、D1的赋值。

最后再强调一下完成这个实验一些需要注意的地方:

(1)确保你的LED灯都是好的。我在最后发现D5连接的小灯一直不亮,还以为哪里写错了,结果换了一个LED灯就好了。心痛,买了一个坏的LED灯。

(2)Arduino IDE使用低版本。具体原因也不知道Arduino IDE做出了哪些改变,有知道的小伙伴可以分享下哈。

(3)用Stop按钮停止程序。不然上一次连接串口没有关闭,再运行程序就连接不了了。我还特别喜欢用Abort来停止程序,老要来回插拔Arduino Uno,这是个不好的习惯。

最后分享一下这个流水灯的效果:



作者: 都白白, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3968342.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

给作者打赏,鼓励TA抓紧创作!

赞赏支持
点赞 1
赞赏0

文章评论0条评论)

登录后参与讨论
相关推荐阅读
都白白 2022-05-27 14:13
使用LabVIEW来玩耍Arduino-Day8-基于热敏电阻的温度计/基于光敏电阻的光强计
实验:基于热敏电阻的温度计/基于光敏电阻的光强计记得之前有买过LM35这个温度传感器,但是怎么找都找不到,临时下单了一下,到了再做4.13 基于LM35的温度计,今天先来完成4.14和4.15(两者实...
都白白 2022-05-26 16:06
使用LabVIEW来玩耍Arduino-Day7-数码管显示
实验4.11 液晶滚动显示就是昨天实验的一些修改,比较简单,这里就不单开一篇描述过程了,程序会上传在面包板。手头上只有共阴极接法的数码管,实验4.12属实折腾了一番,还好最终还是完成了本次实验。下面直...
都白白 2022-05-25 16:19
使用LabVIEW来玩耍Arduino-Day6-液晶时钟
实验4.5 RGB调色、实验4.6 简易示波器、实验4.7 数据采集卡、实验4.8 单个舵机的控制、实验4.9 多个舵机的控制都是LIAT中的示例,可以直接在安装好的LabVIEW路径下找到这些实验的...
都白白 2022-05-24 17:02
使用LabVIEW来玩耍Arduino-Day5-LINX完成会呼吸的灯
实验:会呼吸的灯今天还是继续要LINX工具包来完成LabVIEW玩耍Arduino,《Arduino与LabVIEW开发实战》的4.3节是之前做过的虚拟电压表,LINX本质上也是串口方式,所以今天就直...
都白白 2022-05-21 17:11
使用LabVIEW来玩耍Arduino-Day3-LINX实现控制Arduino内置小灯
先说个题外话,无意间找到了这个网站LabVIEW 编程经验 | LabVIEW 编程经验,之前有听说过 《我和 LabVIEW - 一个 NI 工程师的十年编程经验》这本书 ,没想到直接找到了这本书在...
我要评论
0
1
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条