Micro:bit 重力控制水平仪

栏目: 后端 · 发布时间: 6年前

内容简介:在可以看出

上一节 的教程里,我们学习了如何使用 Micro:bit 在线编程网站提供的选择、循环、按钮事件和游戏精灵模块实现一个简单的模拟传球小程序,这回我们来学习一下如何使用 Micro:bit 的重力模块,用它实现一个重力控制上下左右滑动的 LED,相当于一个水平仪。这节教程将会有 3 种水平仪的实现,分别是敏捷版、智障版和优化版,从简单到复杂,我们可以从中体会不同的实现带来的不同效果。

敏捷版

Micro:bit 重力控制水平仪

智障版

Micro:bit 重力控制水平仪

优化版

Micro:bit 重力控制水平仪

可以看出

  1. 敏捷版最灵敏,基本上是跟随鼠标移动的方向(实际上是板子的倾斜方向)进行移动

  2. 智障版就很智障了,只能动一下挪一下,感觉特别懒

  3. 优化版介于敏捷版和智障版之间,能跟随重力方向自动移动,并且加上了一定延迟,使得 led 的变化更加自然

3 轴传感器

Micro:bit 板子上集成了一个 3 轴传感器,水平方向 (按钮 A 到 按钮 B) 的方向为 X 轴,垂直方向 ( 徽标(徽标就是那个椭圆形中间两个小点点像个娃娃头一样的) 到 引脚孔 2) 为 Y 轴,垂直穿过板子为 Z 轴,每个轴的加速度范围都是 -1024 到 1024,具体方向见下图

Micro:bit 重力控制水平仪

今天的这篇教程不涉及 Z 轴,只关心 X 轴和 Y 轴。水平放置板子,徽标朝上时,两个方向的加速度分别是 X = 0, Y = 0,在模拟器中,默认状态就相当于水平放置板子,即徽标朝向屏幕外,正对你。

基本原理

  • 当板子水平倾斜时,会有一个 X 方向的加速度,当从按钮 A 向 按钮 B 倾斜,X 方向加速度为 正值,即大于零的值,0~1024,当从按钮 B 向 按钮 A倾斜,X 方向加速度为负值,即小于零的值,-1024~0,为了便于计算,我们给 X 方向的加速度值加上 1024,使范围变为 0~2048,这样就不用考虑负值的情况了

  • 当板子垂直倾斜时,会有一个 Y 方向的加速度,当从 徽标 向 引脚孔 2 倾斜,Y 方向加速度为 正,0~1024,当从 引脚孔 2 向 徽标 倾斜,Y 方向加速度为负值,-1024~0,同样的,我们给 Y 方向的加速度值加上 1024,使范围变为 0~2048。

  • 当板子同时向 水平方向 和 垂直方向 倾斜时,既有 X 方向 也有 Y 方向的加速度

  • 当板子倾斜时,加速度会一直存在,直到板子被水平放置

敏捷版

敏捷版的思路比较简单,我们会用到 输入 分类下的 加速度值 模块,它提供了读取 3 轴方向上的加速度值的能力,我们可以把 X 轴的加速度和 Y 轴的加速度换算成 LED 灯阵的坐标,这样就可以控制 LED 灯来回跑啦。

Micro:bit 重力控制水平仪

解释如下:

  1. 给 X 和 Y 方向的加速度 加 1024,换算成正值,范围变成 0 ~ 2048

  2. 由于 X 和 Y 方向只有 5 个 LED,需要换算坐标,用 2048 / 5 约等于 410,所以用 2048 / 410 向下取整(10/3=3.3333 向下取整为 3,向上取整为 4)后得到 0、1、2、3、4 这 5 个整数

实现如下:

  1. 当开机时,在 (2,2) 处创建一个精灵

  2. 无限循环读取 X 方向的加速度,加 1024 后除以 410,得到的结果用来改变精灵的 X 坐标

  3. 无限循环读取 Y 方向的加速度,加 1024 后除以 410,得到的结果用来改变精灵的 Y 坐标

