项目一:给我发消息之Part 2
Message Me! App
使用App中的按钮将简单的消息无线发送到100米外的Microbit。Microbit在LED矩阵上显示图片!(在下一课中,你可以反向发送消息 -- 使用Microbit的按钮和传感器将数据发送到app。)
完成后的app是这样的:

从这里开始
发送消息!
- 获取App Inventor初始代码。
- 看看Message Me的界面设计:

下面是components面板中组件的图像。你能猜猜每个组件的作用吗?别忘了看看手机下面那些不可视组件!(仅一点注意 -- 请不要重命名组件。本教程将在你稍后编码时引用给定的组件名。)

(注:图中的不可视组件是App Inventor的扩展,为了清晰用途进行了重命名。组件的原始名称为:BluetoothLE1, Microbit_UART_Simple1)
- 检查代码。
点击App Inventor中的Blocks(逻辑设计)按钮查看初始代码:

(注:图中橙色箭头所指的6个代码块用于设置所有的蓝牙操作,如扫描和连接。这些代码块都折叠起来了,你可以双击它们来让它们显示完整。
初始代码中绿色箭头所指的插槽是空的,smileButton按钮发送的消息还没有设置好,请你修复这块代码!)
- 向smileButton添加消息。
smileButton使用callMicrobitDataChannel.SendMessage代码块向Microbit发送消息。但是看看空白的text string代码块。你的工作就是填满它们!
- 从中间的text string代码块开始。在代码块中输入smile这个词。为什么是smile?当Microbit接收到smile消息时,你将编程Microbit在led上显示笑脸。

- 添加一个逗号!
逗号?是的,下一步可能看起来很奇怪,但请坚持下去 -- 你需要使用join块在消息smile两边添加逗号(,)。

如图所示:

这些逗号是怎么回事?
想想你和朋友说话的方式。你可能没留意,但你可以通过使用停顿来表达一个消息的结束和另一个消息的开始。
例如,你可以对你的朋友说:“I want to learn to cook (pause) my brothers know how to use the oven (pause)”(“我想学做饭(暂停)我的兄弟们知道怎么用烤箱(暂停)”)
但是,要小心!如果你的声音没有停顿,它可能听起来像:“I want to learn to cook my brothers! Know how to use the oven?”(“我想学怎样把我兄弟们给烹了!知道怎么用烤箱吗?”)
天啊,我要说的不是这个意思啊!
同理,物联网项目通过在消息之间使用称为字段分隔符的特殊字符来避免混淆。今天,你将编程你的设备使用逗号来保持消息分开。例如,当app发送诸如“,smile,,frown,,frown,,smile,”之类的数据流时,Microbit会知道smile frown frown smile都是分开的消息。
要测试微笑按钮,你需要更改Microbit上的代码。到目前为止,你可能只更改了App Inventor代码。但是在这个物联网项目是两组代码一起工作的!如图中所示:

烧录Microbit “Message Me”代码
- 获取Microbit MakeCode。
- 进入Microbits 编码网站并导入代码。
- 查看Microbit代码。
你的屏幕看起来如图显示Microbit代码。在这个项目中,代码将负责接收来自移动app的消息:

- 将Message Me 的MakeCode代码烧录到Microbit上
将app加载到App Inventor 伴侣
- 在你的设备上加载Message Me! App到App Inventor 伴侣。

连接Microbit和App
<font class="text-color-6" color="#2196f3">当你按下app上的笑脸会发生什么?当你按下其他按钮(frown 和 monster)会发生什么?为什么?</font>
- 在App Inventor中,再次查看Message Me代码。
- 如何添加代码块来发送带有单词frown的消息?

- 对frowbutton进行编码。
- 在“frownButton”抽屉中,将when frownButton.Click积木块拖出并将其添加到代码中。

- 创建一种向Microbit发送消息的方法。
- 编排需要发送的消息
- 在文本块中放入一条消息。
编写代码让Microbit皱眉
- 在Microbit上给Message Me添加新代码。
- 在 if-then 块中添加另一个插槽。
- 创建图标
- 从“Logic逻辑”抽屉中拖出“Comparison比较”代码块。
-
确保选择带有引号(" ")的比较块。这个块比较两个带有字母或单词的消息(我们将在下一课中讨论数据类型)。
-
将比较代码块放在if - then块中,检查变量是否等于单词smile。

-
将变量<font class="text-color-1" color="#f44336">message</font>从<font class="text-color-1" color="#f44336">变量</font>抽屉中添加到“比较”代码块中。

- 添加特别的消息!
- 当你按下app屏幕上的frownButton时,app会发送什么消息?(如果你忘了,请回到“编写代码让Microbit皱眉”部分。)让Microbit显示皱眉图标,如果它收到frown这个词:

测试你的新frownButton!
故障排除:如果我的frownButton不工作怎么办?: - (
检查以下各项:
- App Inventor是否正在你的手机或平板电脑上运行你的新代码?
- Microbit正在运行你的Microbit新代码吗?
- Microbit接电源(USB或电池)了吗?
- app上的蓝牙连接是否连接到Microbit(app顶部显示绿色)
- 编写monsterButton。
你刚刚编码了皱眉和微笑按钮,因此在你的app上连接monsterButton将使用你所知道的步骤并回溯。
- 小测试:下面这些代码段会起作用吗?(答案在最后)
查看下面的代码并做出判断,A、B、C、D哪些代码会起作用?



<font class="text-color-6" color="#2196f3">更多尝试</font>
小测试答案:
A. 是,起作用。这些信息和教程是一样的,代码会起作用。
B. 否。代码不起作用!试试找找问题在哪里?
C. 是,起作用。任何单词都可以用来触发Microbit中的if-then-else块。
D. 是,起作用。Microbit代码中的数字与app代码中的数字相匹配。