Input/Output(输入/输出)
microbit的底部边缘有金属条,这些是输入与输出引脚(也称为I/O引脚)。
一些引脚比其他的大,可以用鳄齿夹夹住,这些引脚的标记分别是:0
,1
,2
,3V
和GND
。
如果将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连接时,会显示一张笑脸,否则显示一张哭脸。