micro:bit用に以下をJavascriptからMicroPythonに変換しようとしています。これは、ブロックから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をコールバックイベントまたはラムダとして実行する方法がわかりません。私が思いつくことができる最善の方法は、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が継続的にちらつきました。
MicroPython micro:bit APIは、主に学童による教育と使用のために設計されており、複雑なバグにつながる可能性があるため、APIにコールバックを含めないことが決定されました。代わりに、ピンをポーリングする必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加