音を鳴らしたくて、スイッチサイエンスさんで購入したのはこれ
micro:bit用スピーカーモジュール
買って届いて、さてやるべ!と思った際、コレを買っていなかったのに気付く
micro:bit用電池モジュール
ちゃんと
このモジュールを使用するためには別途micro:bit用電池モジュールが必要です。
って書いてあるのに..
単純にメロディーを流す
電池用モジュールをがっちりつないで、ボタンを押したらメロディーが鳴るのを試してみた
JavaScript のコードだとこうなります。
input.onButtonPressed(Button.A, function () {
music.beginMelody(music.builtInMelody(Melodies.Prelude), MelodyOptions.Once)
})
basic.forever(function () {
})
ワニ口クリップなしで、音が鳴って嬉しい~
ボタンを押している間だけ音を鳴らす
次の課題として、「ボタンを押している間は音を鳴らす」というのを考える
でも、これだと最初に押したときの1拍分しか鳴らなかった
JavaScript のコードですと
input.onButtonPressed(Button.A, function () {
while (input.buttonIsPressed(Button.A)) {
music.playTone(262, music.beat(BeatFraction.Whole))
}
})
basic.forever(function () {
})
となります
つまりボタンが押されたときにイベントは走り、最初の1回目は条件にマッチするけど、押し続けているために、その後、onButtonPressed のイベントは走らないので終了してしまうのでした
これを
すると目的は達せられました
JavaScript のコードは
basic.forever(function () {
while (input.buttonIsPressed(Button.A)) {
music.playTone(262, music.beat(BeatFraction.Whole))
}
})
とイベント駆動ではないことが分かります
これを応用すると、また何か作れそうだ...