Microbit Micropython API
microbit 的模块
所有直接与硬件相关的microbit模块,为方便使用,可将其全部导包进来:
from microbit import *
接下来的步骤都默认你执行了这一步(导入所有的包:from microbit import *
);
许多函数都可直接使用:
#参数ms,休眠指定的时间,单位毫秒
sleep(ms)
#返回与最后一次开启的时间差,单位毫秒
running_time()
#使microbit开发板进入应急模式
#通常由内存不足引起,并且会显示一个悲伤的图片
#会生成任意的错误代码(error_code)
panic(error_code)
#复位microbit开发板
reset()
其余的功能模块会在下面接着叙述。
注意:使用毫秒为标准单位,只接受整数参数。
Buttons(按钮)
microbit开发板有两个button,分别为
button_a
button_b
两个button都是对象,有以下方法:
#当该button正被按下时,返回True;否则返回False
button.is_pressed()
#开发板运行以来,button曾经被按下,则返回True;否则返回False
button.was_pressed()
#返回button被按下的次数,然后重新重0开始计数
button.get_presses()
The LED display(LED显示)
LED通过display对象来显示:
# 根据像素(x,y)来获取亮度,亮度值范围为0(led关闭)到 9(led亮度最大)
display.get_pixel(x,y)
# 设置像素(x,y)的亮度值为val(0-9)
display.set_pixel(x,y,val)
# 清空显示
display.clear()
# 显示image图像
display.show(image,delay=0,wait=True,loop=False,clear=False)
# 每隔固定时间(毫秒),显示不同的图像和字母
display.show(iterable,delay=400,wait=True,loop=False,clear=False)
# 滚动显示字符串
display.scroll(string,delay=400)
Pins(引脚)
提供数字和模拟的输入,输出功能。许多pins被连接到内部I/O,比如led矩阵和按钮。每个pin都可以在microbit的模块中找到。能相对轻松的使用它们:
- pin0
- pin1
- …
- pin15
- pin16
- pin19
- pin20
注意:pin17和pin18不允许使用pins在microBitPin中被实例化。
可使用的API:
# value可以设置为0,1,False,True
pin.write_digital(value)
# 返回1或者0
pin.read_digital()
# value可设置为0到1023之间的值
pin.write_analog(value)
# 返回0到1023之间的整数
pin.read_analog()
#设置pin的PWM频率,单位毫秒
pin.set_analog_period(int)
#设置pin的PWM频率,单位微秒
pin.set_analog_period_microseconds(int)
#返回布尔值
pin.is_touched()
Images(图像)
注意:你不需要总是自己自定义图像,你可以通过display.image
来使用内置图像。display.image
是Image
的实例,你可以调用许多这样的实例。
Images API:
#创建一个空的5*5图像
image=Image()
#根据字符串创建图像。字符串中以冒号区分,每个冒号隔开的内容表示一行led灯的显示,数字0下标
#代表对应位置led关闭,9代表对应下标的led亮度最大
image=Image('90009:09090:00900:09090:90009:')
# 创建一个指定大小的图片
image=Image(width,height)
# 初始化一个特定宽度高度的图像,buffer是一个数组,长度为高度乘以宽度
image=Image(width,height,buffer)
# 返回图像的宽度(最大为5)
image.width()
# 返回图像高度(最大为5)
image.height()
# 设置像素的位置 (在 0 到 9之间).常数图像可能会失效
image.set_pixel(x,y,value)
# 获得像素的位置 (在 0 到 9之间)
image.get_pixel(x,y)
# 图片左移n位,返回一个新图像.
image.shift_left(n)
# 图片右移n位,返回一个新图像.
image.shift_right(n)
#图片上移n位,返回一个新图像.
image.shift_up(n)
#图片下移n位,返回一个新图像.
image.shift_down(n)
#得到一个紧凑的字符串表示的图像
repr(image)
#得到一个更可读的字符串表示的图像
str(image)
# 创建一个由两个图片叠加的图片
image+image
#返回一个新的图像由每个像素的亮度乘以n
image*n
# 内置图像.
Image.HEART
Image.HEART_SMALL
Image.HAPPY
Image.SMILE
Image.SAD
Image.CONFUSED
Image.ANGRY
Image.ASLEEP
Image.SURPRISED
Image.SILLY
Image.FABULOUS
Image.MEH
Image.YES
Image.NO
Image.CLOCK12# 时钟12点
Image.CLOCK11
...# 许多时钟图像 (Image.CLOCKn)
Image.CLOCK1#时钟1点
Image.ARROW_N
Image.ARROW_NW
Image.TRIANGLE
Image.TRIANGLE_LEFT
Image.CHESSBOARD
Image.DIAMOND
Image.DIAMOND_SMALL
Image.SQUARE
Image.SQUARE_SMALL
Image.RABBIT
Image.COW
Image.MUSIC_CROTCHET
Image.MUSIC_QUAVER
Image.MUSIC_QUAVERS
Image.PITCHFORK
Image.XMAS
Image.PACMAN
Image.TARGET
Image.TSHIRT
Image.ROLLERSKATE
Image.DUCK
Image.HOUSE
Image.TORTOISE
Image.BUTTERFLY
Image.STICKFIGURE
Image.GHOST
Image.SWORD
Image.GIRAFFE
Image.SKULL
Image.UMBRELLA
Image.SNAKE
Image.ALL_CLOCKS
Image.ALL_ARROWS
The accelerometer(加速计)
加速度访问的是accelerometer
对象:
# 读取设备X轴的值
accelerometer.get_x()
#读取设备Y轴的值
accelerometer.get_y()
#读取设备Z轴的值
accelerometer.get_z()
# 返回一个元组(包含设备的x,y,z三轴的值)
accelerometer.get_values()
# 返回当前执行的
gesture.accelerometer.current_gesture()
# 如果指定的gesture是当前运行的,返回True,否则返回False
accelerometer.is_gesture(name)
#如果指定的gesture是曾经运行,返回True,否则返回False
accelerometer.was_gesture(name)
# 返回历史状态,最新的列在最后
accelerometer.get_gestures()
内置的动作包含:up
,down
,left
,right
,faceup
,facedown
,freefall
,3g
,6g
,8g
,shake
The compass(指南针)
指南针访问的是compass对象:
# 校准指南针 (需要得到准确的读数).
compass.calibrate()
# 指向北方得到一个准确的读数
compass.heading()
# 返回一个数字表明磁场强度
compass.get_field_strength()
# 如果校准成功,返回True,否则返回False
compass.is_calibrated()
# 重置指南针的校准状态
compass.clear_calibration()
I2C bus(I2C总线)
microbit开发板有一个I2C,访问的是I2C对象:
# 从地址addr读取n个字节; repeat=True 表示停止位不会被发送
i2c.read(addr,n,repeat=False)
# 将buf的内容写到地址addr; repeat=True表示停止位不会被发送
i2c.write(addr,buf,repeat=False
UART(串口)
使用uart与开发板的串口I/O连接:
# 建立连接 (使用 pins 0 [TX] 和 1 [RX]) ,波特率设置为 9600.
uart.init()
# 如果有字符等待读取返回True,否则返回False
uart.any()
# 返回读取n长度的字符串
uart.read(n)
# 返回所有读到的字符串
uart.readall()
# 返回读取一行内容的字符串
uart.readline()
# 将读取的内容保存到buffer中
uart.readinto(buffer)
# 将buffer的内容写到已经连接的开发板中
uart.write(buffer)