我们中的许多人都面临着调试Arduino板的挑战,这通常很麻烦。此外,对变量或设置进行小的调整通常需要多次刷新固件,从而减慢开发和测试速度。幸运的是,存在一种更敏捷、更有效的解决方案,我将在本指南中介绍它。
在这个简短的教程中,我们将使用几行代码创建一个交互式终端,与任何Arduino板兼容。这种方法的主要优点是它的交互性——允许实时访问系统资源,如继电器、传感器或内部变量,而无需重新启动或重新编程电路板。
稍后,我们还将介绍如何通过添加自定义命令来扩展此终端接口,从而对Arduino系统进行更高级和灵活的控制。
第一步是使用Arduino IDE Library Manager安装两个必要的库。虽然手动安装是可能的,特别是在公司环境中,但Library Manager提供了一种更方便和简化的方法。
始终建议使用这些库的最新可用版本,以确保兼容性并利用最新的特性和错误修复。
在Shellminator库提供的示例中,示例200是一个很好的起点。打开这个示例并创建一个副本,因为我们将使用它作为我们项目的基础。在进行任何修改之前,编译并上传代码到您的板以确保一切正常运行是一个很好的做法。
上传后,您可以使用终端仿真器连接到串口:
•Windows: PuTTY
•Mac/Linux: screen
将波特率设置为115200并打开连接。如果一切设置正常,重置板或按Ctrl + L应该显示横幅。此外,请尝试输入帮助命令。
该命令将列出系统当前支持的所有可用快捷方式和内置命令。
目前,示例提供的默认命令对我们的需求并不是特别有用。为了使系统更实用,让我们修改cat命令,使其执行一个有意义的功能。例如,我们可以将其转换为一个命令,该命令打印自系统启动以来经过的毫秒数。
为了反映这一变化,将命令重命名为millis是有意义的。这需要在代码中做一些修改:
在代码的顶部,更新回调函数原型并重命名API_tree中相应的字段。
在代码的底部,重命名回调函数并修改其实现,这样它就不会打印文本字符串,而是输出Arduino millis()函数的结果。
通过这些更改,该命令将提供以毫秒为单位的实时系统正常运行时间,使其成为一个有用的调试工具。
如果我们现在测试我们的修改,我们应该看到输入millis命令返回当前以毫秒为单位的系统正常运行时间。这演示了交互式终端如何提供对系统数据的实时访问。
考虑一下,与通过串行监视器不断打印调试消息相比,这种方法要方便得多。您可以简单地为所需的特定信息创建查询命令,而不是使用连续的日志将输出弄得乱七八糟。然后,您可以根据需要请求数据,无需修改或重新启动系统。
到目前为止,我们所介绍的只是对Shellminator和Commander-API库所能提供的功能的一小部分了解。这是值得花时间去通过Shellminator文档,因为它是令人难以置信的详细,易于遵循,并充满了交互式的例子,以帮助您快速入门。
本文编译自hackster.io