mPythonX 帮助文档¶
mPythonX是一款掌控板专用、易上手、可图形化编程的软件。

软件安装¶
最新版本为0.6.1:
- http://static.steamaker.cn/files/mpythonx-0.6.1-win.exe (Win 7 / 8 / 10)
- http://static.steamaker.cn/files/mpythonx-0.6.1-mac.zip (Mac OS)
- http://static.steamaker.cn/files/mpythonx-0.6.1-xp.exe (Win XP)
- http://static.steamaker.cn/files/mpythonx-0.5.2-linux.tar.gz (Linux x64)
- http://static.steamaker.cn/files/mpythonx-0.5.2-arm.tar.gz (树莓派)
- http://static.steamaker.cn/files/mpythonx-0.5.2-arm64.tar.gz (虚谷号、冲锋舟)
beta测试版本:
- http://static.steamaker.cn/files/mpythonx-0.7.0-b4-win.exe (Win 7 / 8 / 10)
- http://static.steamaker.cn/files/mpythonx-0.7.0-b4-mac.zip (Mac OS)
附:掌控板的Mac驱动
https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip
Mac驱动装不上的解决方案
https://www.labplus.cn/posts/5ce21e777f719d2556d121c3
提示
安装过程有可能被杀毒软件误报病毒,需要选择“允许程序所有操作”。
目录¶
mPython X 使用说明¶
软件安装¶
最新版本为0.6.1:
- http://static.steamaker.cn/files/mpythonx-0.6.1-win.exe (Win 7 / 8 / 10)
- http://static.steamaker.cn/files/mpythonx-0.6.1-mac.zip (Mac OS)
- http://static.steamaker.cn/files/mpythonx-0.6.1-xp.exe (Win XP)
- http://static.steamaker.cn/files/mpythonx-0.5.2-linux.tar.gz (Linux x64)
- http://static.steamaker.cn/files/mpythonx-0.5.2-arm.tar.gz (树莓派)
- http://static.steamaker.cn/files/mpythonx-0.5.2-arm64.tar.gz (虚谷号、冲锋舟)
beta测试版本:
- http://static.steamaker.cn/files/mpythonx-0.7.0-b4-win.exe (Win 7 / 8 / 10)
- http://static.steamaker.cn/files/mpythonx-0.7.0-b4-mac.zip (Mac OS)
附:掌控板的Mac驱动
https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip
Mac驱动装不上的解决方案
https://www.labplus.cn/posts/5ce21e777f719d2556d121c3
提示
安装过程有可能被杀毒软件误报病毒,需要选择“允许程序所有操作”。
安装软件的最后一步,会自动安装CP210x的驱动,如果先前安装过则可以忽略。

