百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

玩转microPython(二)

bigegpt 2024-09-05 12:13 4 浏览

玩转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)是告诉控制器,要将控制板上的LED1实例化给led1这个变量。之后,led1这个变量就可以控制控制板上的LED1了。Led1.on()调用了打开LED1的功能,我们可以从视频看到,LED1是红色的灯。同样的,通过调用led1.off()功能,关闭LED1。

同理,LED2是绿色的灯,大家可依次执行后边的语句,看看都有什么效果吧。

经过上面的实践,可以体会到解释型语言的优点,就是可以一条一条的执行语句并查看效果,如果未能得到预期的效果,就能定位错误的位置,可立即修改错误并验证。

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

输入完while语句后,REPL会进入语句块模式,这是while要求的。此时,提示符会变成"..."并自动缩进排版,此时千万不要删除缩进格式,保持后面的语句比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控制板的红灯亮起,此时,系统正在将文件写入控制板中,在红灯未灭之前,千万不要拔插USB线或者复位uPYBoard板,否则有可能会破坏uPYBoard上的程序,令控制板无法正常启动。耐心等待控制板上红灯灭掉后,在REPL中键入:

即可执行led2.py,如果你键入程序无误的话,可看到绿色的LED2开始闪动。RPEL没有提示符出现。在终端中Ctrl+C可中断程序,返回REPL。

特别需要说明的是:第二种方式由于需要将程序文件保存到PYBFLASH盘中,这个盘其实是微控制器内部的FLASH存储器。这个存储器是由写入寿命次数限制的,虽然这个次数一般有十万次以上吧,但经常写入毕竟会减少芯片寿命,因此,我们尽量使用第一种方法来学习编程。只有正式程序需要控制板上电自动运行时,才使用第二种方案。

那么,如何在uPYBoard控制板上电时自动执行我们的程序呢?以上面已经拷贝到PYBFLASH盘的led2.py程序为例,将PYBFLASH盘上的main.py拷贝到计算机的硬盘中,用文本编辑器打开,将上面execfile('led2.py')添加到文件的最后的空行中,保存main.py,将其拷回到PYBFLASH盘上。耐心等到控制板上红灯熄灭。按复位键或拔插USB数据线后,可看到,绿色LED2在闪动。要想停止程序,依然使用终端软件连接uPYBoard控制板,由于控制器正在执行程序,因此终端软件中什么显示都没有,按下Ctrl+C即可中断程序的执行,返回REPL。

其实可以直接在PYBFLASH盘中编辑main.py文件,但基于芯片寿命的原因,还是建议拷到计算机上修改。

好了,今天就到这里,请继续关注:创客DIY乐园(MakerDIY-Park)。

相关推荐

Linux gron 命令使用详解(linux gminer)

简介gron是一个独特的命令行工具,用于将JSON数据转换为离散的、易于grep处理的赋值语句格式。它的名字来源于"grepableon"或"grepable...

【Linux】——从0到1的学习,让你熟练掌握,带你玩转Linu

学习Linux并掌握Java环境配置及SpringBoot项目部署是一个系统化的过程,以下是从零开始的详细指南,帮助你逐步掌握这些技能。一、Linux基础入门1.安装Linux系统选择发行版:推荐...

Linux常用的shell命令汇总(linux中shell的作用)

本文介绍Linux系统下常用的系统级命令,包括软硬件查看、修改命令,有CPU、内存、硬盘、网络、系统管理等命令。说明命令是在Centos6.464位的虚拟机系统进行测试的。本文介绍的命令都会在此C...

零成本搭建个人加密文件保险柜(适用于 Win11 和 Linux)

不依赖收费软件操作简单,小白也能跟着做支持双系统,跨平台使用实现数据加密、防删除、防泄露内容通俗无技术门槛,秒懂秒用使用工具简介我们将使用两个核心工具:工具名用途系统支持Veracrypt创建加密虚...

如何在 Linux 中使用 Gzip 命令?(linux怎么用gzip命令)

gzip(GNUzip)是Linux系统中一个开源的压缩工具,用于压缩和解压缩文件。它基于DEFLATE算法,广泛应用于文件压缩、备份和数据传输。gzip生成的文件通常带有.gz后缀,压缩效率...

Linux 必备的20个核心知识点(linux内核知识点)

学习和使用Linux所必备的20个核心知识点。这些知识点涵盖了从基础操作到系统管理和网络概念,是构建扎实Linux技能的基础。Linux必备的20个知识点1.Linux文件系统层级标...

谷歌 ChromeOS 已支持 7z、iso、tar 文件格式

IT之家6月21日消息,谷歌ChromeOS在管理文件方面进行了改进,新增了对7z、iso和tar等格式的支持。从5月的ChromeOS101更新开始,ChromeOS...

如何在 Linux 中提取 Tar Bz2 文件?

在深入解压方法之前,我们先来了解.tar.bz2文件的本质。.tar.bz2是一种组合文件格式,包含两个步骤:Tar(TapeArchive):tar是一种归档工具,用于将多个文件或目录打包...

如何在 CentOS 7/8 上安装 Kitematic Docker 管理器

Kitematic是一款流行的Docker图形界面管理平台,适用于Ubuntu、macOS和Windows操作系统。然而,其他发行版(如CentOS、OpenSUSE、Fedora、R...

Nacos3.0重磅来袭!全面拥抱AI,单机及集群模式安装详细教程!

之前和大家分享过JDK17的多版本管理及详细安装过程,然后在项目升级完jdk17后又发现之前的注册和配置中心nacos又用不了,原因是之前的nacos1.3版本的,版本太老了,已经无法适配当前新的JD...

爬虫搞崩网站后,程序员自制“Zip炸弹”反击,6刀服务器成功扛住4.6万请求

在这个爬虫横行的时代,越来越多开发者深受其害:有人怒斥OpenAI的爬虫疯狂“偷”数据,7人团队十年心血的网站一夜崩溃;也有人被爬虫逼到极限,最后只好封掉整个巴西的访问才勉强止血。但本文作者却走...

Ubuntu 操作系统常用命令详解(ubuntu必学的60个命令)

UbuntuLinux是一款流行的开源操作系统,广泛应用于服务器、开发、学习等场景。命令行是Ubuntu的灵魂,也是高效、稳定管理系统的利器。本文按照各大常用领域,详细总结Ubuntu必学...

Linux面板8.0.54 测试版-已上线(linux主机面板)

Linux面板8.0.54测试版【增加】[网站]Java项目新增刷新列表按钮【增加】[网站]PHP项目-Apache-服务新增守护进程功能【增加】[网站]Python项目创建/删除网站时新增同时创建...

开源三剑客——构建私有云世界的基石

公共云原生的浪潮正在席卷这个世界,亚马逊AWS、谷歌GCP和微软的Azure年收入增长超过了30%,越来越多的公司和个人开始将自己的服务部署到云环境中,大型数据中心的规模经济带来了成本的降低,可以在保...

2.2k star,一款业界领先的私有云+在线文档管理系统

简介kodbox可道云(原KodExplorer)是业内领先的企业私有云和在线文档管理系统,为个人网站、企业私有云部署、网络存储、在线文档管理、在线办公等提供安全可控,简便易用、可高度定制的私有云产品...