20. 5.2 PWM及相关API

20.1. 数字和模拟

  • 在介绍API之前,先了解一下什么叫数字接口,什么叫模拟接口。

数字接口Digital

  • 数字接口的参数及返回值只有计算机值 0 和 1 ,1 代表高电平(3.3v),0 代表低电平(0v)。
  • 在micro:bit主板上大多数为数字接口。

模拟接口Analog

  • 模拟接口可以在0-3.3v之间选择一个电压,参数及返回值为0(0v)-1023(3.3v).
  • micro:bit板载的P0、P1、P2、P3、P4、P10为模拟口,其他均为数字接口。

PWM脉冲宽度调制

  • Micro:bit引脚只能设置为3.3V输出,或者将其下拉至0V。如果想要设置一个1.65v的输出,可以通过非常快速地接通和断开该电压来控制,控制它的开启时间和关闭时间,调节电压值,这种技术称为脉冲宽度调制(PWM),这就是write_analog方法。

../_images/rzawcRt.png

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

第一个产生的信号是3V。

第二个产生的信号是write_analog(511),它恰好具有50%的占空比,在一半的时间内为3.3v,而在一半的时间内为0v。结果是该信号的输出1.65V而不是3.3V。

第三个信号具有25%的占空比,生成信号用write_analog(255)。同上所述,该引脚上输出0.825V。

第四个信号具有75%的占空比,生成信号用write_analog(767)。它的能量是第三个信号的三倍,相当于输出2.475V。

I/O口相关API

| API | 描述 | 适用端口| | :————: | :———–: |:———–: | |read_digital()|向I/O口写入一个数字值,0 或者 1| 数字接口| |write_digital()|从I/O口读取一个数字返回值,0 或者 1|数字接口| |read_analog()|从I/O口读取一个模拟返回值,0到1023之间|模拟接口 |write_analog(val)|向I/O口写入一个模拟值(val)(PWM信号)|模拟接口| |set_analog_period(val)|将输出的PWM信号的周期设置为val以毫秒为单位。最小有效值为1ms。|模拟接口| |set_analog_period_microseconds(val)|将输出的PWM信号的周期设置为val以纳秒为单位。最小有效值为256µs。|模拟接口| |is_touched()|端口是否被触摸,因为人接触大地,所以会把I/O口电压拉低。|模拟接口|

温馨提示:Micro:bit仅在P0、P1、P2上安装了上拉电阻,以便触摸感应起作用。