更新日志¶
0.6.1¶
- 掌控板固件更新到v2.2.1;
- 优化按键、触摸键事件语法;
- 单次上传文件改为最大1M;
- 增加扩展:N+小方舟、MU视觉传感器等;
- 增加UDP消息传递;
- 增加蓝牙iBeacon室内定位及示例。
0.6.0¶
- 增加一个新的BLE固件;
- 增加BLE相关功能与示例;
- 改写讯飞语音识别与示例。
0.5.2¶
- 掌控板固件更新到v2.0.2;
- 修复讯飞语音TTS;
- 增加百度语音及示例。
0.5.1¶
- 掌控板固件更新到v2.0.1;
- 优化掌控板语音识别;
- 界面小修改。
0.5.0¶
- 加入硬件选择:掌控板/AI交互实验箱/micro:bit;
- 掌控板模式下,可烧录掌控板2.0固件(兼容1.X板);
- 掌控板模式下,增加磁力计(仅掌控板2.0可用)、讯飞语音识别、及一些通用传感器;
- AI交互实验箱模式下,提供实验箱专用固件与示例;
- micro:bit模式下,相比旧版micro:bit专用软件,增加REPL区与示例。
0.3.5¶
- 固件更新到1.5.1,内置增加一些中国歌曲、修复舵机bug;
- 增加可选固件:模拟 micro:bit 连 Scratch 3(测试版);
- 软件启动速度有所提高;
- 检测掌控板连接情况,自动连接、断开;
- 控制台可以 Ctrl+V 粘贴代码;
- 增加“天气”分类,支持心知天气;
- 支持 DS18B20 传感器;
- 产生真随机数(通过随机种子)。
0.3.4¶
- 固件更新到1.5.0,可用空间扩大至2M;
- 新增sdcard库,支持外接sd卡;
- urequests库支持http上传二进制文件;
- gui库支持显示bmp图片;
- gui库支持生成并显示二维码;
- ap模式可设置密码;
- neopixel新增调整亮度block;
- mqtt新增腾讯物联网block;
- 对部分OSError增加中英文提示。
0.3.3¶
- 允许刷入main.py之外的其他文件;
- 文件系统增加选取任意*.py文件运行的功能;
- “事件”分类增加掌控板被抛起的事件。
0.3.2¶
- 允许香港手机号码登录小程序。
0.3.1¶
- 支持MQTT、EasyIoT;
- 调整引脚下拉框编程方式;
- 新增库函数hcsr04.py。
0.3.0¶
- 增加audio、tts、radio等;
- 增加微信小程序功能;
- 支持Tello教育版、Yeelight;
- Blynk库升级到最新版,支持私服;
- 增加“串口”分类,增加、优化若干block;
- 增加“擦除固件”、“打开板载文件”等功能。
0.2.2¶
- 增加内置英文字体、允许自定义英文字体;
- 增加自定义条件触发事件;
- 对pbm图片的支持更友好;
- python基础语法完善:增加“集合”分类、try-except-finally语法;
- 增加”三轴倾斜角值”、”I2C超声波值”等block;
- 调试与文件下载增加出错提示;
- 固件内置资源更新,增加若干表情、字体。
0.2.1¶
- 集成tinywebio库;
- 增加功能:只刷代码;
- 增加自定义代码block;
- 增加灯带彩虹效果block,及示例;
- 增加P~N触摸事件block。
0.2.0¶
- 固件更新,开机动画优化;
- 在代码出错时,OLED能提示具体错误行数;
- 菜单功能增加:掌控内部文件系统、示例程序、中英双语;
- 优化文件打开方式、增加信息提示、固件自检;
- 增加文件、字典、Bluebit等分类;
- 优化音乐、列表、元组等分类;
- 允许用户上传pbm图片并读取、wifi能选时区等。
0.1.2¶
- 增加开机动画;
- 增加 按钮/定时器/引脚电平 触发事件;
- 增加“元组”定义。
0.1.1¶
- 修正tab键导致python程序出错的bug;
- 修正变量的None定义导致python程序出错的bug;
- 内置官方固件、Scratch固件、允许烧录自定义固件;
- 双击图形化编程区隐藏代码区,再双击还原;
- 图形化增加工具栏,允许鼠标放大缩小。
0.1.0¶
- 修复内置固件的bug;
- 增加“检查更新”按钮;
- 优化中文读写;
- 红色显示报错信息、屏蔽读取文件时的回传内容。
图形编辑区¶
保存¶
“保存代码”只保存程序对应的代码,后缀为py:

点击“本机读取”,加载保存的py文件:

读取效果如图:

“保存模块”保存程序对应的代码及图形化模块,后缀为xml:

点击“本机读取”,加载保存的xml文件,读取效果如图:

图形块 API¶
显示¶
oled.DispChar()¶
描述: oled屏显示文本

oled.DispChar(s, x, y, mode=TextMode.normal)
参数:
s
-需要显示的文本。
x
、y
-文本的左上角作为起点坐标。
mode
- 设置文本模式,默认为TextMode.normal
TextMode.normal
- 等于1 。普通模式,文本显示白色,背景为黑色。TextMode.rev
- 等于2 。反转模式,文本显示黑色,背景为白色。TextMode.trans
- 等于3 。透明模式,透明文本意味着文本被写在显示中已经可见的内容之上。不同之处在于,以前屏幕上的内容仍然可以看到,而对于normal,背景将被当前选择的背景颜色所替代。TextMode.xor
- 等于4 。XOR模式,如果背景是黑色的,效果与默认模式(normal模式)相同。如果背景为白色,则反转文本。
oled.invert()¶
描述: 翻转像素点,设置黑底、白底。

oled.invert(n)
参数:
n
- 当n=1时,未填充像素点点亮,填充像素点灭。当n=0时,则反。默认启动是填充像素点点亮。
oled.circle()¶
描述: 绘制空心圆。

oled.circle(x, y, radius, c)
参数:
x
、y
-左上角作为起点坐标radius
- 圆半径大小c
- 为1时,像素点亮;c 为0时,像素点灭
oled.fill_circle()¶
描述: 绘制实心圆。

oled.fill_circle(x, y, radius, c)
参数:
x
、y
-左上角作为起点坐标radius
- 圆半径大小c
- 为1时,像素点亮;c 为0时,像素点灭
oled.triangle()¶
描述: 绘制空心三角形。

oled.triangle(x0, y0, x1, y1, x2, y2, c)
参数:
x0
、y0
-三角形上顶点坐标x1
、y1
-三角形左顶点坐标x2
、y2
-三角形右顶点坐标c
- 为1时,像素点亮;c 为0时,像素点灭
oled.fill_triangle()¶
描述: 绘制实心三角形。

