1、在 pyboard 板上跳迪斯科(disco) 到目前我们使用了板上的单颗 LED 灯而实际上总共有四颗可供使用。我们可以为每颗 LED 灯创建一个对象并分别控制它们。我们将声明一个便于理解的列表(list)形式: leds = [pyb.LED(i) for i in range(1,5)]
|
|
如果没有用 1,2,3,4 的数字作为 pyb.LED( ) 的形参,我们将会得到错误的信息。接下来我们将添加每个 LED 亮灭的无限循环: n = 0
while True:
n = (n + 1) % 4
leds[n].toggle()
pyb.delay(50)
|
|
在这里,n 代表了当前的 LED 且每次循环执行后我们可以得到下一个 n 的值(求余符号%保证了 n 的值在0和3之间)。然后我们就可以控制第 n 颗 led 灯的翻转亮灭了。执行该程序将可见一排的 led 同时亮和灭。 你可能会发现一旦停下当前脚本的运行并重新启动,开发板上的 LED 灯将从之前运行的状态突然进入到我们精心设计的迪斯科。可以通过在脚本初始化时关闭所有的 LED 灯并使用 try/finally 块的方式解决这个问题。当打入 CTRL-C,MicroPython 将产生一个 VCP 中断异常。异常通常意味着某些不对劲的东西,所以你可以通过 try:command 指令“抓取”一个异常。这种情况属于用户打断了脚本的运行,所以我们不需要抓取错误而是简单告诉 MicroPython 当我们退出时要做些什么。最终的程序块如下所示,且我们确保了所有的 LED灯 熄灭。完整的代码如下所示: leds = [pyb.LED(i) for i in range(1,5)]
for l in leds:
l.off()
n = 0try:
while True:
n = (n + 1) % 4
leds[n].toggle()
pyb.delay(50)
finally:
for l in leds:
l.off()
|
|
2、特殊的第四颗灯 蓝色的LED 灯比较特别。可以在让其亮灭的同时通过 iniensity( ) 的方法控制其亮度。其亮度值在 0 到 255 的值间决定。以下的脚本实现了蓝色的LED循环渐亮然后熄灭的功能。
led = pyb.LED(4)
intensity = 0
while True:
intensity = (intensity + 1) % 255
led.intensity(intensity)
pyb.delay(20)
|
|
你可以对其他LED灯调用 instensity( ) 的方法不过其只能被熄灭或被点亮。0 值将使之熄灭而最多到达255的其他值只能点亮该LED。 |