11209| 12
|
[讨论交流] 用Mind+玩转PinPong库 |
本帖最后由 汤果 于 2021-1-24 14:27 编辑 近期 Mind+ 迎来重大版本更新,新增了上传模式 micro:bit V2.0 支持,另外推出了 Python 模式。是的,你没听错,就是目前很流行的编程语言 Python。那我们就不用再单独安装 Python 编程环境,可以直接在 Mind+ 中编写用 PinPong 库控制的代码了! 下面我们一起来看一下这全新的 Python 模式吧。 Python 模式介绍 将软件更新到 1.7.0 RC1.0 后可以在原先右上角模式切换处看到新增了一个【Python模式】选项。点击【Python模式】即可切换到 Python 模式。在 Python 模式中我们可以看到界面分为三个部分:左上方是代码编辑区,左下方是终端信息输出区,右侧是文件管理区。我们可以看到软件左上角有【模块】和【代码】两个选项可以切换。当前状态是代码编程界面,适合代码熟练的同学手工编写代码。 切换到模块编程,我们可以看到 Mind+ 经典的界面布局。是不是很像上传模式呢?左侧是积木块,中间是脚本编辑区,右侧是自动生成的代码和终端显示区。这边的使用方法和上传模式类似,也有【扩展】可以加载。不过目前扩展只有“海龟绘图”和“代码生成器”,用户库暂未开放。模块编程适合那些对 Python 语法不熟悉,想要学习Python 的同学。 对于那些有一定 Python 语言基础的同学可能更习惯手工编写代码,可以选择代码编程模式。但有时候可能会忘记一些代码的语法,此时可以点击右上角的【图形区】按钮,打开左侧的图形化代码面板。找到想要使用的积木块,拖动到中间代码编辑区即可自动生成该积木的 Python 代码。简直不要太友好~~ 用PinPong库编写代码 在使用 PinPong 库之前需要安装扩展库。点击软件右上角的【库管理】按钮,在弹出的面板中找到 pinpong,点击【安装】即可完成安装。如果安装速度较慢,可以在右上方切换不同的源。 安装完成后就可以开始编写代码了。我们在项目文件目录中新建一个文本文件,例如名为“main.py”。打开 PinPong 库文档,找到示例代码,粘贴到文件中。 import time from pinpong.board import Board,Pin,ADC Board("uno").begin() #初始化,选择板型(uno、leonardo、xugu)和端口号,不输入端口号则进行自动识别 #Board("uno","COM36").begin() #windows下指定端口初始化 #Board("uno","/dev/ttyACM0").begin() #linux下指定端口初始化 #Board("uno","/dev/cu.usbmodem14101").begin() #mac下指定端口初始化 adc0 = ADC(Pin(Pin.A0)) #将Pin传入ADC中实现模拟输入 模拟输入方法1 #adc0 = Pin(Pin.A0, Pin.ANALOG) #引脚初始化为电平输出 模拟输入方法2 while True: v = adc0.read() #读取A0口模拟信号数值 模拟输入方法1 #v = adc0.read_analog() #读取A0口模拟信号数值 模拟输入方法2 print("A0=", v) time.sleep(0.2) 这段代码实现的主要功能是读取模拟引脚 A0 的数据,主控板是 Arduino。我们可以在 A0 接入一个光线传感器,读取环境光线的强弱。 将传感器连接好后把 Arduino 接到电脑,按下【运行】按钮即可观察效果。 那我们如果更换了主控板,代码该怎么改呢?观察上述代码,我们发现使用 PinPong 库分为几个步骤。 1.导入 PinPong 库:from pinpong.board import Board,Pin,ADC 2.指定主控类型:Board("uno").begin() 3.定义引脚:adc0 = ADC(Pin(Pin.A0)) 4.读取引脚数据:v = adc0.read() 更换了主控板,我们只需要修改主控类型及对应的引脚信息就完成了程序的迁移。例如下方便是将主控板更换为 micro:bit 后的代码: import time from pinpong.board import Board,Pin,ADC Board("microbit").begin() #改动1 adc0 = ADC(Pin(Pin.P0)) #改动2 while True: v = adc0.read() print("A0=", v) time.sleep(0.2) 演示效果如下: 同理我们也可以把主控改成掌控板: import time from pinpong.board import Board,Pin,ADC Board("handpy").begin() #改动1 adc0 = ADC(Pin(Pin.P0)) while True: v = adc0.read() print("A0=", v) time.sleep(0.2) 也可以正常运行: 综上,PinPong 库编写的代码很方便迁移,更改主控后代码改写量很少,让用户更注重核心代码的实现。 当然,读取光线这个命题其实也不一定要用光线传感器。例如 micro:bit 和 掌控板的板载资源就可以实现环境光线强弱的检测。下面分别用 PinPong 库调用 micro:bit 和掌控板的板载资源来实现光线检测。 micro:bit import time from pinpong.board import Board,MSensor Board("microbit").begin() micro = MSensor() while True: print(micro.get_brightness()) #读取环境光 time.sleep(0.2) 掌控板 import time from pinpong.board import Board,HSensor Board("handpy").begin() esp = HSensor() while True: print(esp.read_light()) #读取环境光强度 time.sleep(0.2) 对比发现两者代码很接近,主要区别在于导入的模块名称及调用的方法名称不同。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed