计算机中的 IO 是 Input/Output(输入/输出)的缩写,相关接口简称 IO 口。
各 IO 接口大小不一,附近通常都有标识便于识别。例如,开发板底部金手指上的接口依次标为 0/1/2/3V/GND(大多数计算机编号从 0 开始)。
将金手指插入扩展底座后,还可以使用其他较小的蓝白引脚。第一章硬件介绍中对此有专门说明,忘记时可查阅 BPI:bit 硬件。
在 microbit 模块中,开发板接口定义为 pinN 对象,其中 N 表示接口编号,因此 0 号接口也称为 pin0 对象。如果这种命名方式不便使用,也可以从 machine 导入 Pin,自行定义喜欢的引脚名称。
我们想要触摸板子的引脚并使其做出相应的反应,它看起来就像一个害羞的小女孩。
代码如下:
from microbit import *
while True:
if pin1.is_touched():
display.show(Image.HAPPY)
else:
display.show(Image.SAD)
用手触摸标记为 1 的引脚,可以看到开发板的表情由悲伤变为开心;松开后,表情又会改变。
流程解释如下:
程序反复运行 pin1.is_touched(),判断引脚是否被触摸(原理是 ADC 采样)。
触摸时函数返回 True,程序显示笑脸;否则持续显示悲伤表情,所以不触摸它时它看起来不开心。
运行效果如下:
需要注意,人体(手部)带有静电,有时可能干扰检测,使表情出现抖动。
入门时我们已经学习过如何控制开发板上的 LED,但当时使用的是现成程序。下面动手实现相同功能,看看它的工作原理。
这里准备了常见的 LED,可以看到两根引脚长度不同,用于区分正负极:长脚为正极,短脚为负极。
Tip: 接线时,LED 正极应连接电源正极(+),LED 负极应连接电源负极。
第一步先直接点亮普通 LED,即将其连接到电源。把 LED 接到开发板的 3V 和 GND:3V 是 3 V 电源正极,GND 是电源负极,也称为地。
这样可以点亮 LED(注意正负极),但此时无法控制它,只会持续点亮。
原本想再接一个 LED 对比,但其他 LED 的引脚太短,因此改用图中较大的 LED。此时它尚未点亮。
下面通过代码控制 LED 亮灭,图中使用 pin2 引脚进行控制。
from microbit import *
pin2.write_digital(1)
现在使用 PyCharm + mpfshell 插件运行这段代码。
可以看到 LED 已点亮,说明现在能够控制它,效果与最初的教程一致。
这次我们使用以下代码添加闪烁效果。
from microbit import *
while True:
pin2.write_digital(1)
sleep(200)
pin2.write_digital(0)
sleep(1000)
让我解释一下程序:
让 pin2 引脚输出 1,会使该引脚变为高电平。可以简单理解为引脚带有电压,效果相当于连接电源正极(准确原理是两个引脚之间存在电位差)。
先使用 pin2.write_digital(1) 点亮 LED,再调用 sleep(200) 让程序等待 200 毫秒。
然后使用 pin2.write_digital(0) 熄灭 LED,再等待 1000 毫秒,即 1 秒。
循环重复上述过程。