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

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

binglingdang2019-01-29 692人围观
简介一对Micro:Bit,一个9g舵机和一个开关让木制火车再次变得有趣。

    当我还只有一个儿子时,我的妻子在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)



image.pngimage.png


作者:mark gunderson

来源:https://hackaday.io/project/27539-automating-brio-trains-with-a-microbit


7 +1

评论