学习基于LABVIEW的Arduino开发设计 ——8*8LED点阵转圈圈
一、首先选择一个合适的工具包
1.LIFA
LIFA工具包虽然已经很久没有更新了,但是它有本教材可以参考,还有相应的源代码,很适合入门学习。
LIFA要去VIPM上面下载:
笔者下载的时候遇到个问题:
找了很久的原因,发现是网络的问题。是的,下载VIPM里面的工具箱的时候,必须联网,而且要让VIPM知道你的IP地址。
如果你连了网还是有这个错误提示,那么就去LABVIEW里面的添加你的网络地址:
打开LABVIEW,在工具菜单栏下,找到选项,进去后找到VI服务器,添加你的当前网络的IP地址。
再重新下载一次。
参考:链接: 解决LIFA无法下载的问题.
然后就可以跑跑例子熟悉熟悉工作原理了。
然而,笔者并没有用LIFA来实现88点阵的控制,因为LIFA好像没有办法直接对A0-A5这几个模拟管脚进行写操作,要去修改固件什么的。
这样子我要怎么操作88点阵的16个脚呢?
有点困难,再加上NI也推荐用LINX,所以,笔者愉快的转移到LINX去了。
2.LINX
这是一个基本上代替LIFA的工具包,用法类似,而且现在还在维护。下载方法同上,下载好了之后,烧录代码的方式和LIFA有区别。
LIFA是需要在Arduino IDE上面运行一个LIFA_base的固件程序,LINX就直接在LABVIEW的上选板子型号,然后连接,就可以执行了。
笔者简直是搬运工,这里网上也有很多教程步骤之类的。
比如这个:教你怎么用LINX.
到这一步,准备工作就好了。
二、画LABVIEW的代码
笔者要实现的是控制8*8点阵转圈圈,像螺旋一样。
1、8*8点阵
点阵的原理就不细讲了,笔者的连接方式简单粗暴,下面的图给出了点阵的管脚和arduino管脚的对应方式。其中R表示行,C表示列
然后呢,硬件电路也搭建好了。
接下来就是写代码的事儿了。
2、先写Arduino代码,理逻辑思路。
点阵的原理懂了的话,要实现点阵螺旋进去,其实就是对行和列进行循环点亮。比如,先循环点亮第一行,有8个灯,首先要把所有管脚初始化,让所有灯都灭掉。然后把控制第一行的管脚拉高(有效状态),比如我的是arduino上面的2管脚,然后依次把1到8列的管脚拉低,逐个点亮灯。
列的原理也是一样,合起来,要实现灯旋转着亮进去,需要注意每次每一行每一列的点亮的个数不一样。最后转进去了,一行一列的需要亮的灯的个数就很少了。
这样算起来,按照8,7,7,6,6。。。这样子每次都控制一行或者一列的灯循环点亮,光是转进去,就需要16个循环了。
转出来,又是16个。
有没有简单一点的呢,笔者没有找到更简单的方法。
最多,找了点规律,把转一圈总体当成一个循环,可以减少一点点代码量。
下面是arduino的代码:
/*
* Matrix
* 8*8点阵屏显示驱动
*/
int leds[8] = {
2,3,4,5,6,7,8,9}; //点阵屏正极引脚
int gnds[8] = {
10,11,12,13,14,15,16,17}; //点阵屏负极引脚
int t=200; //延迟时间
void setup() {
for (int i = 0; i < 8; i++)
{
pinMode(leds[i], OUTPUT);
pinMode(gnds[i], OUTPUT);