バックグラウンド動作確認
課題
バックグラウンド動作の確認
目的
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と並行して作動することを確認した。