oled.fill_triangle(x0, y0, x1, y1, x2, y2, c)
参数:
x0
、y0
-三角形上顶点坐标x1
、y1
-三角形左顶点坐标x2
、y2
-三角形右顶点坐标c
- 为1时,像素点亮;c 为0时,像素点灭
oled.line()¶
描述: 绘制线段

oled.line(x1, y1, x2, y2, c)
参数:
x1
、y1
- 起点坐标x2
、y2
- 终点坐标c
- 为1时,像素点亮;c 为0时,像素点灭
oled.rect()¶
描述: 绘制矩形边框

oled.rect(x, y, w, h, c)
参数:
x
、y
- 起点坐标w
、h
- 宽度,高度c
- 为1时,像素点亮;c 为0时,像素点灭
oled.fill_rect()¶
描述: 绘制实心矩形

oled.fill_rect(x, y, w, h, c)
参数:
x
、y
- 起点坐标w
、h
- 宽度,高度c
- 为1时,像素点亮;c 为0时,像素点灭
oled.RoundRect()¶
描述: 绘制弧角矩形边框

oled.RoundRect(x, y, w, h, r, c)
参数:
x
、y
- 起点坐标w
、h
- 宽度,高度r
- 圆弧角半径c
- 为1时,像素点亮;c 为0时,像素点灭
oled.Bitmap()¶
描述: 绘制bitmap图案

oled.Bitmap(x, y, bitmap, w, h, c)
参数:
x
、y
- 起点坐标bitmap
- 图案bitmap数组名称w
- 图案宽度h
- 图案高度c
- 为1时,像素点亮;c 为0时,像素点灭
UI.ProgressBar()¶
描述: 绘制进度条

UI.ProgressBar(x, y, width, height, progress)
参数:
x
、y
-左上角作为起点坐标width
-进度条宽度height
-进度条高度progress
-进度条百分比
按键¶
按键控制类指令
加速度¶
加速度传感器指令,单位g,范围-2~+2g
accelerometer.get_y()¶
描述: 获取y轴上的加速度测量值
accelerometer.get_z()¶
描述: 获取z轴上的加速度测量值
板载RGB¶
RGB LED控制类指令,用于控制掌控板的3颗RGB ws2812灯珠,rgb对象为neopixel的衍生类,继承neopixel的方法
rgb[n] = (r, g, b)¶
描述: 设置对应灯珠的颜色,n 为板载RGB灯的个数,第一个灯为0, r、g、b 为颜色亮度值,范围值为0~255
rgb.write()¶
描述: 把数据写入RGB灯珠中
外部RGB¶
外部RGB灯带控制类指令
class NeoPixel(pin, n, bpp=3, timing=0)¶
描述: 构建对象

参数:
pin
- 输出引脚n
- LED灯的个数bpp
- bpp=3,默认为3元组RGB;bpp=4,对于具有3种以上颜色的LED,例如RGBW像素或RGBY像素,采用4元组RGBY或RGBY像素timing
- 默认等于0,为400KHz速率;等于1,为800KHz速率
NeoPixel.write()¶
描述: 把数据写入RGB灯珠中
bme280¶
bme280环境传感器指令
bme280是一款集成温度、湿度、气压,三位一体的环境传感器,具有高精度,多功能,小尺寸等特点
- 温度检测范围:-40℃~+85℃,分辨率0.1℃,误差±0.5℃
- 湿度检测范围:0~100%RH,分辨率0.1%RH,误差±2%RH
- 压力检测范围:300~1100hPa
- 湿度测量响应时间:1s
注意
掌控板预留bme280芯片位置未贴片,默认配置的掌控板是不带bme280环境传感器,需留意!
bme280.pressure()¶
描述: 返回大气压值,单位Pa
模拟时钟¶
UI类指令,提供模拟钟表显示功能
wifi¶
提供便捷的 wifi 连接网络方式或热点 wifi 功能
wifi.connectWiFi()
描述: 连接 wifi 网络,连接掌控板开启的热点则无需密码

参数:
ssid
- WiFi网络名称password
- WiFi密码
wifi.sta.ifconfig()[n]
描述: wifi 连接成功后,获取wifi配置信息,含 IP、netmask、getway、DNS,n为0、1、2、3

示例¶

wifi.disconnectWiFi()
描述: 断开wifi网络连接

wifi.enable_APWiFi(essid,channel)
描述: 开启无线AP功能,用于掌控板之间的相互通信

参数:
essid
- 创建WiFi网络名称channel
-设置wifi使用信道,channel 1~13
wifi.disable_APWiFi()
描述: 关闭无线AP

