mpython --- 掌控板板载相关功能函数¶
mpython 是基于掌控板封装的专有模块,内含掌控板板载资源相关功能函数。 详细代码实现可查阅 mpython.py源码 。
延时¶
-
mpython.sleep(s)¶
秒级延时
s-单位秒。
-
mpython.sleep_ms(ms)¶
毫秒级延时
ms-单位毫秒。
-
mpython.sleep_us(us)¶
级延时
us-单位微秒。
映射¶
-
mpython.numberMap(inputNum, bMin, bMax, cMin, cMax)¶
映射函数,参数:
inputNum为需要映射的变量bMin为需要映射的最小值bMax为需要映射的最大值cMin为映射的最小值cMax为映射的最大值
板载传感器¶
加速度计¶
通过accelerometer对象,您可以获取3轴加速度计值,单位g。 加速度范围±2g/±4g/±8g/±16g,默认为±2g。
-
accelerometer.get_x()¶
获取x轴上的加速度测量值,正整数或负整数,具体取决于方向。
-
accelerometer.get_y()¶
获取y轴上的加速度测量值,正整数或负整数,具体取决于方向。
-
accelerometer.get_z()¶
获取z轴上的加速度测量值,正整数或负整数,具体取决于方向。
-
accelerometer.set_range(range)¶
设置加速度范围,在默认,不修改为,范围在±2g。
加速度范围值为以下常量:
常量 值 定义 RANGE_2G 0 范围±2g RANGE_4G 1 范围±4g RANGE_8G 2 范围±8g RANGE_16G 3 范围±16g
-
accelerometer.set_resolustion(resolution)¶
设置加速度分辨率,默认,不修改为10bit分辨率。
分辨率值为以下常量:
常量 值 定义 RES_14_BIT 0 14 bit 分辨率 RES_12_BIT 1 12 bit 分辨率 RES_10_BIT 2 10 bit 分辨率
-
accelerometer.set_offset(x=None, y=None, z=None)¶
该函数用于校准加速度计的3个轴(x,y,z)的加速值偏差。一般情况下无需校准,只有当遇到加速度偏差较大时修正。
注意,校准数据断电后不会保存。x , y , z 为调整偏差值,可修正范围±1g。
bme280¶
BME280是一款集成温度、湿度、气压,三位一体的环境传感器。具有高精度,多功能,小尺寸等特点。
- 温度检测范围:-40℃~+85℃,分辨率0.1℃,误差±0.5℃
- 湿度检测范围:0~100%RH,分辨率0.1%RH,误差±2%RH
- 压力检测范围:300~1100hPa
- 湿度测量响应时间:1s
注意
掌控板预留BME280芯片位置未贴片,默认配置的掌控板是不带BME280环境传感器,需留意!
-
bme280.temperature()¶
返回温度值,单位摄氏度。
-
bme280.pressure()¶
返回大气压值,单位Pa。
-
bme280.humidity()¶
返回环境湿度,单位%。
button_[a,b]对象¶
掌控板上的a,b按键。button_a/button_b 是 machine.Pin 衍生类,继承Pin的方法。更详细的使用方法请查阅 machine.Pin 。
-
button_[a,b].value()
获取button_[a,b]按键引脚状态。引脚IO以上,当按键为未按下状态时value==1,按下状态时value==0。
>>> button_a.value()
>>> 1
>>> button_a.value()
>>> 0
-
button_[a,b].irq(handler=None, trigger=(Pin.IRQ_FALLING | Pin.IRQ_RISING), priority=1, wake=None)
配置在引脚的触发源处于活动状态时调用的中断处理程序。
参数:
handler是一个可选的函数,在中断触发时调用。
trigger配置可以触发中断的事件。可能的值是:
Pin.IRQ_FALLING下降沿中断Pin.IRQ_RISING上升沿中断Pin.IRQ_LOW_LEVEL低电平中断Pin.IRQ_HIGH_LEVEL高电平中断这些值可以一起进行
OR运算以触发多个事件。
priority设置中断的优先级。它可以采用的值是特定于端口的,但是更高的值总是代表更高的优先级。
wake选择此中断可唤醒系统的电源模式。它可以是machine.IDLE,machine.SLEEP或machine.DEEPSLEEP。这些值也可以进行
OR运算,使引脚在多种功耗模式下产生中断。
此方法返回一个回调对象。
>>> from mpython import *
>>> button_a.irq(trigger=Pin.IRQ_FALLING, handler=lambda p:print("button-a press!"))
touchPad_[ ]对象¶
掌控板上共有6个触摸引脚分别touchPad_P/Y/T/H/O/N。
-
touchPad_[P,Y,T,H,O,N].read()
返回触摸值
>>> touchPad_P.read()
>>> 523
rgb对象¶
用于控制掌控板的3颗RGB ws2812灯珠。rgb对象为neopixel的衍生类,继承neopixel的方法。更多的使用方法请查阅 neopixel 。
-
rgb.write()¶
把数据写入RGB灯珠中。
提示
通过给rgb[n]列表赋值来写入RGB颜色值。如,rgb[0]=(50,0,0)
from mpython import *
rgb[0] = (255, 0, 0) # 设置为红色,全亮度
rgb[1] = (0, 128, 0) # 设定为绿色,半亮度
rgb[2] = (0, 0, 64) # 设置为蓝色,四分之一亮度
rgb.write()
-
rgb.fill(rgb_buf)¶
填充所有LED像素。
-
rgb.brightness(brightness)¶
亮度调节,范围0~1.0
oled对象¶
oled对象为framebuf的衍生类,继承framebuf的方法。更多的使用方法请查阅 framebuf 。
-
oled.poweron()¶
开启显示屏电源。
-
oled.poweroff()¶
关闭显示器电源。
-
oled.contrast(brightness)¶
设置显示屏亮度。
brightness亮度,范围0~255
-
oled.invert(n)¶
翻转像素点。当n=1时,未填充像素点点亮,填充像素点灭。当n=0时,则反。默认启动是填充像素点点亮。
-
oled.DispChar(s, x, y, mode=TextMode.normal)¶
oled屏显示文本。
s-需要显示的文本。
x、y-文本的左上角作为起点坐标。
mode- 设置文本模式,默认为TextMode.normal
TextMode.normal- 等于1 。普通模式,文本显示白色,背景为黑色。TextMode.rev- 等于2 。反转模式,文本显示黑色,背景为白色。TextMode.trans- 等于3 。透明模式,透明文本意味着文本被写在显示中已经可见的内容之上。不同之处在于,以前屏幕上的内容仍然可以看到,而对于normal,背景将被当前选择的背景颜色所替代。TextMode.xor- 等于4 。XOR模式,如果背景是黑色的,效果与默认模式(normal模式)相同。如果背景为白色,则反转文本。
-
oled.show()¶
将frame缓存发送至oled显示。
from mpython import *
oled.DispChar('你好世界', 38, 0)
oled.DispChar('hello,world', 32, 16)
oled.DispChar('안녕하세요', 35, 32)
oled.DispChar('こんにちは世界', 24, 48)
oled.show()
-
oled.fill(c)¶ 用指定的颜色填充整个帧缓存。
c为1时,像素点亮;c为0时,像素点灭。
-
oled.circle(x, y, radius, c)¶
绘制圆
x、y-左上角作为起点坐标。radius-圆半径大小c-为1时,像素点亮;c为0时,像素点灭。
-
oled.fill_circle(x, y, radius, c)¶
绘制实心圆
x、y-左上角作为起点坐标。radius-圆半径大小c-为1时,像素点亮;c为0时,像素点灭。
-
oled.triangle(x0, y0, x1, y1, x2, y2, c)¶
绘制三角形
x0、y0-三角形上顶点坐标 。x1、y1-三角形左顶点坐标 。x2、y2-三角形左顶点坐标 。c-为1时,像素点亮;c为0时,像素点灭。
-
oled.fill_triangle(x0, y0, x1, y1, x2, y2, c)¶
绘制实心三角形
x0、y0-三角形上顶点坐标 。x1、y1-三角形左顶点坐标 。x2、y2-三角形左顶点坐标 。c-为1时,像素点亮;c为0时,像素点灭。
-
oled.bitmap(x, y, bitmap, w, h, c)¶
绘制bitmap图案
x、y-左上角作为起点坐标bitmap-图案bitmap 的btyearray字节数组w-图案宽度h-图案高度c-为1时,像素点亮;
-
oled.RoundRect(x, y, w, h, r, c)¶
绘制弧角矩形
x、y-左上角作为起点坐标w-图案宽度h-图案高度r-圆弧角半径c-为1时,像素点亮;c为0时,像素点灭。
i2c对象¶
mPython掌控板已实例 I2C 类,P19、P20 为I2C的SCL、SDA引脚。I2C设备可连接掌控板I2C总线进行操作。
详细有关I2C的读写操作,请查看 machine.I2C 模块或 I2C基础教程 章节。
MPythonPin类¶
-
class
mpython.MPythonPin(pin, mode=PinMode.IN, pull=None)¶
构建Pin对象
pin掌控板定义引脚号,具体定义看查看 掌控板引脚定义 。mode引脚模式。未设定时,默认 mode = PinMode.INPinMode.IN等于1,数字输入模式PinMode.OUT等于2,数字输出模式PinMode.PWM等于3,模拟输出模式PinMode.ANALOG等于4,模拟输入模式PinMode.OUT_DRAIN等于5,开漏输出模式
pull指定引脚是否连接了电阻,可以是以下之一:None- 无上拉或下拉电阻Pin.PULL_UP- 上拉电阻使能Pin.PULL_DOWN- 下拉电阻使能
示例:
>>> from mpython import MPythonPin #导入MPython模块
>>> P0=MPythonPin(0,PinMode.IN) #构建引脚0对象,设置数字输入模式
-
MPythonPin.read_digital()¶
返回该IO引脚电平值。1代表高电平,0代表低电平
-
MPythonPin.write_digital(value)¶
IO引脚输出电平控制。value =1时输出高电平, value =0时输出低电平。
-
MPythonPin.read_analog()¶
读取ADC并返回读取结果,返回的值将在0到4095之间。
-
MPythonPin.write_analog(duty, freq=1000):
设置输出PWM信号的占空比。
duty0 ≤ duty ≤ 1023freqPWM波频率,0 < freq ≤ 0x0001312D(十进制:0 < freq ≤ 78125)
-
MPythonPin.irq(handler=None, trigger=Pin.IRQ_RISING):
如果引脚模式配置为 IN ,可配置该引脚的触发源处于活动状态时调用的中断处理程序。
参数:
handler是一个可选的函数,在中断触发时调用。
trigger配置可以触发中断的事件。可能的值是:
Pin.IRQ_FALLING下降沿中断Pin.IRQ_RISING上升沿中断Pin.IRQ_LOW_LEVEL低电平中断Pin.IRQ_HIGH_LEVEL高电平中断这些值可以一起进行
OR运算以触发多个事件。
wifi类¶
提供便捷的wifi连接网络方式或无线AP功能。注意,开启WiFi功能功耗会增大,如不使用情况下,可关闭WiFi可降低功耗。
-
class
mpython.wifi¶
构建wifi对象并会创建 sta 对象和 ap 对象。可参见 network 模块了解更多使用方法。
- sta用于客户端连接路由器来连接网络。
- ap用于掌控板作为无线AP接入方式。
-
wifi.connectWiFi(ssid, password, timeout=10)¶
连接wifi网络
ssid-WiFi网络名称password-WiFi密码tiemout-链接超时,默认10秒
-
wifi.disconnectWiFi()¶
断开wifi网络连接
-
wifi.enable_APWiFi(essid, password, channel=10)¶
开启wifi的无线AP模式
essid- 创建WiFi网络名称password- 密码channel-设置wifi使用信道,channel 1~13
-
wifi.disable_APWiFi()¶
关闭无线AP