制作坊Micro:Bit较精确的运动数据录入与分析(计步器升级版) 专区

Micro:Bit较精确的运动数据录入与分析(计步器升级版)

默丶归零2021-02-21 1589人围观
简介用Micro:Bit主板实现更准确地计步。(内附.hex文件、JavaScript源码、Python源码)

计步效果相对于检测振动准确。

改编自https://mc.dfrobot.com.cn/thread-30010-1-1.html

开启Micro:Bit后显示爱心即为计步中,触摸徽标查看运动数据(包含:步数、速度(Time/Steps)与数据评价)。

计步器.hex

以下源代码已使用MakeCode成功编译。

Python源码:

def on_logo_pressed():
    basic.clear_screen()
    led.stop_animation()
    basic.show_number(Steps)
    basic.show_string("steps ")
    basic.show_number(input.running_time() / 1000 / Steps)
    basic.show_string("s/steo")
    if input.running_time() / 1000 / Steps < 1:
        basic.show_icon(IconNames.HAPPY)
    else:
        basic.show_icon(IconNames.SAD)
    basic.pause(2000)
    basic.show_icon(IconNames.HEART)
input.on_logo_event(TouchButtonEvent.PRESSED, on_logo_pressed)

x2 = 0
Steps = 0
basic.show_icon(IconNames.HEART)
Steps = 0
x1 = input.acceleration(Dimension.X)

def on_forever():
    global x2, Steps, x1
    x2 = input.acceleration(Dimension.X)
    if abs(x1 - x2) >= 350:
        Steps += 1
    x1 = input.acceleration(Dimension.X)
    basic.pause(500)
basic.forever(on_forever)


JavaScript源码:

input.onLogoEvent(TouchButtonEvent.Pressed, function () {
    basic.clearScreen()
    led.stopAnimation()
    basic.showNumber(Steps)
    basic.showString("steps ")
    basic.showNumber(input.runningTime() / 1000 / Steps)
    basic.showString("s/steo")
    if (input.runningTime() / 1000 / Steps < 1) {
        basic.showIcon(IconNames.Happy)
    } else {
        basic.showIcon(IconNames.Sad)
    }
    basic.pause(2000)
    basic.showIcon(IconNames.Heart)
})
let x2 = 0
let Steps = 0
basic.showIcon(IconNames.Heart)
Steps = 0
let x1 = input.acceleration(Dimension.X)
basic.forever(function () {
    x2 = input.acceleration(Dimension.X)
    if (Math.abs(x1 - x2) >= 350) {
        Steps += 1
    }
    x1 = input.acceleration(Dimension.X)
    basic.pause(500)
})
8 +1

评论