制作坊使用Micro:Bit制作自动化列车 专区
使用Micro:Bit制作自动化列车

当我还只有一个儿子时,我的妻子在Craigslist(美国的大型免费分类广告网站。该网站上没有图片,只有密密麻麻的文字,标着各种生活信息,是个巨大无比的网上分类广告加BBS的组合)上找到了一张火车桌和一堆火车,价格为50美元。我买了一台7号电池驱动的动力机车来增加机组动力,并开始梦想着如何使火车组自动化运行。在我的想象中,它看起来非常漂亮,所有的电子设备被一个小木屋包围着。
现实却与想象相反,我在搭建中使用了纸板和热熔胶。并且我不知道电路某处是否会缺少电阻,又或者micro:bit在驱动9g舵机的过程是否会在引发问题 ——这些我都不在乎,因为我的自动化列车完美的运行起来了。
数量 | 组件名称 | |
2 | × | Micro:bit带7号电池供电 |
1 | × | 木制铁路开关(必须处于活动状态) |
1 | × | 9g伺服舵机 |
1 | × | 簧片开关 |
4 | × | 鳄鱼夹 |
1 | × | 电池供电的机车(如Brio Mighty Red Locomotive) |
MicroPython控制列车部分micro:bit代码:
from microbit import *
import radio
pin0.set_analog_period(20)
straight = 110
turn = 75
switchAfter = 2000
trainPassing = False
switchState = straight
lastDetect = 0
pin0.write_analog(switchState)
radioSwitch = False
radio.on()
while True:
if pin1.read_digital():
trainPassing = True
lastDetect = running_time()
if radio.receive() == 'go':
radioSwitch = True
if (trainPassing and not pin1.read_digital() and (running_time() - lastDetect) >= switchAfter) or (radioSwitch and not trainPassing):
radioSwitch = False
trainPassing = False
if switchState == straight:
radio.send('turn')
switchState = turn
else:
radio.send('straight')
switchState = straight
pin0.write_analog(switchState)
Micro:bit的遥控代码:
第二个Micro:Bit的遥控代码:
from microbit import *
import radio
radio.on()
while True:
queue = radio.receive()
if queue == 'straight':
display.show(Image.ARROW_N)
elif queue == 'turn':
display.show(Image.ARROW_E)
if button_a.was_pressed() or button_b.was_pressed():
radio.send('go')
sleep(50)
来源:https://hackaday.io/project/27539-automating-brio-trains-with-a-microbit
