本帖最后由 slotg 于 2016-5-4 15:59 编辑
Pyboard 板上搭载了 4 颗 LED,可以直接使用 pyb.LED(i).on() 或是 pyb.LED(i).off() 命令控制 LED 的亮灭状态,那假如 LED 是接到其他的 GPIO 管脚的话那该如何控制呢?我的第一个实验就是将板子的 Y1 到 Y8 管脚外接 8 颗 LED 做流水灯的控制。
板上的 LED 是使用高电位点亮的架构,也就是当 MCU 管脚输出高电位时点亮 LED。
而我实验所使用的外接 LED 板是低电位控制的架构,也就是当 MCU 管脚输出低电位时才点亮 LED。查询了 MCU 的 Datasheet,如下图所示不管是高电位驱动或是低电位驱动管脚都有 25mA 的驱动能力,因此直接连接 LED 是没有问题的。
main.py
- # main.py LAB01
- from pyb import Pin
- leds = [Pin(i, Pin.OUT_OD) for i in ['Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8']]
- while True:
- for i in range (8): # 0 .. 7
- leds[i].value(0)
- pyb.delay(200)
- leds[i].value(1)
- for i in range (6,0,-1): # 6 .. 1
- leds[i].value(0)
- pyb.delay(200)
- leds[i].value(1)
复制代码
leds = [Pin(i, Pin.OUT_OD) for i in ['Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8']]
的功能是将 Y1 到 Y8 管脚设定为 open-drain 的输出模式,依 Pyboard 的处理方式当设定为输出模式后该管脚是输出低电位的状态,因此在程序开始运行之后所有的 LED 一开始都是点亮的状态,这表示 GPIO 做为输出模式时使用高电位动作的方式会比较合适些。
演示视频: