LoginSignup
2
0

More than 5 years have passed since last update.

micro:bit スピーカーモジュールを試した

Posted at

音を鳴らしたくて、スイッチサイエンスさんで購入したのはこれ
micro:bit用スピーカーモジュール

買って届いて、さてやるべ!と思った際、コレを買っていなかったのに気付く
micro:bit用電池モジュール

ちゃんと
このモジュールを使用するためには別途micro:bit用電池モジュールが必要です。
って書いてあるのに..

単純にメロディーを流す

電池用モジュールをがっちりつないで、ボタンを押したらメロディーが鳴るのを試してみた

プログラム自体は非常に簡単
mb01.png
これだけ

JavaScript のコードだとこうなります。

input.onButtonPressed(Button.A, function () {
    music.beginMelody(music.builtInMelody(Melodies.Prelude), MelodyOptions.Once)
})
basic.forever(function () {

})

ワニ口クリップなしで、音が鳴って嬉しい~

ボタンを押している間だけ音を鳴らす

次の課題として、「ボタンを押している間は音を鳴らす」というのを考える

最初に考えたのはこちら
mb02.png

でも、これだと最初に押したときの1拍分しか鳴らなかった
JavaScript のコードですと

input.onButtonPressed(Button.A, function () {
    while (input.buttonIsPressed(Button.A)) {
        music.playTone(262, music.beat(BeatFraction.Whole))
    }
})
basic.forever(function () {

})

となります
つまりボタンが押されたときにイベントは走り、最初の1回目は条件にマッチするけど、押し続けているために、その後、onButtonPressed のイベントは走らないので終了してしまうのでした

これを
mb03.png
すると目的は達せられました
JavaScript のコードは

basic.forever(function () {
    while (input.buttonIsPressed(Button.A)) {
        music.playTone(262, music.beat(BeatFraction.Whole))
    }
})

とイベント駆動ではないことが分かります

これを応用すると、また何か作れそうだ...

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0