Measuring Distance

Now that we have identified the values needed to calibrate the shoe, we can create the final program that will be running on the runner’s monitoring micro:bit.

Pressing A starts measuring on the monitor. Pressing B shows the distance and time on the monitoring micro:bit display.

let A = 0.135
let B = 1.2
let distance = 0
let duration = 0
let startTime = 0
let lastStepTime = 0
let now = 0
let stepDuration = 0
let recording = false
input.onButtonPressed(Button.A, function () {
    distance = 0
    startTime = input.runningTime()
    lastStepTime = startTime
    recording = true
    basic.showIcon(IconNames.Heart)
})
input.onButtonPressed(Button.B, function () {
    recording = false
    basic.showString("DISTANCE")
    basic.showNumber(distance)
    basic.showString("DURATION")
    basic.showNumber(duration)
})

radio.onReceivedNumber(function (receivedNumber: number) {
    led.plot(0, 0)
    if (recording) {
        now = input.runningTime()
        duration = (now - startTime) / 1000
        stepDuration = (now - lastStepTime) / 1000
        distance += A / stepDuration + B
        lastStepTime = now
    }
})
basic.showString("RS-SHOE")