バックグラウンド動作確認

課題

バックグラウンド動作の確認

目的

display.showとspeech.singの並行動作を確認する

手順

アニメーションを描画するdisplay.showメソッドにてオプションwait=Falseを指定する

ソースコード

from microbit import *

import speech # link speech-function

# 目的:display.showとspeech.singの並行動作を確認する

# define notes pitch & phoneme

solfa1 = [

"#39SOHWWWWW", # Soh

"#58DOWWWWWW", # Doh

"#35LAOAOAOAOR", # La

"#44FAOAOAOAOR", # Fa

"#46MIYYYYYY", # Mi

"#58DOWWWWWW", # Doh

"#52REYYYYYY" # Re

]

solfa2 = [

"#39SOHWWWWW", # Soh

"#58DOWWWWWW", # Doh

"#35LAOAOAOAOR", # La

"#31SHEYYYYY", # Ti

"#29DOWWWWWW", # Doh

"#26REYYYYYY", # Re

"#29DOWWWWWW" # Doh

]

song1 = ''.join(solfa1)

song2 = ''.join(solfa2)

# define diamond-open

dia0 = Image("00000:"

"00100:"

"01210:"

"00100:"

"00000")

dia1 = Image("00100:"

"01210:"

"12321:"

"01210:"

"00100")

dia2 = Image("00200:"

"02320:"

"23432:"

"02320:"

"00200")

dia3 = Image("00300:"

"03430:"

"34543:"

"03430:"

"00300")

dia4 = Image("00400:"

"04540:"

"45654:"

"04540:"

"00400")

dia5 = Image("00500:"

"05650:"

"56765:"

"05650:"

"00500")

dia6 = Image("00600:"

"06760:"

"67876:"

"06760:"

"00600")

dia7 = Image("00700:"

"07870:"

"78987:"

"07870:"

"00700")

diam_open = [dia0, dia1, dia2, dia3, dia4, dia5, dia6, dia7]

diam_close = [dia7, dia6, dia5, dia4, dia3, dia2, dia1, dia0]

# display.showの完了を待たずに、speech.singを開始する

display.show(diam_open, wait=False, delay=560)

speech.sing(song1, speed=90)

# アニメーションdiam_openとほぼ同時に前半を歌い終わる

display.show(Image.CHESSBOARD)

sleep(900)

display.show(diam_close, wait=False, delay=560, clear=True)

speech.sing(song2, speed=90)

# アニメーションdiam_closeとほぼ同時に後半を歌い終わる

ソース・ファイル

010-doremi-no-uta-without-waiting-diamond-R1.py

Hexファイル

010-doremi-no-uta-without-waiting-diamond-R1.hex

実験

①Reset-SWを押しプログラムを開始すると…

②Diamond-open動画と並行して、ドレミの歌が歌われている…

③前半の後チェスボードが広がり…

④Dimond-close動画と同時に後半を歌う…

結論

アニメーションを描画するdisplay.showメソッドにてオプションwait=Falseを指定するとバックグラウンドで動作し、次のspeech.singと並行して作動することを確認した。