加入收藏 | 设为首页 |

蛮荒囚徒-玩转microPython(二)

海外新闻 时间: 浏览:384 次

玩转microPython(二)

David Zou

咱们好,我是David教师。前次,咱们衔接了uPYBoard操控板,并开端体会了microPython的REPL环境的魅力。本次,咱们要进一步了解REPL的操作,以及怎么操控uPYBoard操控板上的设备。

先大略的阐明一下,什么是REPL。REPL(Read Eval Print Loop:交互式阐明器)是一个交互环境,让你能够直接输入指令,由操控器翻译为可履行的指令并当即履行,回来履行成果,然后再次等候输入指令,如此不断重复循环。咱们能够幻想到,只要阐明型言语才具有这样的编程环境。microPython的REPL虽不如Python,但也现已满足咱们运用的了。以下,是一些快捷键:

留意:Ctrl+B,Ctrl+D,Ctrl+E都只在空指令行的情况下才有用。

Python是根据目标的编程言语,microPython也如是。microPython中现已将uPYBoard操控板以及微操控器中所包括的各种设备封装成了各种目标。咱们能够很便利的操作。例如,板上有4个LED指示灯。而LED灯便是一个目标,它有on()开,off()关等操作。下面视频将演示怎么点亮和封闭这些LED灯:

【视频:uPYB板上LED操控】

视频中演示了通过剪切板可将现有的程序一条或多条句子直接在SecureCRT中张贴输入。视频中运用的程序如下:

在Python言语中,#作为注释用,会将#后边直至本行完毕的一切内容都认为是注释,操控器会彻底疏忽掉注释内容,而不进行任何解析。

microPython将整个uPYBoard板上设备封装成名为pyb的类库。import pyb是通知操控器,后边的程序中需求运用pyb库中的内容。

接下来的led1 = pyb.LED(1)蛮荒囚徒-玩转microPython(二)是通知操控器,要将操控板上的LED1实例化给led1这个变量。之后,led1这个变量就能够操控操控板上的LED1了。Led1.on()调用了翻开LED1的功用,咱们能够从视频看到,LED1是赤色的灯。相同的,通过调用led1.off()功用,封闭LED1。

同理,LED2是绿色的灯,咱们可顺次履行后边的句子,看看都有什么作用吧。

通过上面的实践,能够体会到阐明型言语的长处,便是能够一条一条的履行句子并检查作用,假如未能得到预期的作用,就能定位过错的方位,可当即修正过错并验证。

接下来,咱们要做的杂乱一些了,咱们要让绿色的LED2一闪一闪的。输入下面的程序:

输入完while句子后,REPL会进入句子块形式,这是while要求的。此刻,提示符会变成"...蛮荒囚徒-玩转microPython(二)"并主动缩进排版,此刻千万不要删去缩进格局,坚持后边的句子比while句子要靠后(缩进)。当输入完最终一行后,按BackSpace键删去新行的缩进,再按回车键。假如输入没有过错的话,此刻没有呈现REPL的提示符">>>",而板子上的绿色LED2正在一亮一灭的。阐明,操控器正在履行咱们的程序,而无法再接纳新的指令。咱们可通过Ctrl+C中止履行,从头回到REPL中。详细输入进程见视频:

【视频:uPYB板上LED操控2.mp4】

阐明:前面两行,和之前相同,将板上的LED2实例化成led变量。While句子是循环句子,语法格局为:

其间句子块是由单条或多条句子组成。句子块起始于缩进,终止于缩进完毕。如:

或:

在while中的句子块,只要判别条件为True(真)时,才会被履行,并且要循环履行到判别条件为False(假)时,才会完毕while循环,履行while之后的句子。

在闪灯的程序中,因为,判别条件直接为True,因而while循环一直循环履行while内部的句子块,while循环永久也不会完毕,因而称这样的循环为"死循环"。

while内部句子块有两条句子,led.toggle()是LED灯的又一功用,其作用是回转当时的状况,当时LED是亮的话,履行后就会灭掉,假如LED当时没亮,则履行后,会点亮LED。

pyb.delay()是让操控器闲暇一段时刻什么都不做。以到达延时的作用。单位为毫秒ms(千分之一秒)。pyb.delay(500)是延时500ms(半秒钟)的时刻。整个while循环便是不断的履行:

翻开LED2

推迟500ms

封闭LED2

推迟500ms

...

咱们看到的作用便是,绿色的LED2一闪一闪的。直到咱们按Ctrl+C完毕履行中止。有爱好的朋友,可将最终一句的延时时刻改为200ms试试。

不知道朋友们是否还记得我在《玩转microPython(一)》中提到过的,uPYBoard操控板有两种履行microPython程序的方法,第一种便是一直在运用的REPL交互的方法。第二种便是履行py文件的方法。现在咱们就来运用第二种方法履行这个闪灯的程序。首要,用恣意的文本修正器,如notepad++之类的,将前面闪灯的程序写入,保存成后缀为py的文件,例如:led2.py

接下来,将led2.py文件拷贝到PYBFLASH盘中,留意,此刻uPYBoard操控板的红蛮荒囚徒-玩转microPython(二)灯亮起,此刻,体系正在将文件写入操控板中,在红灯未灭之前,千万不要拔插USB线或许复位uPYBoard板,不然有可能会损坏uPYBoard上的程序,令操控板无法正常发动。耐性等候操控板上红灯灭掉后,在REPL中键入:

即可履行led2.py,假如你键入程序无误的话,可看到绿色的LED2开端闪烁。RPEL没有提示符呈现。在终端中Ctrl+C可中止程序,回来REPL。

特别需求阐明的是:第二种方法因为需求将程序文件保存到PYBFLASH盘中,这个盘其实是微操控器内部的FLASH存储器。这个存储器是由写入寿数次数约束的,尽管这个次数一般有十万次以上吧,但常常写入毕竟会削减芯片寿数,因而,咱们尽量运用第一种方法来学习编程。只要正式程序需求操控板上电主动运行时,才运用第二种计划。

那么,怎么在uPYBoard操控板上电时主动履行咱们的程序呢?以上面现已拷贝到PYBFLASH盘的led2.py程序为例,将PYBFLASH盘上的main.py拷贝到核算机的硬盘中,用文本修正器翻开,将上面execfile('led2.py')添加到文件的最终的空行中,保蛮荒囚徒-玩转microPython(二)存main.py,将其拷回到PYBFLASH盘上。耐性比及操控板上红灯平息。按复位键或拔插USB数据线后,可看到,绿色LED2在闪烁。要想中止程序,仍然运用终端软件衔接uPYBoard操控板,因为操控器正在履行程序,因而终端软件中什么显现都没有,按下Ctrl+C即可中止程序的履行,回来琴REPL。

其实能够直接在PYBFLASH盘中修正main.p蛮荒囚徒-玩转microPython(二)y文件,但根据芯片寿数的原因,仍是主张拷到核算机上修正。

好了,今日就到这儿,请持续重视:创客DIY乐土(MakerDIY-Park)。