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.imageImage的实例,你可以调用许多这样的实例。

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)