ntptime.settime(timezone, server)
描述: 将掌控板的时间与网络时间同步

参数:
timezone
- 时区时间差,默认为东八区,补偿8小时server
- 可自行指定授时服务器,server为字符串类型,默认授时服务器为”ntp.ntsc.ac.cn”
appserver.start()
描述: TinyWebIO服务后台运行,该服务为App Inventor应用提供远程控制接口的掌控板工具包

appserver.start_foreground()
描述: TinyWebIO服务前台运行
引脚¶
引脚控制类指令
pin.read_digital()¶
描述: 读取IO引脚电平值,1代表高电平,0代表低电平

pin_num
- 掌控板引脚编号
pin.write_digital()¶
描述: 设置IO引脚的高低电平,1为高电平,0为低电平

pin_num
- 掌控板引脚编号
pin.read_analog()¶
描述: 读取IO引脚的模拟输入

pin_num
- 掌控板引脚编号
无线广播¶
radio 模块提供无线广播功能,支持13 Channel,在相同的 Channel 内能接收到成员发出的广播消息,适合10米范围内的多板组网的通讯
radio.off()¶
描述: 关闭无线功能
radio.receive()¶
描述: 接收无线广播消息,消息以字符串形式返回。最大可接收250字节数据。如果没有接收到消息,则返回 None
。当 receive 内参数为 True
,即 receive(True) ,返回 (msg,mac) 的二元组。默认缺省 receive(False) ,即只返回 msg

radio.receive_bytes()¶
描述: 接收无线广播消息,消息以字节形式返回。其他同 radio.receive() 相同
radio.send_bytes()¶
描述: 发送无线广播消息,发送数据类型为字节。当发送成功后返回 True
,否则返回 False
音乐¶
音乐控制类指令
music.pitch()¶
描述: 播放一定时长的频率

frequency
- 频率duration
- 毫秒数,如果为负,则连续播放频率,直到阻塞或者被中断,或者在后台呼叫的情况下,设置或调用新频率stoppin
- 默认是掌控板的P6引脚,一次只能在一个引脚上播放频率wait
- 阻塞,如果为 True 则阻塞,反之则不
range()¶
描述: 创建一个整数列表,一般用在 for 循环中
start
- 计数从 start 开始,默认是从 0 开始,例如range(5)等价于range(0, 5)stop
- 计数到 stop 结束,但不包括 stop,例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5step
- 步长,默认为1,例如:range(0, 5) 等价于 range(0, 5, 1)
music.play()¶
描述: 播放音乐
music
- 内置音乐,如music.PYTHON;音符,如’c1:4’;音符列表,如[‘r4:2’, ‘g’, ‘g’, ‘g’, ‘eb:8’, ‘r:2’, ‘f’, ‘f’, ‘f’, ‘d:8’]pin
- 默认是掌控板的P6引脚wait
- 阻塞,如果为 True 则阻塞,反之则不loop
- 如果 loop 设置为 True ,则重复调整直到stop被调用或阻塞调用被中断
music.set_tempo()¶
描述: 设置播放节拍
ticks
- 一定数量的ticks(整数)构成单个节拍bpm
- 每分钟节拍数
音频¶
音频指令,提供音频录音播放功能,使用P8和P9引脚作为音频解码输出
注意
目前只实现音频播放功能
audio.play(url)¶
描述: 本地或网络音频播放,目前只支持mp3格式音频
url
- 音频文件路径,类型为字符串,可以是本地路径地址,也可以是网络上的URL地址

audio.pause()¶
描述: 音频播放暂停
audio.resume()¶
描述: 音频播放恢复,用于暂停后的重新播放
audio.player_status()¶
描述: 用于获取系统是否处于音频播放状态,返回1,说明正处于播放中,返回0,说明播放结束,处于空闲
事件¶
按键、引脚、定时器、子线程等事件指令
button_[a,b].irq(handler=None, trigger=(Pin.IRQ_FALLING | Pin.IRQ_RISING), priority=1, wake=None)¶
描述: 按键 a 中断事件
trigger
- trigger 配置可以触发中断的事件,可能的值是:Pin.IRQ_FALLING 下降沿中断;Pin.IRQ_RISING 上升沿中断;Pin.IRQ_LOW_LEVEL 低电平中断;Pin.IRQ_HIGH_LEVEL 高电平中断handler
- handler 是一个可选的函数,在中断触发时调用,返回一个回调对象priority
- 设置中断的优先级,它可以采用的值是特定于端口的,但是更高的值总是代表更高的优先级wake
- 选择此中断可唤醒系统的电源模式,它可以是 machine.IDLE , machine.SLEEP 或 machine.DEEPSLEEP

