输入/输出引脚

引脚是您的电路板与连接到它的外部设备进行通信的方式。有 19 个引脚供您处理,编号为 0-16 和 19-20。引脚 17 和 18 不可用。还有一个pin_logo V2pin_speaker V2可用于最新的 micro:bit 设备。

例如,下面的脚本将根据引脚 0 上的数字读数更改 micro:bit 上的显示:

from microbit import *


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

引脚功能

边缘连接器和引脚排列

该表总结了可用的引脚、它们的类型以及它们的内部连接。这些引脚可用作 microbit 模块上的属性 :microbit.pin0 - microbit.pin20

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

最新的 micro:bit 设备 V2 有两个额外的引脚,您可以在 MicroPython 中访问它们,但不能通过边缘连接器访问:

  • pin_logo - micro:bit 正面的触敏徽标针,默认设置为电容式触摸模式。
  • pin_speaker - 用于定位 micro:bit 扬声器的引脚。此 API 仅用于脉冲宽度调制引脚操作,例如。 pin_speaker.write_analog(128).

脉冲宽度调制

电路板的引脚无法像音频放大器那样输出模拟信号——通过调制引脚上的电压。这些引脚只能启用完整的 3.3V 输出,或将其拉低至 0V。但是,仍然可以通过非常快速地打开和关闭该电压并控制其开启和关闭的时间来控制 LED 的亮度或电动机的速度。这种技术称为脉宽调制 (PWM),write_analog 下面的方法就是这样做的。

_images/pwm.png

上面你可以看到三个不同的 PWM 信号的图表。它们都具有相同的周期(因此频率),但它们具有不同的占空比。

第一个将由 产生write_analog(511),因为它正好有 50% 的占空比 - 一半时间通电,一半时间断电。这样做的结果是该信号的总能量相同,好像是 1.65V 而不是 3.3V。

第二个信号具有 25% 的占空比,可以用 生成 write_analog(255)。它的效果类似于在该引脚上输出 0.825V。

第三个信号具有 75% 的占空比,可以用 生成 write_analog(767)。它的能量是第二个信号的三倍,相当于在第一个引脚上输出 2.475V。

请注意,这适用于自身具有巨大惯性的电机或 LED 等设备,它们的闪烁速度太快以至于人眼无法看到差异,但在产生声波时效果不佳。这块板子本身只能产生方波声音,听起来很像非常古老的电脑游戏——主要是因为那些游戏也只能这样做。

班级

共有三种引脚,它们可用的引脚不同。它们由下面列出的类表示。请注意,它们形成了一个层次结构,因此每个类都具有前一个类的所有功能,并在其中添加了自己的功能。

笔记

这些类实际上对用户不可用,您无法创建它们的新实例。您只能使用已经提供的实例,代表您板上的物理引脚。

class microbit.MicroBitDigitalPin
read_digital()

如果引脚为高,则返回 1,如果引脚为低,则返回 0。

write_digital(value)

如果value为 1,则将引脚设置为高电平,如果为 0,则将其设置为低电平。

set_pull(value)

将拉动状态设置为三个可能值之一:pin.PULL_UP, pin.PULL_DOWNpin.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".

class microbit.MicroBitAnalogDigitalPin
read_analog()

读取施加到引脚的电压,并将其作为 0(表示 0V)和 1023(表示 3.3V)之间的整数返回。

write_analog(value)

在引脚上输出 PWM 信号,占空比与提供的value. 该 value可以是整数或0(0%占空比)之间的浮点数和1023(100%占空比)。

set_analog_period(period)

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

set_analog_period_microseconds(period)

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

class microbit.MicroBitTouchPin
is_touched()

返回True如果引脚被用手指触摸,否则返回False

笔记

边缘连接器上引脚的默认触摸模式是 电阻式。徽标引脚V2 的默认值是电容式的。

电阻式触摸 此测试是通过测量引脚和地之间的电阻大小来完成的。低电阻给出读数True。要使用手指获得可靠读数,您可能需要用身体的另一部分(例如另一只手)接触接地引脚。

电容式触摸 此测试是通过使用手指作为导体与电容器的电场相互作用来完成的。电容式触摸 不需要您将接地连接作为电路的一部分。

set_touch_mode(value)

笔记

边缘连接器上引脚的默认触摸模式是 电阻式。徽标引脚V2的默认值是电容式的。

设置给定引脚的触摸模式。值可以是 CAPACITIVERESISTIVE。例如,pin0.set_touch_mode(pin0.CAPACITIVE)

当引脚更改为输入模式时,会自动配置引脚的拉模式。输入模式是,当你调用read_analog / read_digital / is_touched。这些的默认拉模式分别为 NO_PULL, PULL_DOWN, PULL_UP。调用set_pull 会将引脚配置为read_digital 具有给定拉模式的模式。

笔记

micro:bit 的外部弱 (10M) 上拉仅安装在引脚 0、1 和 2 上,以便触摸感应工作。

引脚 5 和 11 上还装有外部 (10k) 上拉,以便按钮 A 和 B 工作。

GPIO 引脚也用于显示,如上表所述。如果您想将这些引脚用于其他目的,您可能需要 关闭显示器

请参阅 边缘连接器数据表