Protopie 连接

8

阅读时间

ProtoPie Connect 入门 7 讲之第 4 讲:Arduino 第 2 部分 - 编写你自己的 Sketch 代码

了解如何使用 ProtoPie Connect 的 Arduino 插件直接访问您的 Arduino 项目。

杰夫·克拉克, 用户体验设计师与 ProtoPie 培训师

介绍

上一课中,我向你展示了使用Blokdots在 ProtoPie 中连接 Arduino 项目是多么快速和容易。但我们遇到了几个问题。按钮行为是反的——当按钮未按下时,Blokdots 报告为 1,按下时为 0——而且当我们过快旋转编码器时,会出现一个称为“抖动(bounce)”的问题:编码器有时该向上计数却向下计数,或该向下计数却向上计数。

第一个问题我们通过将编码器上的地(GND)和电压(+)引脚连接对调来规避;第二个问题则是注意不要把编码器旋钮转得太快。如果你编写自己的 Arduino 代码,这两个问题(以及很多其他问题)都可以得到妥善处理。

但是……代码很可怕!!

别担心!你不需要编写任何代码——你将使用一个 Arduino 脚本——称为“Sketch”——我已经写好了。你只需要复制粘贴。本课并不是教你如何写代码。本课将重点讲解的是:为了让 Arduino 与 ProtoPie Connect 配合工作,你需要了解的内容。

不过,如果你喜欢挑战并想尝试自己写 Sketch,请知道网上有大量用于入门的 Arduino 代码示例。事实上,我写的这个 Sketch 很大程度上基于我从这篇文章中学到的内容(咳咳……复制来的……)。

你将学到什么

在本教程中我们将涵盖以下内容:

  • 在 ProtoPie Connect 中使用时,你需要重点关注的具体代码细节

  • 验证你的代码并将其上传到 Arduino 开发板

  • 在 ProtoPie Connect 中配置并启用 Arduino 插件

完成时间:≤15 分钟

你需要准备

  • 将这段代码粘贴到 Arduino 软件窗口中。


Paste instructions for Sketch code

[Climate Control Pie]

开始吧!

当你一切就绪后,只需跟着下面的视频操作即可。

视频

参考

在视频中,我指出了在编写用于 ProtoPie Connect 的 Arduino Sketch 时,你需要记住的两件重要事项。下面保留这两个细节供你参考:

正确设置波特率

你在 Connect 的 Arduino 插件中选择的波特率(即检查串口连接更新的频率)需要与你在代码中指定的一致。


The baud rate you select in the plugin needs to match what you specified in your code.

向 ProtoPie Connect 发送消息

ProtoPie Connect 会查找写入串口连接的消息,因此你需要在代码中使用 Serial.print()Serial.println() 将消息发送回 Connect。

对于不带值的消息,只需像这样将消息打印到串口连接:

  • Serial.println(<message name>),例如:Serial.println("TEMP_UP");

对于带值的消息,你需要用两个竖线(|)字符分隔消息名和值。

  • 例如:
    Serial.println("SET_TEMP||21");

ProtoPie Connect 会识别这种模式,并接收消息 SET_TEMP 及其值 21

如果你把变量作为消息值,在 Arduino 代码中不能一行构建该消息。例如,这样是无效的:

  • Serial.println("SET_TEMP||" + temp);

你需要用两行代码来构建:第一部分使用 Serial.print(),第二部分使用 Serial.println()

  • 例如: ``Serial.print("SET_TEMP||"); Serial.println(temp);

两者的区别在于:Serial.print 会把你指定的内容追加到串口连接的当前行,而 Serial.println 会写入串口连接并在末尾添加一个回车字符,表示该行结束;从 ProtoPie Connect 的角度看,这也表示一条消息发送完成。

ProtoPie Connect 会等待串口连接输出回车字符后才处理消息。通过这种方式,你可以先连续发出多个 Serial.print() 命令,以分段方式构建消息,再发出最后的 Serial.println() 命令,向 ProtoPie Connect 表示消息已完成。

  • 例如:
    Serial.print(message); Serial.print(”||”); Serial.println(value);

就是这样!在ProtoPie Connect 入门 7 节中的第 5 节:与 Logic G29 交互中,我们将向你展示如何创建真正的多屏仪表板体验。