第13讲:Rotation Sensor

本章将介绍Micro:bit连接Rotation Sensor模块的使用,可用于计算顺时针和逆时针旋转的角度和旋转圈数。

本章将介绍Micro:bit连接Rotation Sensor模块的使用,可用于计算顺时针和逆时针旋转的角度和旋转圈数。

1.基本介绍

Rotation Sensor是一款增量编码器,是一种将旋转位移转换为一连串数字脉冲信号的旋转式传感器。通过旋转可以计数正方向和反方向转动过程中输出脉冲的次数,旋转计数不像电位器,这种转动是没有限制的。配合旋转编码器上的按键,可以复位到初始状态,即从0开始计数,主要用于工业中的定位问题。

2.硬件连接

在硬件上,采用Micro:bitP0P1P2分别与Rotation SensorSIASIBSW连接,具体连接示意图如下图所示:

Micro:bit

Rotation Sensor

VCC

VCC

GND

GND

SIA

P0

SIB

P1

SW

P2

具体硬件连接如下表所示:

3.计数原理

Rotation SensorSIASIBSW分别连接到逻辑分析仪的CH0CH1CH2,分别顺时针,逆时针,按下旋转编码器,同时采集波形,得到的波形如下图所示:

由逻辑分析仪得出的波形可知,当顺时针旋转编码器时,SIB将先产生下降沿,约过了30ms之后(取决于旋转的速度)SIA将产生下降沿;当逆时针旋转编码器时,SIA将先产生下降沿,约过了30ms之后(取决于旋转的速度)SIB将产生下降沿,对SIASIAB共同产生的下降沿个数进行统计,即可得知此次旋转的角度,当按下按键时,SW将产生下降沿,此按键可用于清零旋转的角度。

4.软件设计

打开makecode,采用图形块编写以下程序(不用添加软件包):

该程序的JavaScript代码如下所示,可直接复制至makecode使用:

01	let time = 0
02	let item = 0
03	let count = 0
04	pins.onPulsed(DigitalPin.P1, PulseValue.Low, () => {
05	    if (input.runningTime() - time > 50) {
06	        time = input.runningTime()
07	        count = count + 1
08	    }
09	    time = input.runningTime()
10	    serial.writeValue("press", 0)
11	})
12	pins.onPulsed(DigitalPin.P0, PulseValue.Low, () => {
13	    if (input.runningTime() - time > 50) {
14	        time = input.runningTime()
15	        count = count - 1
16	    }
17	    time = input.runningTime()
18	    serial.writeValue("press", 0)
19	})
20	pins.onPulsed(DigitalPin.P2, PulseValue.Low, () => {
21	    count = 0
22	    serial.writeValue("press", 1)
23	})
24	count = 0
25	item = 0
26	time = input.runningTime()
27	pins.setPull(DigitalPin.P0, PinPullMode.PullUp)
28	pins.setPull(DigitalPin.P1, PinPullMode.PullUp)
29	pins.setPull(DigitalPin.P2, PinPullMode.PullUp)
30	serial.redirectToUSB()
31	basic.forever(() => {
32	    while (item != count) {
33	        item = count
34	        serial.writeValue("item", item)
35	    }
36	    basic.pause(500)
37	})

下载,等下载成功后,点击显示数据(设备),依次顺时针旋转Rotation Sensor,逆时针旋转Rotation Sensor,按下Rotation Sensor,可得如下波形的数据:

makecode控制台显示的数据可知,当旋钮顺时针旋转时,每转一个刻度,item变量将加1,当旋钮逆时针旋转时,每转一个刻度,item变量将减1,当按下旋钮时,item数据将归零,符合预期。

 


评论:
相关文章
基于STEM教育的《人工智能教学 micro:bit智能交通灯》教学案例

渝中区“创新杯”优秀教育教学案例评选活动,是区内教师展示优秀教育教学成果、分享先进教育教学经验的重要品牌活动。为更好地推广获奖成果,搭建学术交流平台,


micro:pet 项目

这个项目为学生提供了一个机会,让他们为他们在 Unplugged 活动中采访的伙伴创建一个 micro:pet。


全球首款桌面级树莓派双轮足机器人问世!哈工大创业团队出品

近日,全球规模最大、最具影响力的众筹平台Kickstarter就发售了这样一种全新形态的桌宠机器人——全球首款桌面级树莓派双轮足机器人XGO-Rider。


通过数据流式处理器使用 micro:bit 和生成代码

本教程介绍如何使用生成代码平台编写一个简单的程序,该程序使用 Microsoft Data Streamer 加载项将实时数据从 BBC micro:bit 发送到 Microsoft Excel。


富有创意的micro:bit机器人和物联网项目合集

本文将向您展示一些关于2023年机器人和物联网的最有趣和创新的micro:bit项目。

Micro:bit基础教程

作者:微雪课堂   共25讲

Micro:bit是什么?Micro:bit是一款英国广播公司(BBC)推出的,用于青少年编程教育的ARM开发版,接下来,让我们一起认识Micro:bit,学习Micro:bit的基本使用。