我正在尝试将以下内容从Javascript转换为MicroPython for micro:bit。这是从块发送到Javascript的发明人工具包中的代码示例3.
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不断闪烁。
答案 0 :(得分:2)
The reply from the micro:bit forum是
MicroPython micro:bit API主要是为学龄儿童的教学和使用而设计的,并且决定不在API中包含回调,因为它们可能导致复杂的错误。相反,您需要轮询引脚。