2.Micro:bit手柄控制

您当前位置: 首页 > Superkit积木套件 > 4.Python课程

2.Microbit手柄控制.rar  点击下载

学习目标 

本次课程我们主要学习如何通过Python编程,实现microbit手柄控制龙骑士。

积木搭建

积木搭建步骤详见资料中【组装课程】--龙骑士】的安装图纸或者积木安装画册。

电机接线

积木电机接线插入Super:bit扩展板M1接口,黑色接线插入靠近电池的一侧。

如下图所示:

image.png

代码与解析

本次课程的程序请详见.py文件。

image.png 

首先从microbit导入本节课需要用到的库:superbit用于superbit扩展板neopixel用于控制RGB灯;radio用于micro:bit的无线通讯功能。

 image.png

np = neopixel.NeoPixel(pin12, 4)RGB灯初始化设置,一共有4RGB灯,连接在microbit主板的P12引脚上面(可查询硬件接口手册得知);

display.show(Image.HEART):在microbit点阵上显示爱心图案

microbit.sleep(1000)延时1秒;

radio.on():打开无线功能,因为无线功能比较耗电和占内存,所以默认关闭的,也可以使用radio.off()关闭无线功能;

radio.config(group=1):配置无线组=1,这样做其他设置了无线组=1microbit设备就可以互相通讯了,默认是0,可以选择的组为0~255,设置的组值需要与手柄设置的一致,否则无法正常通讯;

mode = 1:将变量mode初始化设为1

image.png

...

主循环中判断接收到手柄发送的命令,控制龙骑士的翅膀以及RGB灯的颜色。

incoming = radio.receive():接收无线传输过来的数据,并且保存到incoming变量中;如果incoming‘up’则让电机转动‘stop’并且mode = 1则让电机停止转动

如果incoming‘R’则车RGB亮红灯,‘G’则让车RGB亮绿灯,‘B’让车RGB亮蓝灯,‘Y’则车RGB亮黄灯

image.png

切换当前的模式。

注意:

incoming的值需要与手柄发送的值对应,只有相同的值才可以接收并执行命令。 

手柄的程序请详见.py文件。

image.png 

首先从microbit导入本节课需要用到的库:ghanle用于micro:bit手; radio用于micro:bit的无线通讯功能。

image.png 

display.show(Image.HEART):在microbit点阵上显示爱心图案

radio.on():打开无线功能,因为无线功能比较耗电和占内存,所以默认关闭的,也可以使用radio.off()关闭无线功能;

radio.config(group=1):配置无线组=1,这样做其他设置了无线组=1microbit设备就可以互相通讯了,默认是0,可以选择的组为0~255,设置的组值需要与手柄设置的一致,否则无法正常通讯;

image.png 

如果检测ghandle.rocker(ghandle.up)True,则表示手柄的摇杆往上推,让无线发送‘up’命令,并且显示一个向上的图标;

如果检测ghandle.rocker(ghandle.down)True,则表示手柄的摇杆往下推,让无线发送‘down’命令,并且显示一个向下的图标;

如果检测ghandle.rocker(ghandle.left)True,则表示手柄的摇杆往左推,让无线发送‘left’命令,并且显示一个向左的图标; 

如果检测ghandle.rocker(ghandle.right)True,则表示手柄的摇杆往右推,让无线发送‘right’命令,并且显示一个向右的图标;

如果检测ghandle.rocker(ghandle. pressed)True,则表示手柄的摇杆被按下,让无线发送‘pressed’命令,并且显示‘X’图标;

遥控没有操作发送‘stop’并清除显示;

特殊处理:

image.png

当摇杆被按下时,我们使用一个变量rocker_key,来确保只发送一次turn_off的命令。和双足机器人的程序相对应,改变一次mode的值。

image.png 

接下来检测按键,对应B1(红色),B2(绿色),B3(蓝色),B4(黄色)发送R’,‘G’,‘B’,‘Y’命令。

编写及下载程序


1.打开Mu软件,在编辑窗口输入代码注意!所有的英文与符号都应该在英文状态下输入,使用Tab键(制表键)进行缩进,最后一行以空白程序结尾。

2.点击大拇指‘Check’按钮,检查一下我们的代码是否有错误。如果某一行出现光标或者下划线,表示语法错误,请检查并修改,如果没有错误,左下方会提示检测没有问题。

image.pngimage.png 

3.点击‘REPL’按钮,检查是否下载了Superbit库,如果没有请参考课前准备-->Python编程环境介绍】-->添加Superbit Python库文件】

image.png 

4.程序编写完成之后,用microUSB数据线连接电脑和microbit主板,请点击‘Flash’按钮,将程序下载到micro:bit主板上。需要再次点击‘REPL’按钮关闭导入库文件功能,才可以正常下载程序)。

image.png 

5.如果出现下载失败的问题,请确认microbit是否通过microUSB数据线与电脑正常连接,并且已经导入SuperbitPython

实验现象

将龙骑士的程序.py文件需要下载到龙骑士的micro:bit主板上。打开龙骑士的电源开关,我们可以看到micro:bit点阵上显示一个爱心图案;

将手柄的程序.py文件需要下载到手柄的micro:bit主板上。打开手柄的电源开关,我们可以看到micro:bit点阵上会初始化显示一个爱心图案,然后会清除显示,表示手柄处于默认状态没有发送任何数据。

两者会自动完成配对,接下来我们就可以开始遥控龙骑士了。

手柄功能如下所示。

image.png

手柄摇杆控制:

手柄和龙骑士配对成功之后,我们可以看到龙骑士的micro:bit点阵上显示数字1,表示此时处于模式1

在模式1的情况下:

摇杆前推控制龙骑士翅膀挥动,松开手即停止;

红色按键按下,点亮红色RGB灯;

绿色按键按下,点亮绿色RGB灯;

黄色按键按下,点亮黄色RGB灯;

蓝色按键按下,点亮蓝色RGB灯。

 

我们可以按下摇杆,切换到模式2,此时我们可以看到龙骑士的micro:bit点阵上显示数字2,表示处于模式2

在模式2的情况下:

摇杆前推控制龙骑士翅膀挥动,松开手依然保持挥动;

红色按键按下,点亮红色RGB灯,停止正在挥动的翅膀;

绿色按键按下,点亮绿色RGB灯;

黄色按键按下,点亮黄色RGB灯;

蓝色按键按下,点亮蓝色RGB灯。

 

每次按下摇杆,都会在模式1和模式2之间来回切换,同时RGB灯会熄灭。