class machine.Timer(id, …)¶
描述: 构造给定id的新计时器对象,Id为-1构造虚拟计时器
Timer.init(*, mode=Timer.PERIODIC, period=-1, callback=None)¶
描述: 初始化计时器
mode
- Timer.ONE_SHOT:计时器运行一次,直到配置完毕通道的期限到期;Timer.PERIODIC:定时器以通道的配置频率定期运行

Pin.irq(handler=None, trigger=(Pin.IRQ_FALLING | Pin.IRQ_RISING))¶
描述: 配置在引脚的触发源处于活动状态时调用的中断处理程序
handler
- 是一个可选的函数,在中断触发时调用trigger
- 配置可以触发中断的事件,可能的值是:Pin.IRQ_FALLING 下降沿中断;Pin.IRQ_RISING 上升沿中断;Pin.IRQ_LOW_LEVEL 低电平中断;Pin.IRQ_HIGH_LEVEL 高电平中断

逻辑¶
and¶
描述: 布尔”与”
or¶
描述: 布尔”或”
not¶
描述: 布尔”非”
None¶
描述: 空
return¶
描述: return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None
try…except…finally¶
描述: 执行 try 语句,无异常则继续执行 try 语句;发生异常则跳转至 except 语句并执行之,执行 except 语句完毕后跳回执行 try 语句的剩余部分。无论有无异常,最后必定执行 finally 语句

eval(expression[, globals[, locals]])¶
描述: 用来执行一个字符串表达式,并返回表达式的值

参数:
expression
- 表达式globals
- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象locals
- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象
数学¶
math.sqrt(x)¶
描述: 返回 x 的平方根
math.fabs(x)¶
描述: 返回 x 的绝对值
math.log(x)¶
描述: 返回 x 的自然对数,x > 0
math.log10(x)¶
描述: 返回以10为基数的 x 对数,x > 0
math.exp(x)¶
描述: 返回 e 的 x 次幂,如 math.exp(1) 返回2.718281828459045
math.pow(x, y[, z])¶
描述: 返回 x 的 y 次方,如果 z 存在,则再对结果进行取模,其结果等效于 pow(x,y) %z
math.sin(x)¶
描述: 返回的 x 弧度的正弦值
math.cos(x)¶
描述: 返回的 x 弧度的余弦值
math.tan(x)¶
描述: 返回的 x 弧度的正切值
math.radians(x)¶
描述: 返回角度 x 的弧度值
math.asin(x)¶
描述: 返回 x 的反正弦弧度值
math.acos(x)¶
描述: 返回 x 的反余弦弧度值
math.atan(x)¶
描述: 返回 x 的反正切弧度值
math.ceil(x)¶
描述: 返回一个大于或等于 x 的的最小整数
math.floor(x)¶
描述: 返回数字的下舍整数,小于或等于 x
random.randint(a, b)¶
描述: 返回随机整数 N 满足 a <= N <= b。相当于 randrange(a, b+1)
random.randrange(start, stop[, step])¶
描述: 返回指定递增基数集合中的一个随机数,基数缺省值为1
返回值: 从给定的范围返回随机项
参数:
start
- 指定范围内的开始值,包含在范围内stop
- 指定范围内的结束值,不包含在范围内step
- 指定递增基数
random.random()¶
描述: 返回随机生成的一个实数,它在[0,1)范围内
‘~’¶
描述: 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
‘&’¶
描述: 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
‘|’¶
描述: 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1
‘^’¶
描述: 按位异或运算符:当两对应的二进位相异时,结果为1
‘<<’¶
描述: 左移动运算符:运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0
文本¶
文本操作
str.isdigit()¶
描述: 检测字符串是否只由数字组成
str.isalpha()¶
描述: 检测字符串是否只由字母组成
str.find(str, beg=0, end=len(string))¶
描述: 检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1
返回值: 如果包含子字符串返回开始的索引值,否则返回-1
参数:
str
- 指定检索的字符串beg
- 开始索引,默认为0end
- 结束索引,默认为字符串的长度
str.rfind(str, beg=0 end=len(string))¶
描述: 返回字符串最后一次出现的位置,如果没有匹配项则返回-1
返回值: 返回字符串最后一次出现的位置,如果没有匹配项则返回-1
参数:
str
- 指定检索的字符串beg
- 开始索引,默认为0end
- 结束索引,默认为字符串的长度
str.strip([chars])¶
描述: 移除字符串头尾指定的字符(默认为空格)或字符序列
返回值: 返回移除字符串头尾指定的字符序列生成的新字符串
参数:
chars
- 移除字符串头尾指定的字符序列
bytes([source[, encoding[, errors]]])¶
描述: 返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本
返回值: 返回一个新的 bytes 对象
参数:
source
- 如果 source 为整数,则返回一个长度为 source 的初始化数组source
- 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列source
- 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数source
- 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearraysource
- 如果没有输入任何参数,默认就是初始化数组为0个元素
bytes.decode(encoding=”utf-8”, errors=”strict”)¶
描述: 以指定的编码格式解码 bytes 对象。默认编码为 ‘utf-8’
返回值: 返回解码后的字符串
参数:
encoding
- 要使用的编码,如”UTF-8”errors
- 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值
ujson.dumps(obj)¶
描述: 将 dict 类型的数据转换成 str,因为如果直接将 dict 类型的数据写入 json 文件中会发生报错,因此在将数据写入时需要用到该函数
返回值: 返回转换后的 json 字符串
参数:
obj
- 要转换的对象
列表¶
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现,如[0, ‘mpython’]
list.extend(seq)¶
描述: 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
seq
- 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾

