稼働中

マイクロビット(m_15)モジュール music neopixel

module – music neopixel

thonny-microbitには「antigravity、array、audio、builtins、collections|ucollections、gc、love、machine、math、microbit、micropython、music、neopixel、os、radio、random、speech、sys、struct|ustruct、time|utime、this」のモジュールがあります。※microbitモジュールは既に記載しました。

(d-10)music-module

musicモジュールを読み込むと「reset, set_tempo, get_tempo, play, pitch, stop」の関数と「DADADADUM, ENTERTAINER, PRELUDE, ODE, NYAN, RINGTONE, FUNK, BLUES, BIRTHDAY, WEDDING, FUNERAL, PUNCHLINE, PYTHON, BADDY, CHASE, BA_DING, WAWAWAWAA, JUMP_UP, JUMP_DOWN, POWER_UP, POWER_DOWN」組込み音が使えます。

個々の音はNOTE[octave][:duration]の形式(ミュージック表記)で指定します。A1:4のような形式になります。
フラットとシャープは b (小文字の b)と # を使います。詳細はBBC micro:bit MicroPython等のサイトを参照ください。

pin0-GND間にスピーカーを接続して音を鳴らします。※micro:bit V1

(10-01)music.play(music, pin=microbit.pin0, wait=True, loop=False)

ミュージック表記の musicデータ を演奏します。


>>> from microbit import *
>>> import music
#ミュージック表記のリスト(ド~ド)
>>> music.play(['c3:4', 'd','e','f','g','a','b','c4'])

#タプル型 組込のBADDYのミュージック表記データ(下記と同じ)
>>> music.play(('c3:5', 'r', 'd:2', 'd#', 'r', 'c', 'r', 'f#:8'))

>>> help(music.BADDY)
object ('c3:3', 'r', 'd:2', 'd#', 'r', 'c', 'r', 'f#:8') is of type tuple
  count -- 
  index -- 

#組込ミュージックのプレイ
>>> music.play(music.BADDY)

(10-02)music.get_tempo()

現在のテンポを整数のタプル (bpm,ticks) が返ります。ticks=1拍の刻みの数、bpm=1分間の拍数


>>> import music
>>> music.get_tempo()
(120, 4)                    #標準のテンポ (bpm,ticks)

(10-02)music.set_tempo(ticks=4, bpm=120)—-default

テンポを変更します。ticks=1拍の刻みの数、bpm=1分間の拍数を変更します。


>>> import music
>>> music.set_tempo(ticks=4, bpm=120)  #標準
>>> music.play( ['r4:2', 'g', 'g', 'g', 'eb:8', 'r:2', 'f', 'f', 'f', 'd:8'] )

>>> music.set_tempo(ticks=4, bpm=60)    #120>>60 2倍に遅くする
>>> music.play( ['r4:2', 'g', 'g', 'g', 'eb:8', 'r:2', 'f', 'f', 'f', 'd:8'] )

>>> music.set_tempo(ticks=8, bpm=120)   #1/4拍>>1/8拍
>>> music.play( ['r4:2', 'g', 'g', 'g', 'eb:8', 'r:2', 'f', 'f', 'f', 'd:8'] )

(10-03)music.pitch(freq, length)

freq(Hz)周波数でlength(msec)鳴らす。ド(130.815)レ(146.835)ミ(164.82)ファ(174.62)・・・


>>> import music
>>> music.pitch(1760, 1000) #1760hz 1sec

microbitモジュールのset_analog_period_microseconds(period)の最小値が256usなのでfreqの最大値は3906Hzまでのようです。


>>> music.pitch(3906, 1000)         #動作します
>>> music.pitch(3907, 1000)         #エラーになります
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid pitch

(10-03)music.reset()

音楽をデフォルトの設定に戻します。ticks = 4、bpm = 120、duration = 4、octave = 4 です。


>>> from microbit import *
>>> import music

>>> music.set_tempo(ticks=2, bpm=60) #テンポを変更
>>> music.get_tempo()
(60, 2)

>>> music.reset()                    #初期値に戻す
>>> music.get_tempo()
(120, 4)

(10-04)music.stop(pin=microbit.pin0)

再生中の音楽を停止させます。指定された端子のすべての音楽再生を停止します。
music.stop()ではpin0 が指定されたものなります。


>>> music.stop()

(d-11)neopixel-module

neopixelモジュールを読み込むとNeoPixelオブジェクトを使用できます。
個別にアドレス可能な RGB LED ボードである NeoPixel (WS2812) を micro:bit で使えます

※接続など詳細はBBC micro:bit MicroPythonのドキュメントサイトを参照してください。
「https://microbit-micropython.readthedocs.io/ja/latest/neopixel.html」

(11-01)neopixel.NeoPixel(pin, n)

n 個の neopixel LEDを持つボードをmicro:bitのpin番号から制御します。
NeoPixelの関数にはshow、clearがあります。

np=neopixel.NeoPixel(pin, n) でオブジェクトを作成します。
np.show()ピクセルを表示します。
np.clear()すべてのピクセルをクリアします。


>>> import neopixel
>>> np = neopixel.NeoPixel(pin0, 8) # pin0 8 ピクセルの Neopixel ボード 
>>> np[0] = (255, 0, 0)             # 0番のRGBをセット
>>> np[7] = (255, 0, 255)           # 0番のRGBをセット

>>> print(np[0],np[7])              # RGB値を表示
(255, 0, 0) (255, 0, 255)

>>> np.show()                       # LED ON

>>> np.clear()                      # RGB値を消去
>>> print(np[0],np[7])
(0, 0, 0) (0, 0, 0)

– micro:bit V2 –

(11-02)neopixel.ws2812_write()

microbitモジュールにもありますが、使い方がわかりません。(使いません)
※将来的に変更または削除される可能性があるため文書化すること無いそうです。

まとめ

thonny-microbitのモジュール music、neopixel について記載しました。