1. 文档中心
  2. 比卜创造 Micro:bit
  3. API 参考
  4. 引脚

输入/输出引脚

引脚是 micro:bit 与外部设备通信的接口。共有 19 个可用引脚,编号 0–16 及 19–20;引脚 17 和 18 不可用。此外还有 pin_logo 与 pin_speaker 可供使用。

例如,以下脚本会根据引脚 0 的数字读数改变 micro:bit 显示:

from bibo import *

while True:
    if pin0.read_digital():
        display.show(Image.HAPPY)
    else:
        display.show(Image.SAD)

引脚功能

micro:bit 引脚图
micro:bit 引脚图

更多硬件说明见 无线电与引脚。

下表汇总可用引脚、类型及内部连接。引脚可通过 bibo 模块的属性访问:bibo.pin0 至 bibo.pin20。

引脚类型功能
0触摸Pad 0
1触摸Pad 1
2触摸Pad 2
3模拟Column 3
4模拟Column 1
5数字Button A
6数字Column 4
7数字Column 2
8数字—
9数字—
10模拟Column 5
11数字Button B
12数字—
13数字SPI SCK
14数字SPI MISO
15数字SPI MOSI
16数字—
19数字I2C SCL
20数字I2C SDA

micro:bit 还有两个无法通过边缘连接器访问、但可在 BiBoPython 中使用的引脚:

  • pin_logo — 主板正面的触摸感应 Logo 引脚,默认设为电容触摸模式。
  • pin_speaker — 用于控制 micro:bit 扬声器的引脚。此 API 仅用于脉宽调制(PWM)操作,例如 pin_speaker.write_analog(128)。

脉宽调制(PWM)

板载引脚无法像音频放大器那样通过调制电压输出模拟信号——引脚只能输出完整 3.3 V 或拉低至 0 V。但仍可通过快速开关并控制通断时间比例来调节 LED 亮度或电机转速,这种技术称为脉宽调制(PWM),即下文 write_analog 方法的作用。

三种不同 PWM 信号示意图如下。周期(因而频率)相同,但占空比不同。

PWM 占空比示意
PWM 占空比示意

第一个信号由 write_analog(511) 产生,占空比恰好 50%——通电与断电时间各半,总能量相当于 1.65 V 而非 3.3 V。

第二个信号占空比 25%,可由 write_analog(255) 产生,效果类似输出 0.825 V。

第三个信号占空比 75%,可由 write_analog(767) 产生,能量为第二个的三倍,相当于引脚输出 2.475 V。

注意:这对电机(惯性大)或 LED(闪烁过快人眼无法分辨)效果良好,但不适合生成声波。本板只能产生方波声音,听起来很像早期电脑游戏——因为那些游戏也只能做到如此。

类

引脚分为三类,功能逐级扩展。它们形成继承层次,每一类包含前一类全部功能并新增自身方法。

MicroBitDigitalPin

read_digital()

若引脚为高电平返回 1,低电平返回 0。

write_digital(value)

若 value 为 1 则设为高电平,为 0 则设为低电平。

set_pull(value)

将上拉/下拉状态设为三种值之一:pin.PULL_UP、pin.PULL_DOWN 或 pin.NO_PULL(其中 pin 为引脚实例)。默认上拉状态见下文。

get_pull()

返回引脚的上拉配置,可能为 NO_PULL、PULL_DOWN 或 PULL_UP。通过 set_pull() 设置,或在引脚模式需要时自动配置。

get_mode()

返回引脚模式。引脚用于特定功能(如写数字值、读模拟值)时模式会改变。可能模式包括:"unused"、"analog"、"read_digital"、"write_digital"、"display"、"button"、"music"、"audio"、"touch"、"i2c"、"spi"。

write_analog(value)

在引脚上输出 PWM 信号,占空比与 value 成正比。value 可为 0(0% 占空比)到 1023(100% 占空比)的整数或浮点数。

set_analog_period(period)

将输出 PWM 信号的周期设为 period 毫秒。最小有效值为 1 ms。

set_analog_period_microseconds(period)

将输出 PWM 信号的周期设为 period 微秒。最小有效值为 256 µs。

get_analog_period_microseconds()

返回已配置的 PWM 信号周期(微秒)。

MicroBitAnalogDigitalPin

read_analog()

读取引脚电压,返回 0(0 V)到 1023(3.3 V)之间的整数。

MicroBitTouchPin

is_touched()

若引脚被手指触摸返回 True,否则返回 False。

电阻式触摸

通过测量引脚与地之间的电阻实现。低电阻读数为 True。用手指可靠检测时,可能需要用身体另一部分(例如另一只手)触摸 GND 引脚。

电容式触摸

通过手指作为导体与电容电场交互实现。电容式触摸不需要作为电路一部分接地。

set_touch_mode(value)

设置给定引脚的触摸模式。value 可为 CAPACITIVE 或 RESISTIVE。例如 pin0.set_touch_mode(pin0.CAPACITIVE)。

引脚切换为输入模式时会自动配置上拉模式。输入模式包括调用 read_analog / read_digital / is_touched。默认上拉分别为 NO_PULL、PULL_DOWN、PULL_UP。调用 set_pull 会将引脚配置为 read_digital 模式并应用给定上拉。