定时门/Timing gates
将两个门链接到micro:bit,就可以检测到通过的车辆。
当汽车通过 闸门0 时,它通过 on pin pressed 发送一个事件到micro:bit。micro:bit在变量中记录时间t0。
当车通过 闸门1 的时候,它通过 on pin pressed 发送一个事件到micro:bit。micro:bit在变量中记录时间t1。
其余的是一些数学和物理知识。穿过门的时间计算为t1-t0。通过将门之间的距离除以持续时间,我们得到了车的速度!
材料清单
- 纸板 X1
- 铝箔 X1
- 双面胶带 X1
- 4个鳄鱼夹 X1
- micro:bit和USB线 X1
步骤1 显示LED
代码
在LED屏幕上显示图片
参数
leds是一个字符串,用于控制打开和关闭哪些LED。
interval是一个可选数字,表示显示图片后等待多少毫秒。如果使用块编程,interval则设置为400毫秒。
例
该程序显示具有该show leds功能的图片。
步骤2 On Pin Pressed
参数
代码
let count = 0
basic.showNumber(count, 100)
input.onPinPressed(TouchPin.P0, () => {
count = count + 1
basic.showNumber(count, 100)
})
步骤3 在变量中存储数字
代码
let item = 5
basic.showNumber(item)
在变量中存储字符串
代码
let name = "Joe"
basic.showString(name);
步骤4 运行时间
代码
input.onButtonPressed(Button.B, () => {
let now = input.runningTime()
basic.showNumber(now)
})
步骤5 事件时间戳
步骤6 显示数字
代码
basic.showNumber(10)
要显示存储在变量中的数字:
代码
let x = 1
basic.showNumber(x)
示例:计数到5
代码
for (let i = 0; i < 6; i++) {
basic.showNumber(i)
basic.pause(200)
}
步骤7 建造大门
步骤8 升级汽车
步骤9 用代码检测汽车
代码
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
input.onPinPressed(TouchPin.P0, () => {
basic.showLeds(`
# . . . .
# . . . .
# . . . .
# . . . .
# . . . .
`)
})
步骤10 检测第二个门
代码
basic.showLeds(`
. . . . .
. . . . .
. . # . .
. . . . .
. . . . .
`)
input.onPinPressed(TouchPin.P0, () => {
basic.showLeds(`
# . . . .
# . . . .
# . . . .
# . . . .
# . . . .
`)
})
input.onPinPressed(TouchPin.P1, () => {
basic.showLeds(`
# . . . #
# . . . #
# . . . #
# . . . #
# . . . #
`)
})
步骤11 计算时间
代码
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
评论