4

我正在尝试将以下内容从 Javascript 转换为 micro:bit 的 MicroPython。这是发明者工具包中的代码示例 3,从块转换为 Javascript。

let light_state = 0
# how do you do this bit?
input.onPinPressed(TouchPin.P0, () => {
    if (light_state == 0) {
        light_state = 1
    } else {
        light_state = 0
    }
})
basic.forever(() => {
    if (light_state == 1) {
        pins.analogWritePin(AnalogPin.P2, pins.analogReadPin(AnalogPin.P1))
    } else {
        pins.digitalWritePin(DigitalPin.P2, 0)
    }
})

我不知道如何将input.onPinPressed作为回调事件甚至是 lambda。我能想出的最好办法是反复轮询 pin0。

from microbit import *

light_on = False
while True:
    if pin0.is_touched():
        light_on = not light_on        
        if light_on:
            aval = pin1.read_analog()
            pin2.write_analog(aval)
        else:
            pin2.write_digital(0)

我在 MicroPython 文档中看到了关于开关的回调,但我没有遇到任何 micro:bit 引脚的事件回调。即使没有记录,是否有此功能的示例代码?

编辑:我对代码进行了更正——之前的 MicroPython 翻译导致 LED 持续闪烁。

4

1 回答 1

2

micro:bit 论坛的回复

MicroPython micro:bit API 主要是为学童的教学和使用而设计的,因此决定不在 API 中包含回调,因为它们会导致复杂的错误。相反,您将需要轮询引脚。

于 2017-09-05T07:55:38.660 回答