用micro:bit做一个可以用的指南针

标签:micro:bit

Handaxe_Maker 发布于 2017-11-23 15:31

0 (1).jpg 0.jpg


本文可以学到:

1. 什么是 Micro:bit

2. 用Micro:bit做一个可以用的指南针

3. 磁偏角的相关知识


Micro:bit 是英国广播公司(BBC)联合很多企业推出的一个基于ARM Cortex-M0芯片的微型可编程计算机,balabala。看到这里,你可能会想,又骗我买Micro:bit?这玩意和以前的单片机、51、Arduino有啥区别?

 

Micro:bit 设计的初衷是为了让每个孩子都能零基础的接触计算机编程。整个设备是一片4厘米宽5厘米长的电路板,上面有加速计、磁力计、光电传感、蓝牙和USB接口、一个25个LED组成的5*5显示屏、2个可编程按钮等,由USB口或外置电源供电。下方的输入和输出环可以通过鳄鱼夹或香蕉插头连到其他设备,并发送接收指令。


在编程方式上支持模块拖拽、JavaScript和Python等,如果使用图形编程界面(如微软推出的Maker Code平台,可以在线编程)也就是模块拖拽的话,不需要任何编程语言学习就可以直接上手。要把程序刷到这个组件上也很简单,通过USB和电脑连接,不用安装任何驱动就可以使用,Micro:bit会被识别为一个电脑硬盘。


一般我们是进入https://makecode.microbit.org这个网址,在这里进行网页编程,界面左边是模拟界面,中间是指令区,右边是脚本区。写好指令后下载到micro:bit盘符里就行了,或者直接把hex文件拷贝到这个盘符里也可以。


今天,我们先通过一个小小的指南针实例,来初步了解一下怎么玩这个micro:bit吧。

 

常见的指南针主要部件是根磁针,在地磁场的作下可以转动并指向北方(指南针其实是指北的),用来辨别向。Micro:bit内部就有一个磁力计,我们可以读取这个磁力计的读数来判断方位。


最终要实现的指南针程序功能是,开机进行初始校准后,箭头始终指向地磁北极方向,按下左边的按键时在屏幕上显示当前的磁力计读数。

Step 1: 材料和工具清单

Micro:bit主控板
数据线
Makecode在线网站 https://makecode.microbit.org

Step 2: 磁力计指令

QQ截图20171123152511.jpg QQ截图20171123152503.jpg QQ截图20171123152455.jpg QQ截图20171123152446.jpg
“compassheading”读取方向指令

注意这个模块的颜色是紫色,和指令区中的Input菜单项的紫色对应,也就是说当我们看到一个已完成项目中某个图形编程模块的颜色时,就可以在对应颜色的菜单栏里找到这个模块。

比如说上面这个功能块中的蓝色模块就可以在Basic菜单栏里找到。

我们的micro:bit有1个内置的磁力计,能够得到相对于北磁极的数值。

返回值是0到360之间的数值,在磁力计首次开始工作(带到新位置后)时系统会自动要求我们把micro:bit板子转一圈以作校准,校准期间返回值是1003(需要校准时返回1004),正确的校准方式是保持板子水平旋转一圈。需要注意的是,附近要是有金属物件可能会影响读数和校准准确性。

校准方法 

一些地球物理学家们确信,地球磁场是因为固态铁质内核被液态金属“海”所包围而形成的。磁力计指向的北是地磁北极,目前地磁南北极位置位于地理南北极地区,但并不与地球的南北极点完全重合,磁北极和真正的地理北极之间存在一个磁偏角。需要指出的是磁极位置是一直在变化的,历史上还出现过地磁逆转的情况。

我们称呼上的地磁南极,其实是物理上的磁北极,而地磁北极是物理上的磁南极,磁力线从磁北极出射,从磁南极进入,即地磁场从地理南极出来从地理北极进去。

Step 3: 用到的几个基本命令

QQ截图20171123152844.jpg QQ截图20171123152837.jpg QQ截图20171123152831.jpg

1   将“item”设定为()


变量模块,“item”可以重命名,⽤这个模块我们可以把变量定义为某⼀个数。


2.   显示LED命令

可以在LED屏幕显示1个图形


3.   逻辑指令


几个基本的逻辑判断指令

Step 4: 写程序

QQ截图20171123152953.jpg QQ截图20171123152944.jpg QQ截图20171123152936.jpg QQ截图20171123152930.jpg QQ截图20171123152924.jpg compasscode.jpg
创建1个循环,将不断更新指南针的读数。

将micro:bit的磁力计读数存储在一个变量x中。

当按下按钮A的时候,直接在屏幕上显示磁力计读数。
北、东、南、西对应0°、90°、180°、270°。

这个模块意思是,在循环中,不断读取磁力计的读数,并根据读数范围判断所指方向,让箭头指向当前的地磁北方。

如图所示,如果读数在292.5和337.5之间,就让显示屏显示一个指向右上方的箭头,由于代码里不能输入0.5,所以取的判断数值是293和338。

之后再加入其它逻辑判断条件,就得到了完整的代码。

Step 5: 后续完善

QQ截图20171123153043.jpg
把编译的hex文件下到板子里,就可以运行了,首次运行会要求初始化磁力计,记得把板子按前面的视频演示转一圈。如果有时间的话也可以做个罗盘面,比如我们这里就自己试着激光切割了一个罗盘面。

Step 6: 磁偏角

地磁北极和地理北极并不在同一点,存在磁偏角magnetic declination,即地磁北极(指南针指的方向)与地理北极间的夹角。

北京的磁偏角是-6°50′,北偏西。 如果所在地区磁偏角较大的话,可以在程序里设置磁偏角数值进行补正,大家可以查询自己所在地区的磁偏角,试试修改代码。

磁偏角可通过这个网站来查询(http://www.magnetic-declination.com)。

最后附上我们的源代码(点击 https://www.thingiverse.com/thing:2621163 可以看到),大家在网页编程界面的项目里选择导入这个hex文件,就会自动显示出编码的图形拖拽模块了。
 

作者

Handaxe_Maker

北京,海淀

6粉丝 7作品 0随笔
  关注 私信


阅读数: 20100