欢迎光临散文网 会员登陆 & 注册

Arduino LINX 实现上拉输入,并且实现对应VI以及C#调用(以MEGA2560PRO为例)(上)

2023-07-24 19:32 作者:下午三点之前的一分钟  | 我要投稿

思路:Arduino本身可以设置INPUT_PULLUP,而LINX中没有。猜测原因是LINX在具体实现中将PINMODE设置为INPUT,并且没有实现INPUT_PULLUP版本。因此只要修改LINX固件,增加PULLUP版本的实现即可。(如果不需要普通的浮空输入,直接把源代码里的INPUT改成INPUT_PULLUP即可,无须后续操作,这样所有能上拉的输入都会被上拉)

环境需求

Arduino IDE(用于烧录修改后的固件)

LabView+MakerHUB包(用于导出固件以及在LabView中测试)

C#.NET framework4.8(我所使用的版本罢了)

导出固件

默认导出路径为 文档/Arduino/libaraies中

修改固件代码(总共5个文件)

1. libraries\LinxArduinoMega2560\utility\LinxWiringDevice.h

增加函数声明

2. libraries\LinxArduinoMega2560\utilityLinxWiringDevice.cpp

实现函数(直接抄上面的非PULLUP版本,改一下)

2个LinxDevice.h

添加函数声明(其实可以发现LinxDevice是基类...应该可以直接修改基类而不用修改子类,但算了,瞎改改,全部都改了就是...

3. libraries\LinxArduinoMega2560\utility\LinxDevice.h

4. libraries\LinxSerialListener\utility\LinxDevice.h

5. libraries\LinxSerialListener\LinxListener.cpp

在这里实现具体命令,同样是抄上面的

 这里使用还没有用到的0x0045,

至此,就在固件中添加了上拉输入的功能(LINX理论上也支持custom command,可以不侵入源代码的情况下实现。但我试了一下,说MEGA2560不支持自定义命令,作罢)

btw,b站的编辑器真是巨垃圾,不支持MarkDown语法。粪中粪

Arduino LINX 实现上拉输入,并且实现对应VI以及C#调用(以MEGA2560PRO为例)(上)的评论 (共 条)

分享到微博请遵守国家法律