创建类似于LiquidCrystal的Arduino库的Simulink块

6
我想使用Simulink为Arduino Uno硬件创建程序。但我想使用现有的库,如liquidcrystal,来处理对LCD显示器的输出。如何创建包含liquidcrystal类文件的s-function?
我认为s-function是正确的选择,因为现有的Simulink Arduino库块实际上是被屏蔽的s-function。我正在使用Simulink学生版,因此我不认为我可以从模型中编译C代码,并将其合并到Arduino IDE项目中。

1
我假设你已经在这里查看过(http://www.mathworks.com/academia/arduino-software/arduino-simulink.html)。MathWorks的Arduino模块不需要额外的工具箱来运行。MATLAB/Simulink的学生版与标准版并没有功能上的差异,但是你可能会受到所安装工具箱的限制。使用`ver`命令获取可用工具箱的列表。这可能会极大地影响你解决这个问题的方式。 - grungetta
另外,您能否提供有关liquidcrystal类文件的更多信息。这是您所指的Arduino库吗?如果您有一些链接可以提供更多关于您想要使用的确切文件的信息,那将非常有助于了解您的目标。 - grungetta
你使用的是哪个版本的MATLAB?在命令提示符下使用ver命令 - 你是否安装了实时工作车间(Real-time Workshop)、Simulink Coder或者嵌入式编码器(Embedded Coder)?如果没有安装这些代码生成工具,你将无法从Simulink创建程序,只能进行仿真运行。 - RichColours
1个回答

1
我会将我的评论转化为回答... :)
好的,要从Simulink创建程序,您需要安装代码生成工具。 ver将告诉您是否安装了Simulink Coder,以及可选的Embedded Coder。如果您使用较旧版本的MATLAB,则称为Real-time Workshop。如果没有其中之一,您将无法生成任何代码。
因此,假设您可以生成代码:
S函数是正确的选择:http://www.mathworks.co.uk/help/simulink/s-function-basics.html ...虽然有各种工具可帮助创建S函数。
简而言之,过程是:
  • 复制sfunc_basic.c(或类似的)S函数C文件模板,并进行填充。这并不容易,可能需要花费很长时间才能编译成功(见下文),并且在模型中实例化时不会使MATLAB崩溃。
  • 使用mex命令进行编译(请参阅文档)。
  • 在模型中使用块。创建一个非常简单的测试用例模型。使用最少的模型块来创建一个可工作的解决方案。
  • 创建TLC文件,该文件将定义如何在模型C程序中在编译和运行时使用块数据。在此文件中,您将调用liquidcrystal库。
  • 代码生成/修复TLC和/或S函数/修复生成的代码中的错误/重复直到完成 :)

所有这些步骤都可以详细说明。第一次进行此过程可能有点困难,但您将学习很多关于S函数、model.RTW文件、TLC和调试上述所有内容的知识。

哦,是的,调试S函数可能会很麻烦。准备使用类似Visual Studio的工具来“附加”到MATLAB进程以进行调试。

Rich


有一件小事我认为值得澄清/补充:你说的没错,如果要生成C代码,确实需要你提到的工具箱,但是它们并不是仅仅为了生成针对Arduino的可执行文件而必需的。你可以使用Simulink基础版中的Run-On-Target Hardware来将Simulink模型部署到Arduino。话虽如此,与你提到的工具箱相比,这个功能显然非常有限,所以也许不是最好的方法,因为OP想要整合外部库。 - grungetta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接