点亮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的数字即为开启。