Ovobot Bit MicroPython指南¶
开始编程前,首先需要导入必要的库:
from microbit import *
from ovobot import *
以下是使用Scratch给Ovobot Bit机器人编程的快速参考,如果你是第一次给机器人编程请先阅读接下来的部分:
运动¶
-
move
(dir, speed)¶ 通过设定机器人运动方向、运动速度和持续时间来让机器人运动,速度范围为0~255。
- 参数
dir (int) – 可以为0或者1,0:机器人向前运动,1:机器人向后运动。
speed (int) – 设置机器人运动的速度,数值范围为0~255。
例子:
from ovobot import *
from microbit import *
moveAtSpeed(0,100)
sleep(1* 1000)
stopMove()
解析:当绿旗被点击时,Bit机器人以100的速度匀速前进(0代表前进,1代表后退),等待1秒后停止运动。
-
move
(dir, speed, s) 通过设定机器人运动方向、运动速度和持续时间来让机器人运动,速度范围为0~255。
- 参数
dir (int) – 可以为0或者1,0:机器人向前运动,1:机器人向后运动。
speed (int) – 设置机器人运动的速度,数值范围为0~255。
s (int) – 控制机器人持续运行指定的时间(秒)。
例子:
from ovobot import *
move(0,100,1)
解析:当绿旗被点击时,Bit机器人以100的速度匀速前进(0代表前进,1代表后退),持续时间为1秒。
-
rotateAtSpeed
(dir, speed)¶ 设置机器人向左或者向右的旋转速度,速度范围为0~255。
- 参数
dir (int) – 可以为0或者1,0:机器人向左旋转,1:机器人向右旋转。
speed (int) – 设置机器人旋转的速度,数值范围为0~255。
例子:
from ovobot import *
from microbit import *
rotateAtSpeed(0,100)
sleep(1* 1000)
stopMove()
解析:当绿旗被点击时,Bit机器人以100的速度向左旋转(0代表向左,1代表向右),等待1秒后停止运动。
-
rotate
(dir, speed, s)¶ 设置机器人向左或者向右的旋转速度以及持续时间,速度范围为0~255。
- 参数
dir (int) – 可以为0或者1,0:机器人向左旋转,1:机器人向右旋转。
speed (int) – 设置机器人旋转的速度,数值范围为0~255。
s (int) – 控制机器人持续运行指定的时间(秒)。
例子:
from ovobot import *
rotate(0,100,1)
解析:当绿旗被点击时,Bit机器人以100的速度向左旋转(0代表向左,1代表向右),持续时间为1秒。
-
stopMove
()¶ 设置左右两个电机的运动速度为0。
例子:
from ovobot import *
from microbit import *
rotateAtSpeed(0,100)
sleep(1* 1000)
stopMove()
解析:当绿旗被点击时,Bit机器人以100的速度向左旋转,等待1秒后停止运动。
-
rawMotorWithPwm
(speed, speed)¶ 分别驱动Bit的左右两个轮子的转速。
- 参数
speed (int) – 设置驱动Bit的左轮的转速,数值范围为-255~255。
speed – 设置驱动Bit的右轮的转速,数值范围为-255~255。
例子:
from ovobot import *
from microbit import *
rawMotorWithPwm(-255,100)
sleep(1* 1000)
rawMotorWithPwm(100,-255)
stopMove()
解析:当绿旗被点击时,Bit机器人的驱动电机以左轮-255、右轮100的速度行走, 等待1秒后,再以左轮100右轮-255的速度前进后停止运动。 (即先左拐再右拐)
外观¶
-
setledGroupColor
(color, color)¶ 可以分别设置左右两侧LED灯的颜色。
- 参数
color (int) – 设置左侧LED灯的颜色,可以为0-8,0:红色,1:橙色,2:黄色,3:绿色,4:蓝色,5:靛蓝色,6:紫色,7:白色,8:黑色。
color – 设置右侧LED灯的颜色,可以为0-8,0:红色,1:橙色,2:黄色,3:绿色,4:蓝色,5:靛蓝色,6:紫色,7:白色,8:黑色。
例子:
from ovobot import *
from microbit import *
while True:
setledGroupColor(1,4)
sleep(1* 1000)
setledGroupColor(3,6)
sleep(1* 1000)
解析:当绿旗被点击时,Bit机器人的彩色灯左侧为橙色,右侧为蓝色,等待1秒后,彩色灯左侧变为绿色,右侧变为紫色, 再等待1秒后变回原来的颜色, 如此重复执行这一指令。
-
display.
scroll
(value,delay = 150,*,wait = True,loop = False,monospace = False)¶
value在显示屏上水平滚动,如果value为整数或浮点数,则首先使用将其转换为字符串str()。 该delay参数控制文本滚动的速度。 如果wait为True,则此功能将阻塞直到动画结束,否则动画将在后台发生。 如果loop为True,则动画将永远重复。 如果monospace为True,则字符将全部占用5个像素列的宽度,否则在滚动时每个字符之间将恰好有1个空白像素列。 请注意wait,loop和monospace参数必须使用其关键字指定。
-
display.
show
(value,delay = 400,*,wait = True,loop = False,clear = False)¶
如果value为字符串,浮点数或整数,则按顺序显示字母/数字。 否则,如果value是可重复的图像序列,请依次显示这些图像。每个字母,数字或图像delay之间以毫秒为单位显示。 如果wait为True,则此功能将阻塞直到动画结束,否则动画将在后台发生。 如果loop为True,则动画将永远重复。 如果clear为True,则在迭代完成后将清除显示。 请注意wait,loop和clear参数必须使用其关键字指定。 详情请参考:https://microbit-micropython.readthedocs.io/en/latest/tutorials/images.html
例子:
from microbit import *
display.show(Image("09090:90909:90009:09090:00900"))
sleep(0.5* 1000)
display.show(Image("99999:00009:99999:90000:99999"))
sleep(0.5* 1000)
解析:当绿旗被点击时,Bit机器人的LED灯显示“❤”的图案,等待0.5秒后,变为显示“2”的图案,同样显示0.5秒。
-
display.
clear
()¶ 将所有LED的亮度设置为0(熄灭)。
例子:
from microbit import *
display.show(Image("09090:90909:90009:09090:00900"))
sleep(2* 1000)
display.clear()
解析:当绿旗被点击时,Bit机器人的LED灯显示“❤”的图案,等待2秒后,熄灭屏幕。
-
display.
set_pixel
(x, y, action)¶ 点亮Bit机器人LED点阵屏上某个坐标的LED,x、y的数值范围为0~4,零点在点阵屏的左上角,水平向右为x轴,竖直向下为y轴。
- 参数
x (int) – 对应x轴的坐标,数值范围为0~4。
y (int) – 对应y轴的坐标,数值范围为0~4。
action (int) – 0:熄灭,9:点亮。
-
display.
set_pixel
(x, y, value) 将列x和行的LED亮度设置为value,必须是0到9之间的整数。
- 参数
x (int) – 设置对应x轴的坐标,数值范围为0~4。
y (int) – 设置对应y轴的坐标,数值范围为0~4。
value (int) – 0:熄灭,9:点亮。
-
display.
get_pixel
(x, y)¶ 以0(熄灭)和9(点亮)之间的整数返回列x和行的LED亮度y。
- 参数
x (int) – 设置对应x轴的坐标,数值范围为0~4。
y (int) – 设置对应y轴的坐标,数值范围为0~4。
声音¶
-
music.
pitch
(频率,持续时间= -1,pin = microbit.pin0,wait = True)¶
以指定的毫秒数以给定的整数频率播放音高。 例如,如果频率设置为440,长度设置为1000,则我们将听到标准音乐会A的声音达一秒钟。 请注意,您一次只能在一根针上弹一个音高。 如果wait设置为True,则此功能正在阻止。 如果duration为负,则连续播放音调,直到阻塞呼叫被中断,或者在后台呼叫的情况下,设置或调用了新的频率stop。 详情请参考:https://microbit-micropython.readthedocs.io/en/latest/music.html
例子:
from microbit import *
import music
music.pitch(262 , 500 , pin=pin0 , wait=True)
music.pitch(330 , 1000 , pin=pin0 , wait=True)
解析:当绿旗被点击时,播放C音符持续一个节拍,然后播放E音符持续一个节拍。
-
music.
stop
(pin = microbit.pin0)¶ 在给定的引脚上停止所有音乐播放,例如:music.stop(pin1)。 如果没有给出引脚,例如:music.stop()假设为pin0。
- 参数
note (int) – 默认选择播放的音符为0,即代表暂停播放。
beat (int) – 音符播放的节拍数,节拍数为500的倍数,倍数范围为1/16~4。
引脚¶
-
pin1.
is_touched
()¶ 如果引脚被用手指触摸,返回True,否则返回False。 该测试是通过测量引脚与地面之间有多少电阻来完成的。低电阻可提供的读数True。 为了使用手指获得可靠的读数,您可能需要用身体的另一部分(例如另一只手)触摸接地插针。
-
pin1.
read_analog
()¶ 读取施加到该引脚的电压,并将其返回为0(表示0V)和1023(表示3.3V)之间的整数。
-
pin1.
write_analog
(n)¶ 在引脚上输出PWM信号,占空比与所提供的成正比。 value可以是整数或0(0%占空比)之间的浮点数和1023(100%占空比)。
-
pin1.
read_digital
()¶ 如果引脚为高电平,则返回1;如果引脚为低电平,则返回0。
-
pin1.
write_digital
(n)¶ 如果value为1,则将引脚设置为高电平;如果为0,则将其设置为低电平。
无线通讯¶
-
radio.
on
()¶ 打开无线通讯,由于无线电会消耗功率并占用您可能需要的内存,因此需要显式调用此方法。
-
radio.
off
()¶ 关闭无线通讯,从而节省电量和内存。
-
radio.
reset
()¶ 复位无线通讯,将设置重置为其默认值
-
radio.
send
('str')¶ 发送无线消息。
- 参数
str (int) – 字符串,可以是文字、字母、数字。
-
radio.
send_bytes
(list_tobytes([1, 2]))¶ 发送无线消息列表。
-
list_tobytes
([radio.receive()¶ 接收无线消息。
-
list_tobytes
(bytes_tolist(radio.receive_bytes())) 接收无线消息列表。
-
radio.
config
(channel=1)¶ 设置无线通讯频道。
事件¶
-
from microbit import *
当机器人处于离线模式时,启动Ovobot Bit,执行此模块下方的程序。
例子:
from microbit import *
import music
music.pitch(262 , 500 , pin=pin0 , wait=True)
解析:当机器人处于离线模式时,启动Ovobot Bit,播放C音符持续一个节拍。
-
on_button_action_pressed():
按钮指的是micro:bit的两个可编程按键,分为A和B,当对应Bit的按钮被按下时,执行此模块下方的程序。
- 参数
action (int) – 设置对应按钮,a代表A键,b代表B键。
例子:
from microbit import *
from ovobot import *
def on_button_a_pressed():
move(0,100,1)
while True:
if button_a.is_pressed():
on_button_a_pressed()
解析:当按下micro:bit的可编程按键A键时,Bit机器人以100的速度前进,持续时间为1秒。
-
on_irbutton_button_pressed():
当红外遥控器对应的按钮被按下时,则会执行程序块下方的程序。
- 参数
button (int) – 设置对应按钮,1-21代表不同的按钮。
例子:
from ovobot import *
def on_irbutton_m_pressed():
move(1,255,2)
while True:
if irkeyIsPressed(1):
on_irbutton_m_pressed()
解析:当按下红外遥控器的M键时,Bit机器人以255的速度后退,持续时间为2秒。
-
fon_loudness_greater_than_vol():
当响度大于设置数值时,则会执行程序块下方的程序。
- 参数
vol (int) – 可设置响度大小。
侦测¶
-
button_action.is_pressed():
选择机器人按键触发事件的回调函数。
- 参数
action (int) – 设置对应按钮,a代表A键,b代表B键。
-
irkeyIsPressed(button):
如果M按键按下的话,返回值就是True, 否则返回值是false。
- 参数
button (int) – 设置对应按钮,1-21代表不同的按钮。
-
accelerometer.is_gesture(name):
判断机器人的姿态,执行程序块下方的程序。
- 参数
action (int) – 设置机器人姿态的对应按钮,包括被摇晃、向上倾斜、正面朝上、自由下落等。
-
accelerometer.
get_values
()¶ 根据x、y、z方向,以正整数或负整数获取轴上的加速度测量值,测量单位为毫克。 默认情况下,加速度计的配置范围为+/- 2g,因此此方法将在+/- 2000mg范围内返回。
- 参数
axis (int) – 可选择返回x轴、y轴或z轴的加速度值。
-
loudness
()¶ 我们用响度来表示声音传感器的反馈值,响度的范围大小是0-255。
-
readBatteryLevel
()¶ 电池电量模块可以实时显示Bit的百分比电量。
-
caliGyro
()¶ 校正Bit的俯仰、横滚和侧偏的角速度。
-
(getGyrox()
反馈Bit的俯仰、横滚和侧偏的角速度。
-
getYaw
()¶ 反馈Bit侧偏的角度。
-
compass.
heading
()¶ 根据上述读数计算得出的罗盘方向为从0到360范围内的整数,代表以度为单位的角度,顺时针方向,北为0。
-
compass.
get_field_strength
()¶ 反馈当前环境中总磁场强度,单位是纳特斯拉。用磁铁靠近电子罗盘,看看磁场强度有什么变化。
-
compass.
calibrate
()¶ 开始校准过程:一条指示性消息将滚动给用户,此后他们将需要旋转设备以便在LED显示屏上画一个圆圈。
-
temperature
()¶ 反馈温度传感器检测到的温度值。
-
display.
read_light_level
()¶ 反馈光敏传感器感应环境光线的强度。可以尝试修改亮度级别,看看不同级别对应什么样的亮度。
-
running_time
()¶ 反馈Bit机器人的运行时间。
-
readDistance
(No)¶ 反馈Bit机器人超声波传感器检测到的距离。
- 参数
No (int) – 可选择超声波传感器模块,0代表模块1、1代表模块2、2代表模块3、3代表模块4。
-
anyWasNearBySonic(No):
反馈Bit机器人超声波传感器有没有检测到障碍物。
- 参数
No (int) – 可选择超声波传感器模块,0代表模块1、1代表模块2、2代表模块3、3代表模块4。
-
readLineSensorData
(No, dir)¶ 可以分别反馈巡线传感器左右两个光电对管检测的灰度值,黑色物体的返回值接近0,白色物体返回值接近255。
- 参数
No (int) – 可选择巡线传感器模块,0代表模块1、1代表模块2、2代表模块3、3代表模块4。
dir (int) – 0代表左侧,1代表右侧。
-
readLineState(No,dir,color):
分别用于判断巡线传感器左侧或者右侧是否检测到黑色或白色,条件成立时返回为真。
- 参数
No (int) – 可选择巡线传感器模块,0代表模块1、1代表模块2、2代表模块3、3代表模块4。
dir (int) – 0代表左侧,1代表右侧,2代表全部。
color (int) – 0代表黑色,1代表白色。