创客百科

姿势共享,有节操无门槛参与的创客百科,创客动力之源 \ (^_^) /

用户工具

站点工具


pyboard:tutorial:leds

点亮LED和基本Python概念

最简单的事是点亮板上的LED。与板连接,并按照教程1所述登录。我们会通过在REPL中点亮LED,输入以下内容:

»> myled = pyb.LED(1) »> myled.on() »> myled.off()

这些指令会打开和关闭LED。

这些步骤非常顺畅,但是我们仍希望这一过程实现自动化。在板上用您最喜欢的文本编辑器打开MAIN.PY文件。 将以下行写入或粘贴到文件中。若您对python尚不熟悉,请确保您没有在缩进上出错,因为这很重要!:

led = pyb.LED(2)
while True:
    led.toggle()
    pyb.delay(1000)

当您保存时,pyboard上的红色灯应点亮约1秒钟。使用软复位(点击CTRL-D)自动运行脚本。 pyboard将会重新开始,您应看到绿色灯持续闪烁。成功,建立邪恶机器人军队大业的第一步已经完成了! 若您厌倦了恼人的闪光,在您的终端上点击CTRL-C即可停止其运行。

这个代码有何用?首先我们需要一些术语。Python是一种面向对象的语言,python中几乎所有内容都是 , 当您创建某一类的实例时,即得到一个 对象 。每一类都有与之相关的 方法 。方法(又称成员函数)是用于与对象交互或控制对象。

第一行代码创建一个我们称为LED的对象。我们创建对象时,它需要一个介于1-4之间的单独参数,对应板上的4个LED。 pyb.LED类有3个我们将会用到的重要的成员函数:on()、off()和toggle()。我们用到的另外一个函数是pyb.delay()。 这需要等待给定时长(以毫秒为单位)。我们创建LED对象后,其语句为True:创建一个在开关之间切换的无限循环,并等待1秒钟。

练习:尝试更改LED切换的时间并打开另外一个LED。

练习:直接连接到pyboard,创建一个pyb.LED对象,并使用.on()方法打开该对象。

pyboard的磁盘

目前为止,我们仅使用了单一LED,而实际上pyboard有4个可用LED。我们首先为每个LED创建一个对象,这样就能实现对LED的控制。我们通过创建一个LED的列表完成这一步骤。:

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块,可修复这一问题。异常。异常通常意味着某些地方出现错误,您可以使用try:命令“捕获”异常。这种情况只是用户中断了脚本,所以我们无需捕获异常,只需告知MicroPython在退出时所应做的。最后的块完成此任务,我们使用其确保所有LED都已关闭。完整代码为:

leds = [pyb.LED(i) for i in range(1,5)]
for l in leds:
    l.off()

n = 0
try:
   while True:
      n = (n + 1) % 4
      leds[n].toggle()
      pyb.delay(50)
finally:
    for l in leds:
        l.off()

第四个特殊LED

蓝色LED是特殊的。您可使用intensity()类函数开启和关闭LED并实现对亮度的控制。这需要一个介于0至255的数字来确定亮度。以下脚本使蓝色LED渐亮,然后再次关闭此LED。:

led = pyb.LED(4)
intensity = 0
while True:
    intensity = (intensity + 1) % 255
    led.intensity(intensity)
    pyb.delay(20)

您可在其他LED上调用,但是这些LED只能开启或关闭。0为关闭,其他小于等于255的数字即为开启。

本页面的其他翻译:
pyboard/tutorial/leds.txt · 最后更改: 2019/01/31 18:16 由 Spoony