5. 案例03:功能选择器

5.1. 目的


  • 使用basic:bit套件完成功能选择器。

5.2. 使用材料


  • 1 x basic kit 基础套件

5.3. 硬件连接图


  • 如图所示,将按键模块连接到basic:bit主板的P0口,电位器模块连接到P1。

../../_images/F9hvl7u.jpg

5.4. 软件


5.5. 编程


步骤 1

  • 设置一个永久循环,以模拟数字方式读取P0口,将返回值赋值给itmmm变量,用于判断哪个键按下。
  • 当变量itmmm小于10,意为A按钮按下。当A按钮按下,调用函数func_A调用结束后将变量flag(函数内部循环判断变量)设置为0。
  • 当变量itmmm小于80,意为B按钮按下。当B按钮按下,调用函数func_B调用结束后将变量flag(函数内部循环判断变量)设置为0。
  • 当变量itmmm小于130,意为C按钮按下。当C按钮按下,调用函数func_C

../../_images/2lRCpIO.png

步骤 2

  • func_A函数:当flag变量大于600,(也就是没有按下按钮)读取P1口并且描绘在点阵显示屏上。读取P0口按键状态,当按下E按钮,循环结束,函数调用结束。
  • func_B函数:当flag变量大于600,(也就是没有按下按钮)显示一颗闪烁的心,每闪烁一次后,读取P0口按键状态,当按下E按钮,循环结束,函数调用结束。
  • func_C函数,清空屏幕,调用结束。

../../_images/HpH2rIY.png

程序

请参考程序连接:https://makecode.microbit.org/_cuufKuP6FARo

你也可以通过以下网页直接下载程序。

---

5.6. 结论


  • 上电时因为判断按钮并不为ABC按钮,则显示一个小房子图标。
  • 按下按钮A,调用func_A函数,用电位器控制点阵显示屏亮度。按下任意按钮调用结束。
  • 按下按钮B,调用func_B函数,显示一颗跳动的心。按下任意按钮调用结束。
  • 按下按钮C,调用func_C函数,清空屏幕。
  • 其他情况显示一个小房子图标。

5.7. 思考


5.8. 常见问题


问:有时候按下按钮却没有反应。 答:按钮判断不是每时每刻,在运行其他代码期间按下按钮程序不会判断。