list.insert(index, obj)¶
描述: 将指定对象插入列表的指定位置
index
- 对象obj需要插入的索引位置obj
- 要插入列表中的对象

list.pop([index=-1])¶
描述: 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
index
- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值

str.split(str=””, num=string.count(str))¶
描述: 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num+1 个子字符串
str
- 分隔符,默认为所有的空字符,包括空格、换行(n)、制表符(t)等num
- 分割次数,默认为 -1, 即分隔所有

集合¶
集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set.intersection_update(set1, set2 … etc)¶
描述: 修改当前集合,保留与参数中的集合的相同元素

set.intersection_update(set1, set2 … etc)
set1
- 必需,要查找相同元素的集合set2
- 可选,其他要查找相同元素的集合,可以多个,多个使用逗号 , 隔开
set.update(set)¶
描述: 修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略
set.update(set)
set
- 必需,可以是元素或集合
文件¶
文件操作
open(file, mode=’r’)¶
描述: 打开一个文件,并返回文件对象
open(file, mode=’r’)
file
- 必需,文件路径(相对或者绝对路径)mode
- 可选,文件打开模式,常用选项:t,文本模式 (默认);b,二进制模式;r,以只读方式打开文件;rb,以二进制格式打开一个文件用于只读;w,打开一个文件只用于写入;wb,以二进制格式打开一个文件只用于写入
file.close()¶
描述: 关闭文件。关闭后文件不能再进行读写操作
网络¶
usocket.socket(af=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP)¶
描述: 构建对象

参数:
af
- 地址socket.AF_INET
:=2 — TCP/IP – IPv4socket.AF_INET6
:=10 — TCP/IP – IPv6
type
- socket 类型socket.SOCK_STREAM
:=1 — TCP 流socket.SOCK_DGRAM
:=2 — UDP 数据报socket.SOCK_RAW
:=3 — 原始套接字socket.SO_REUSEADDR
:=4 — socket可重用
proto
- 协议号。一般不指定proto参数,因为有些MicroPython固件提供默认参数socket.IPPROTO_TCP
:=6socket.IPPROTO_UDP
:=17
usocket.getaddrinfo(host, port)¶
描述: 将主机域名(host)和端口(port)转换为用于创建套接字的5元组序列。元组列表的结构: (family, type, proto, canonname, sockaddr)

socket.close()¶
描述: 关闭 socket。一旦关闭后,socket 所有的功能都将失效。远端将接收不到任何数据 (清理队列数据后)。 内存碎片回收时 socket 会自动关闭,但还是推荐在必要时用 close() 去关闭

socket.listen([backlog])¶
描述: 监听 socket,使服务器能够接收连接。如果指定了 backlog ,它不能小于0 (如果小于0将自动设置为0); 超出后系统将拒绝新的连接。如果没有指定,将使用默认值

参数:
backlog
- 接受套接字的最大个数,至少为0,如果没有指定,则默认一个合理值
socket.accept()¶
描述: 接收连接请求。socket 需要指定地址并监听连接。返回值是 (conn, address), 其中 conn 是用来接收和发送数据的套接字,address 是绑定到另一端的套接字

参数:
conn
- 新的套接字对象,可以用来收发消息address
- 连接到服务器的客户端地址
socket.sendto(bytes, address)¶
描述: 发送数据,目标由 address 决定,用于 UDP 通信,返回发送的数据大小

