夏日,每到夜晚,我仰望星空,就时常想起家乡的萤火虫。
家乡的夜晚静谧而安详。在树丛,在稻田,在沟塘,萤火虫飞来飞去,绿莹莹的光,宛若遥远的小灯笼,忽明忽暗,若隐若现。当走在乡间小路上,多情的荧火虫,会舞弄着轻柔的倩影,伴你款款而行。时常听大人说,天上的人看地球是天,萤火虫就是天上游动的星星。还听母亲说,萤火虫是一个美丽善良的姑娘变成的,专门提着灯,给夜行人引路
今天我想要用多个micro:bit(每个micro:bit充当一个萤火虫)创建虚拟萤火虫。来怀念的童年,我的故乡我的山间田野
目录
编码萤火虫
“每只萤火虫都有自己独立的内部时钟……”
在这种情况下,时钟就像一个计数器,所以我们首先在程序中添加一个clock
变量。
// the clock ticker
let clock = 1
“……每当时钟’数到十二’时,它就会闪烁。”
我们可以使用||basic:forever||
循环来重复增加时钟的代码。当时钟到达“中午”(让我们选择8为正午)时,我们会短暂打开屏幕
// the clock ticker
let clock = 0
basic.forever(() => {
// if clock "hits noon", flash the screenif (clock >= 8) {// flash
game.addScore(1)
// wait for 2 ticks
basic.pause(200)
// reset the clock
clock = 0
} else {
// just wait a bit
basic.pause(100)
// increment the clock
clock += 1
}
})
当你看到附近的萤火虫闪光灯时,稍微向前推动你的时钟
micro:bit可以向相邻的micro:bit发送无线信息。我们可以使用这些信息来模拟光的“闪烁”。
当萤火虫闪烁时,它还通过无线电发送号码||radio:radio send number||
:
// the clock ticker
let clock = 0
basic.forever(() => {
// if clock "hits noon", flash the screenif (clock >= 8) {// notify neighbors
radio.sendNumber(0)
// flash
game.addScore(1)
// wait for 2 ticks
basic.pause(200)
// reset the clock
clock = 0
} else {
// just wait a bit
basic.pause(100)
// increment the clock
clock += 1
}
})
当一只萤火虫接收到无线电数据包并且它没有发送数据包时,它会将其时钟递增一:
// the clock ticker
let clock = 0
radio.onDataPacketReceived(() => {
// advance clock to catch up neighborsif (clock < 8) {
clock += 1
}
})
最后,把他们放在一起,然后关掉灯,一起来看萤火虫飞舞吧