Input/Output(输入/输出)

microbit的底部边缘有金属条,这些是输入与输出引脚(也称为I/O引脚)。

一些引脚比其他的大,可以用鳄齿夹夹住,这些引脚的标记分别是:0,1,2,3VGND
如果将microbit与拓展板拼接上,可以通过导线连接其他设备。

microbit的每个引脚都有编号,也是一个对象和button相似,所以如果要调用N引脚,则可以用PinN表示。

总共有19个引脚,编号为0-16和19-20。引脚17和18不可用。

例如,下面的程序将根据引脚0上的数字输入信号改变microbit上的显示:

from microbit import *

while True:
  if pin0.read_digital():

    display.show(Image.HAPPY)

  else:

    display.show(Image.SAD)

这些引脚可以作为microbit模块的属性来使用:microbit.pin0- microbit.pin20

Pin Type Function
0 Touch Pad0
1 Touch Pad1
2 Touch Pad2
3 Analog Column1
4 Analog Column2
5 Digital ButtonA
6 Digital Row2
7 Digital Row1
8 Digital
9 Digital Row3
10 Analog Column3
11 Digital Button B
12 Digital
13 Digital SPI MOSI
14 Digital SPI MISO
15 Digital SPI SCK
16 Digital
19 Digital I2C SCL
20 Digital I2C SDA

脉冲宽度调制

板子上的引脚输出模拟信号的方式与音频扬声器不同,它不能够调整引脚上的电压,这些引脚只支持3.3V输出,或者被拉低为0V。但是我们仍然可以通过很快地切换电压的高低来控制LED的亮度或电动机的速度。这种技术称为脉宽调制(PWM),这就是下面的write_analog()方法。

以上您可以看到三种不同PWM信号的图表。这些都具有相同的周期,但它们具有不同的占空比(高电平占整个周期的比例)。

第一个由write_analog(511)生成,因为它的占空比为50%,高低电平各占一半,其结果和1.65V差不多。

第二个由write_analog(255)生成,占空比为25%。它的效果如同引脚上输出0.825V。

第三个由write_analog(767)生成,信号占空比为75%。它的电压是第二个信号的三倍,相当于在引脚上输出2.475V。

这适用于诸如电机本身具有很大惯性的设备或LED,但是在生成声波时效果不会很好。

这个板子本身只能产生方波的声音,这听起来就像是以前的电脑游戏(主要是因为这些游戏的声音就是方波产生的)。

有三种引脚,它们的用途不同,下面会列出它们的类。注意,它们形成层次结构,因此每个类都具有上一个类的所有功能。

注意:

** 这些类已经被实例化,您无法创建新的实例。您只能使用已提供的实例对象,代表电路板上的物理引脚。**

class microbit.MicroBitDigitalPin
read_digital()

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

write_digital(value)

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

class microbit.MicroBitAnalogDigitalPin
read_analog()

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

write_analog(value)

value作为PWM值输出。value可以是0(0%占空比)与1023(100%占空比)之间的数。

set_analog_period(period)

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

set_analog_period_microseconds(period)

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

class microbit.MicroBitTouchPin
is_touched()

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

引脚的模式会自动配置,当你调用read_analog/ read_digital/ is_touched时,会变为input模式。
read_digital模式时,你可以通过set_pull来改变默认的拉模式,拉模式:NO_PULL, PULL_DOWN, PULL_UP

注意:

microbit仅在引脚0,1和2上安装了外部弱上拉(10M),以便触摸感应工作。可以参阅边缘连接器数据表:
https://tech.microbit.org/hardware/edgeconnector/

检测引脚是否被触摸:

from microbit import *

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

当Pin0引脚与GND连接时,会显示一张笑脸,否则显示一张哭脸。

[原文链接]