参数:
bytes
- bytes 类型数据address
- 目标地址和端口号的元组
socket.setsockopt(level, optname, value)¶
描述: 根据选项值设置 socket
参数:
level
- 套接字选项级别optname
- socket 选项value
- 可以是一个整数,也可以是一个表示缓冲区的bytes类对象
socket.readinto(buf[, nbytes])¶
描述: 将字节读取入缓冲区。若指定 nbytes ,则最多读取该数量的字节。否则,最多读取 len(buf) 数量的字节。 正如 read() ,该方法遵循“no short reads”方法 返回值: 读取并存入缓冲区的字节数量
socket.readline()¶
描述: 接收一行数据,遇换行符结束,并返回接收数据的对象
socket.write(buf)¶
描述: 向字节缓冲区写入socket,并返回写入数据的大小
urequests.get(url, data=None, json=None, headers={}, params=None)¶
描述: urequests 模块的方法,发送 GET 请求,返回 Response 对象

参数:
url
- Request 对象的 URLdata
- 要附加到请求的正文。如果提供字典或元组列表,则将进行表单编码json
- json 用于附加到请求的主体headers
- 要发送的标头字典params
- 附加到 URL 的 URL 参数。如果提供字典或元组列表,则将进行表单编码
串口¶
UART(双工串行通信总线) 实现标准 UART / USART 双工串行通信协议。在物理层面,它由2根线组成:RX 和 TX。 通信单元是一个字符(不要与字符串混淆),可以是8bit或9bit宽
class machine.UART(id, baudrate, bits, parity, stop, tx, rx, rts, cts, timeout)¶
描述: 构建对象
参数:
id
- 串口号:1、2baudrate
- 波特率bits
- 每个字符的位数parity
- 奇偶校验:0-偶数,1-奇数stop
- UART 读、写引脚tx,rx
- 停止位数量:1、2timeout
- 超时时间(单位:毫秒) < timeout ≤ 0x7FFF FFFF (十进制:0 < timeout ≤ 2147483647)

注意
UART(id=0)
用于 REPL
; 所有引脚均可以作为串口的输入 RX,除 P2
、P3
、P4
、P10
只能作为输入,其余所有的引脚理论上都可以作为输出 TX; GPIO 1
、GPIO 3
用于掌控板的 USB 串口,在初始化 UART 定义 tx ,rx 引脚一般不使用,除非你要用到掌控板的 USB 接口作为串口输出
UART.init(baudrate, bits, parity, stop, tx, rx, rts, cts, timeout)¶
描述: 使用给定参数初始化UART总线
UART.deinit()
描述: 关闭 UART 总线

UART.readinto(buf[, nbytes])¶
描述: 将字节读入 buf 。如果 nbytes 指定,则最多读取多个字节。否则,最多读取 len(buf) 字节数
返回值: 读取和存储到超时 buf 或 None 超时的字节数
bluebit 模块¶
掌控板搭载 bluebit 套件的相关图形化指令
SHT20.humidity()¶
描述: 获取湿度
Matrix.show()¶
描述: 显示生效
LCD1602.RIGHT_TO_LEFT¶
描述: 文本方向常量-从右到左
LCD1602.Init()¶
描述: 初始化函数
LCD1602.move_right()¶
描述: 右滚动显示
LCD1602.text_direction¶
描述: 文本方向
MP3.play()¶
描述: 播放,用于暂停后的重新播放
MP3.playNext()¶
描述: 播下一首
MP3.playPrev()¶
描述: 播上一首
MP3.stop()¶
描述: 停止播放
MP3.volumeDec()¶
描述: 减小音量
MP3.resetDevice()¶
描述: 复位MP3
OLEDBit.font_5x7¶
描述: 字体常量-5*7英文字体
OLEDBit.font_song16¶
描述: 字体常量-16*16宋体
OLEDBit.font_song24¶
描述: 字体常量-24*24宋体
OLEDBit.font_consol32¶
描述: 字体常量-32*32宋体
OLEDBit.Print(str, x, y, font)¶
描述: 显示中英文字符串,支持字体 ‘0’ =Font5x7, ‘1’ = 宋体16x16, ‘2’ = 宋体24x24, ‘3’ = Consolas32x32

参数:
str (str)
- 中英文字符串x y (int)
- 显示坐标font
- 字体类型, font_5x7 , font_song24 , font_consol32
OLEDBit.clear(x0=0, y0=0, x1=127, y1=63)¶
描述: 清除,默认全屏清除,也可以局部清除

参数:
x0 y0 (int)
- 抹去区域左上坐标x1 y1 (int)
- 抹去区域右下坐标
OLEDBit.show()¶
描述: 显示生效,当使用 framebuf 类方法后使用 show() 刷新屏幕
OLEDBit.Bitmap(x, y, bitmap, w, h, c)¶
描述: 显示图案

参数:
x y (int)
- 起点坐标bitmap
- 图案1bit数据w,h
- 图案宽高c
- 颜色,1 or 0
parrot.MOTOR_1¶
描述: M1电机编号,0x01
parrot.MOTOR_2¶
描述: M2电机编号,0x02
parrot.set_speed(motor_no, speed)¶
描述: 设置电机速度
参数:
motor_no (int)
- 控制电机编号,可以使用 MOTOR_1, MOTOR_2, 或者直接写入电机编号speed (int)
- 电机速度,范围-100~100,负值代表反转

