【BBC micro:bit】Science/定时闸门-计算汽车速度

2019-02-131128
AI 快速预览详细 收起
本项目介绍如何使用BBC micro:bit和简单材料(如纸板、铝箔等)构建一个定时闸门系统,用于计算汽车的速度。通过记录车辆通过两个闸门的时间差,结合门之间的距离,计算出汽车的速度。项目包括详细的步骤和代码示例,适合STEM教育场景,帮助学生理解物理和编程的基本概念。
project-image

定时门/Timing gates 

将两个门链接到micro:bit,就可以检测到通过的车辆。

project-image

当汽车通过 闸门0 时,它通过 on pin pressed 发送一个事件到micro:bit。micro:bit在变量中记录时间t0。

project-image

当车通过 闸门1 的时候,它通过 on pin pressed 发送一个事件到micro:bit。micro:bit在变量中记录时间t1。

project-image

其余的是一些数学和物理知识。穿过门的时间计算为t1-t0。通过将门之间的距离除以持续时间,我们得到了车的速度!

project-image

材料清单

  • 纸板 X1
  • 铝箔 X1
  • 双面胶带 X1
  • 4个鳄鱼夹 X1
  • micro:bit和USB线 X1
project-image

步骤1 显示LED

代码 

在LED屏幕上显示图片

project-image

参数 

leds是一个字符串,用于控制打开和关闭哪些LED。 

interval是一个可选数字,表示显示图片后等待多少毫秒。如果使用块编程,interval则设置为400毫秒。 

例 

该程序显示具有该show leds功能的图片。

project-image

步骤2 On Pin Pressed

project-image

参数

project-image
project-image
代码
let count = 0
basic.showNumber(count, 100)
input.onPinPressed(TouchPin.P0, () => {
    count = count + 1
    basic.showNumber(count, 100)
})

步骤3 在变量中存储数字

project-image
代码
let item = 5
basic.showNumber(item)

在变量中存储字符串

project-image
代码
let name = "Joe"
basic.showString(name);

步骤4 运行时间

project-image
代码
input.onButtonPressed(Button.B, () => {
    let now = input.runningTime()
    basic.showNumber(now)
})

步骤5 事件时间戳

project-image

步骤6 显示数字

project-image
代码
basic.showNumber(10)

要显示存储在变量中的数字:

project-image
代码
let x = 1
basic.showNumber(x)

示例:计数到5

project-image
代码
for (let i = 0; i < 6; i++) {
    basic.showNumber(i)
    basic.pause(200)
}

步骤7 建造大门

project-image
project-image
project-image
project-image
project-image

步骤8 升级汽车

project-image

步骤9 用代码检测汽车

project-image
代码
basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
input.onPinPressed(TouchPin.P0, () => {
    basic.showLeds(`
        # . . . .
        # . . . .
        # . . . .
        # . . . .
        # . . . .
        `)
})

步骤10 检测第二个门

project-image
代码
basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
input.onPinPressed(TouchPin.P0, () => {
    basic.showLeds(`
        # . . . .
        # . . . .
        # . . . .
        # . . . .
        # . . . .
        `)
})
input.onPinPressed(TouchPin.P1, () => {
    basic.showLeds(`
        # . . . #
        # . . . #
        # . . . #
        # . . . #
        # . . . #
        `)
})

步骤11 计算时间

project-image
project-image
代码
let t0 = 0;
let t1 = 0;
basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
input.onPinPressed(TouchPin.P0, () => {
    t0 = control.eventTimestamp();
    basic.showLeds(`
        # . . . .
        # . . . .
        # . . . .
        # . . . .
        # . . . .
        `)
})
input.onPinPressed(TouchPin.P1, () => {
    t1 = control.eventTimestamp();
    basic.showLeds(`
        # . . . #
        # . . . #
        # . . . #
        # . . . #
        # . . . #
        `)
    let d = t1 - t0
    basic.showNumber(d)
})

步骤12 计算速度

测量门之间的距离并应用牛顿定律来计算汽车的速度(它的速度)。

 v = d / t

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -