2017-09-02 32 views
3

我想将下面的代码从Javascript翻译成MicroPython:micro。这是发明人的套件从块转换为Javascript的代码示例3。BBC MicroPython中是否有事件回调?

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作为回调的事件,甚至是拉姆达。我能想到的最好的办法是反复轮询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不断闪烁。

+1

我会尝试在微型论坛论坛中的[micro:bit area](https://forum.micropython.org/viewforum.php?f=17)... – nekomatic

+0

@nekomatic - I'll如果有人在micro:bit论坛上回复,请在此发布答案 – cup

回答

2

从微观的回复:比特论坛是

的MicroPython微:位API的设计主要是为教学和学童使用,并决定不包括在API中的回调,因为他们可以导致复杂的错误。相反,你将需要轮询引脚。

相关问题