parrot.get_speed(motor_no)¶
描述: 返回电机速度

参数:
motor_no (int)
- 控制电机编号,可以使用 MOTOR_1, MOTOR_2, 或者直接写入电机编号
parrot.led_on(no, brightness=50)¶
描述: 打开灯。电机接口,除了可以驱动电机,还能做灯的控制

参数:
no (int)
- 控制电机编号,可以使用 MOTOR_1, MOTOR_2, 或者直接写入电机编号brightness (int)
- 设置亮度,范围0~100
Yeelight 智能灯¶
yeelight.discover_bulbs(timeout=2)
描述: 发现所有局域网内的Yeelight灯泡
返回值: 字典列表,包含网络中每个灯泡的IP,端口和功能
参数:
timeout (int)
- 等待回复需要多少秒。发现将总是要花这么长的时间, 因为它不知道当所有的灯泡都响应完毕时
class yeelight.Bulb(ip, port=55443, effect=’smooth’, duration=300, auto_on=False)
描述: YeeLight的控制类
参数:
ip (str)
- 灯泡的IPport (int)
- 连接灯泡的端口号,默认55443effect (str)
- 效果类型.”smooth” or “sudden”duration (int)
- 效果的持续时间,以毫秒为单位.最小值为30.突然效果会忽略此值auto_on (bool)
- 是否 ensure_on() 在每次操作之前调用以自动打开灯泡,如果它已关闭。这会在每条消息之前更新灯泡的属性, 每个命令会花费一个额外的消息。 如果您担心速率限制,请将其关闭并自行检查。get_properties() 或运行 ensure_on()
Bulb.turn_on()
描述: 打开灯泡
Bulb.turn_off()
描述: 关闭灯泡
Bulb.toggle()
描述: 反转灯泡状态
Bulb.set_rgb(red, green, blue)
描述: 设置灯泡的 RGB 值
参数:
red (int)
- 红色范围 (0-255)green (int)
- 绿色范围 (0-255)blue (int)
- 蓝色范围 (0-255)
Bulb.set_hsv(hue, saturation)
描述: 设置灯泡的 HSV 值
参数:
hue (int)
- 色调(0-359)saturation (int)
- 饱和度(0-100)
Bulb.set_color_temp(degrees)
描述: 设置灯泡色温
参数:
degrees (int)
- 色温范围(1700-6500)
Bulb.set_brightness(brightness)
描述: YeeLight的控制类
参数:
brightness (int)
- 亮度范围 (1-100)
MQTT¶
MQTT是一种基于发布 - 订阅的“轻量级”消息传递协议,用于在TCP / IP协议之上使用。 提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),可以简单概括为物联网打造
class MQTTClient(client_id, server, port=0, user=None, password=None, keepalive=0, ssl=False, ssl_params={})¶
描述: 构建对象
参数:
client_id
- mqtt 客户端的唯一的 idserver
- mqtt 代理服务器的 IP 地址port
- mqtt 的服务器访问的端口号,一般为1883,不同平台端口会有所不一样user
- 用于获取 mqtt 鉴权的用户名password
- 用于获取 mqtt鉴权的 passwordkeepalive
- 连接保存时间,当在 keepalive 间隔时间内未有订阅或发布等包,将会自动断开连接
MQTTClient.set_callback(f)¶
描述: 为收到的订阅消息设置回调
参数:
f
- f(topic, msg) 为回调函数,第1参数为 topic 接收到的主题,第2参数为 msg 为该主题消息
MQTTClient.set_last_will(topic, msg, retain=False, qos=0)¶
描述: 设置 MQTT “last will” 消息。应该在 connect() 之前调用
MQTTClient.connect(clean_session=True)¶
描述: 连接到服务器。如果此连接使用存储在服务器上的持久会话,则返回 True(如果使用 clean_session = True 参数,则返回 False(默认值))
MQTTClient.disconnect()¶
描述: 断开与服务器的连接,释放资源
MQTTClient.ping()¶
描述: Ping 服务器(响应由 wait_msg()自动处理)
MQTTClient.publish(topic, msg, retain=False, qos=0)¶
描述: 发布消息
MQTTClient.subscribe(topic, qos=0)¶
描述: 订阅主题
MQTTClient.wait_msg()¶
描述: 等待服务器消息。订阅消息将通过 set_callback()传递给回调集,任何其他消息都将在内部处理
自定义图形块¶
项目¶
用于展示使用mpythonX图形化完成的项目