今天要做的这个小魔术很简单,但是很有趣,可以在你的小伙伴面前炫一把,让他们大吃一惊。
先来看看效果吧,在开始时,按下按钮 A,显示 A,按下按钮 B,显示 B,重复一次,然后晃动一下 micro:bit 板子,大喊一声,变,两个按钮就交换了位置,按下按钮 A,显示 B,按下按钮 B,显示 A,再晃动一下 板子,大喊一声,变,就变回来了,按下按钮 A,显示 A,按下按钮 B,显示 B
最后有实机演示效果视频
实现原理
这回我们要用到一个新模块,当 振动 事件,
它的作用是检测 micro:bit 板子有没有振动,如果有,则执行事件模块里的代码,它是我们这个小魔术的核心,我们会用它来交换两个按钮,我们需要一个变量来表明 A 按钮 按下 应该显示 A 还是 B,而 按钮 B 的逻辑和 按钮 A 刚好相反,当振动时,对这个变量 取反,这样就改变两个按钮的状态啦,按钮 A 按下显示 B,按钮 B 按下显示 A,然后再振动一次,再对这个变量取反,状态又变回最初的情况啦
代码实现
当开机时
初始化非常简单,只有一个模块
- 初始化一个 变量 AxianshiA,并设置为 true
按钮事件
按钮 A 和 按钮 B 的事件刚好相反,一起说
- 当 按钮 A 按下时,如果 AxianshiA 为 true,显示字符串 A
- 否则 AxianshiA 为 false 显示字符串 B
- 让 字符串 在屏幕 显示 100 毫秒
- 清空屏幕,字符串消失
- 当 按钮 B 按下时,如果 AxianshiA 为 true,显示字符串 B
- 否则 AxianshiA 为 false,显示字符串 A
- 让 字符串 在屏幕 显示 100 毫秒
- 清空屏幕,字符串消失
当 振动 事件
最最重要也最简单的 交换部分,
- 当振动时,将 AxianshiA 设置为 非 AxianshiA,这个 非 AxianshiA 是一个取反操作,当 AxianshiA 为 true 时,取反就是 false,再振动一次,再进行一次取反,就是对 false 取反,就变成 true
- 显示一个鬼脸图案
- 暂停 100 ms,让鬼脸图案停留 100 ms
- 然后清空屏幕
就完成啦
真机演示
https://v.youku.com/v_show/id_XNDQ0MzkxMjk0NA==.html?spm=a2h3j.8428770.3416059.1
思考题
加鬼脸的目的是给你自己一个提示,两个按钮已经交换了,当熟练了之后,就把那个鬼脸图案去掉吧,聪明的你一定知道该怎么做啦
hex 文件
这个教程的 hex 文件可以在这个地址下载(请右键另存为)