Micro:bit 重力控制水平仪

是不是很简单呀

智障版

实现智障版需要用到 4 个事件,位于 输入 分类下的 当振动 事件,我们会用到的是 当徽标朝上 当徽标朝下 当向左倾斜当向右倾斜 这 4 个事件

Micro:bit 重力控制水平仪

解释如下:

  1. 当徽标朝上即水平放置板子后,向上倾斜板子,也就是徽标一端翘起,此时 Y 方向加速度为正

  2. 当徽标朝上即水平放置板子后,向下倾斜板子,也就是有引脚孔的一端翘起,此时 Y 方向加速度为负

  3. 当向左倾斜即水平放置板子后,向左倾斜板子,也就是按钮 B 所在的一端翘起,此时 X 方向加速度为负

  4. 当向右倾斜即水平放置板子后,向右倾斜板子,也就是按钮 A 所在的一端翘起,此时 X 方向加速度为正

实现如下:

  1. 当开机时,在 (2,2) 处创建一个精灵

  2. 当徽标朝上精灵的 Y 坐标 加 1

  3. 当徽标朝下精灵的 Y 坐标 减 1 (加 -1)

  4. 当向左倾斜精灵的 X 坐标 减 1 (加 -1)

  5. 当向右倾斜精灵的 X 坐标 加 1

Micro:bit 重力控制水平仪

但是这个有个缺点,就是每次都要移动一次板子才能触发事件,也就是向左移动一次板子,精灵向左移动 1 步,其他方向同理,下面我们看看优化版。

优化版

为了达到精灵自动移动的效果,我们需要用到循环,时刻检测板子在 X Y 方向上的加速度,并控制精灵向该方向自动移动,为了精灵不至于移动太快,我加上了一个 500 毫秒的延迟,同时为了降低灵敏度,使得板子倾斜一定程度精灵才移动,因此我加上了阈值,300  (反方向移动为 -300)。

实现如下:

  1. 当开机时,在 (2,2) 处创建一个精灵

  2. 创建1个循环,判断 X 方向的加速度值,如果大于 300,则让精灵的 X 坐标  加 1,暂停 500 毫秒

  3. 创建1个循环,判断 X 方向的加速度值,如果小于 -300,则让精灵的 X 坐标 减 1 (加 -1),暂停 500 毫秒

  4. 创建1个循环,判断 Y 方向的加速度值,如果大于 300,则让精灵的 Y 坐标  加 1,暂停 500 毫秒

  5. 创建1个循环,判断 Y 方向的加速度值,如果小于 -300,则让精灵的 Y 坐标 减 1 (加 -1),暂停 500 毫秒

这样就可以让 精灵 自动向倾斜方向移动啦

Micro:bit 重力控制水平仪

练习题

改变优化版中 阈值 300 和 延迟 500 毫秒的数值,体会这两个值不同数值下的效果。

有问题可以在微信公众号中给我发消息呦。

始发于微信公众号: 暴王不暴燥


以上所述就是小编给大家介绍的《Micro:bit 重力控制水平仪》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

创新者的窘境

创新者的窘境

克莱顿•克里斯坦森( Clayton M. Christensen ) / 胡建桥 / 中信出版社 / 2010-6 / 38.00元

管理类经典图书 o 被《福布斯》评为20世纪最具影响的20本商业图书之一 o “全球商业书籍奖”获奖图书 “颠覆大师”克莱顿•克里斯坦森经典力作。 《金融时报》/布兹•亚兰及汉密顿全球商务书刊颁发“1997年最佳商务书”奖 “1997年最佳商务‘实用’书”奖 一本书, 让志在必得者战战兢兢, 让犹豫不前者胸有成竹, 掀起激荡决策者的脑力风暴, ......一起来看看 《创新者的窘境》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具