|
【MicroPython】LAB02 - 流水灯2
[复制链接]
本帖最后由 slotg 于 2016-5-5 00:40 编辑
Pyboard 上的每一支管脚都有自己的名称(X1,Y1...),GPIO 的控制是以单一管脚做为对象,因此上个 LAB 的流水灯控制方式就是以单一管脚的驱动来控制 LED 的亮灯与关灯,MicroPython 似乎没有提供如单片机编程可以以 8 位或是 16 位数据宽度的输出方式?
在这次的 LAB 当中我们定义了一个函数 ByteOut(x) 实现一次 8 位的输出:
- def ByteOut(x):
- n=0
- for i in [0x01,0x02,0x04,0x8,0x10,0x20,0x40,0x80]:
- if x&i:
- leds[n].value(0) # LED on
- else:
- leds[n].value(1) # LED off
- n+=1
复制代码
调用时提供一个参数,而函数就会将该参数显示在 8 个 LED 上,这让我们可以使用列表的方式定义 LED 所要显示的花样:
- pattn = [0x81,0xc3,0xe7,0xff,0x7e,0x3c,0x18,0x3c,0x7e,0xff,0xe7,0xc3]
复制代码
然后一个一个的输出显示:
- while True:
- for i in pattn:
- ByteOut(i)
- pyb.delay(100)
复制代码
main.py
- # main.py LAB02
- from pyb import Pin
- ########################################################
- def ByteOut(x):
- n=0
- for i in [0x01,0x02,0x04,0x8,0x10,0x20,0x40,0x80]:
- if x&i:
- leds[n].value(0) # LED on
- else:
- leds[n].value(1) # LED off
- n+=1
- ########################################################
- # LED display pattern
- pattn = [0x81,0xc3,0xe7,0xff,0x7e,0x3c,0x18,0x3c,0x7e,0xff,0xe7,0xc3]
- leds = [Pin(i, Pin.OUT_OD) for i in ['Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8']]
- for i in range (8): # all LED off
- leds[i].value(1)
- while True:
- for i in pattn:
- ByteOut(i)
- pyb.delay(100)
复制代码
演示视频:
【MicroPython】LAB01 - 流水灯
|
赞赏
-
1
查看全部赞赏
-
|