2021/12/13
マイクロビット(m_03)microbit.Image
Image
前回からの続きになります。
イメージの表示
組込みのイメージオブジェクトなどを display()で表示できます。「HAPPY」は組込のイメージです。組込みイメージの一覧とデータは下方に載せています。
from microbit import *
#HAPPYの表示
display.show(Image.HAPPY)
イメージをリスト形式で表示
イメージをリスト形式のデータとして表示できます。リストデータに文字、数字、組込みイメージが混在しても表示できます。
from microbit import *
A_list = [Image.HAPPY, 'A', Image.SAD]
#mix_list = ["hello!", 1.234, Image.HAPPY]
display.show(A_list, loop=False, delay=500)
display.clear()
sleep(1000)
Image.HAPPY>>’A’>>Image.SADが順次表示されます。mix_listのように文字、数字、イメージが混在しても表示できます。
ALL_ARROWS(矢印)、ALL_CLOCKS(時計の針)
ALL_ARROWS、ALL_CLOCKSはリスト化された組込みイメージです。確認すると以下のようなデータになっています。
>>> Image.ALL_CLOCKS
(Image('00900:00900:00900:00000:00000:'), Image('00090:00090:00900:00000:00000:'), Image('00000:00099:00900:00000:00000:'), Image('00000:00000:00999:00000:00000:'), Image('00000:00000:00900:00099:00000:'), Image('00000:00000:00900:00090:00090:'), Image('00000:00000:00900:00900:00900:'), Image('00000:00000:00900:09000:09000:'), Image('00000:00000:00900:99000:00000:'), Image('00000:00000:99900:00000:00000:'), Image('00000:99000:00900:00000:00000:'), Image('09000:09000:00900:00000:00000:'))
>>> Image.ALL_ARROWS
(Image('00900:09990:90909:00900:00900:'), Image('00999:00099:00909:09000:90000:'), Image('00900:00090:99999:00090:00900:'), Image('90000:09000:00909:00099:00999:'), Image('00900:00900:90909:09990:00900:'), Image('00009:00090:90900:99000:99900:'), Image('00900:09000:99999:09000:00900:'), Image('99900:99000:90900:00090:00009:'))
リストデータ化されているので、それぞれ
>>> display.show(Image.ALL_ARROWS,1000)
>>> display.show(Image.ALL_CLOCKS,1000)
で確認できます。
#組込みイメージを順次表示
組込みのイメージをリストデータ化すれば順次に確認できます。
from microbit import *
A_list=[Image.ANGRY,Image.ARROW_E,Image.ARROW_N,Image.ARROW_NE,Image.ARROW_NW,
Image.ARROW_S,Image.ARROW_SE,Image.ARROW_SW,Image.ARROW_W,Image.ASLEEP,
Image.BUTTERFLY,Image.CHESSBOARD,Image.CLOCK1,Image.CLOCK10,Image.CLOCK11,
Image.CLOCK12,Image.CLOCK2,Image.CLOCK3,Image.CLOCK4,Image.CLOCK5,
Image.CLOCK6,Image.CLOCK7,Image.CLOCK8,Image.CLOCK9,Image.CONFUSED,
Image.COW,Image.DIAMOND,Image.DIAMOND_SMALL,Image.DUCK,Image.FABULOUS,
Image.GHOST,Image.GIRAFFE,Image.HAPPY,Image.HEART,Image.HEART_SMALL,
Image.HOUSE,Image.MEH,Image.MUSIC_CROTCHET,Image.MUSIC_QUAVER,
Image.MUSIC_QUAVERS,Image.NO,Image.PACMAN,Image.PITCHFORK,Image.RABBIT,
Image.ROLLERSKATE,Image.SAD,Image.SILLY,Image.SKULL,Image.SMILE,
Image.SNAKE,Image.SQUARE,Image.SQUARE_SMALL,Image.STICKFIGURE,
Image.SURPRISED,Image.SWORD,Image.TARGET,Image.TORTOISE,Image.TRIANGLE,
Image.TRIANGLE_LEFT,Image.TSHIRT,Image.UMBRELLA,Image.XMAS,Image.YES]
#A_list = [Image.HAPPY, Image.SAD,Image.YES]
for img in A_list:
display.show(img)
sleep(1000)
display.clear()
イメージの文字列表現
repr(image)、str(image)
イメージを文字列にします。どういう場面で使うのかよくわかりません・・。
>>> img1
Image('11111:11111:11111:11111:11111:')
>>> type(img1)
<class 'MicroBitImage'>
>>> repr(img1)
"Image('11111:11111:11111:11111:11111:')"
>>> type(repr(img1))
<class 'str'>
>>> str(img1)
"Image(\n '11111:'\n '11111:'\n '11111:'\n '11111:'\n '11111:'\n)"
>>> type(str(img1))
<class 'str'>
※repr、strの使い分けが分かりませんが、上記のようにテータの中身は異なっていました。
>>> from microbit import *
>>> img=Image()
>>> img.fill(9)
#strで文字列にする
>>> smg=str(img)
>>> smg
"Image(\n '99999:'\n '99999:'\n '99999:'\n '99999:'\n '99999:'\n)"
#reprで文字列にする
>>> rmg=repr(img)
>>> rmg
"Image('99999:99999:99999:99999:99999:')"
#imgはイメージなのでscroll出来ない、エラーになる
>>> display.scroll(img)
Traceback (most recent call last):
File "", line 1, in
TypeError: can't convert 'MicroBitImage' object to str implicitly
#smg、rmg は文字なのでスクロールします。イメージを文字列にした文字列がスクロール。
>>> display.scroll(smg)
>>> display.scroll(rmg)
イメージの演算
イメージ明るさの足し算、引き算、掛け算ができるようです。
image1 + image2 明るさを足した新しいイメージ
image * n 明るさを n 倍
>>> img1
Image('11111:11111:11111:11111:11111:')
>>> img2
Image('22222:22222:22222:22222:22222:')
>>> img1+img2 # 足し算
Image('33333:33333:33333:33333:33333:')
>>>
>>> img1*4 # 掛け算
Image('44444:44444:44444:44444:44444:')
>>>
引き算もできます。 マイナスになると「0」になります。
>>> img1.fill(1)
>>> img2.fill(2)
>>> img3=img1+img2
>>> img3
Image('33333:33333:33333:33333:33333:')
>>> img5=img2+img3
>>> img5
Image('55555:55555:55555:55555:55555:')
>>> img5-img3 # 引き算できる
Image('22222:22222:22222:22222:22222:')
>>> img3-img5 # マイナスはない'0'になる
Image('00000:00000:00000:00000:00000:')
>>>
組込みイメージ一覧
以下のイメージが組込みされています。
Image.ALL_ARROWS
Image.ALL_CLOCKS
Image.ANGRY Image('90009:09090:00000:99999:90909:')
Image.ARROW_E Image('00900:00090:99999:00090:00900:')
Image.ARROW_N Image('00900:09990:90909:00900:00900:')
Image.ARROW_NE Image('00999:00099:00909:09000:90000:')
Image.ARROW_NW Image('99900:99000:90900:00090:00009:')
Image.ARROW_S Image('00900:00900:90909:09990:00900:')
Image.ARROW_SE Image('90000:09000:00909:00099:00999:')
Image.ARROW_SW Image('00009:00090:90900:99000:99900:')
Image.ARROW_W Image('00900:09000:99999:09000:00900:')
Image.ASLEEP Image('00000:99099:00000:09990:00000:')
Image.BUTTERFLY Image('99099:99999:00900:99999:99099:')
Image.CHESSBOARD Image('09090:90909:09090:90909:09090:')
Image.CLOCK1 Image('00090:00090:00900:00000:00000:')
Image.CLOCK2 Image('00000:00099:00900:00000:00000:')
Image.CLOCK3 Image('00000:00000:00999:00000:00000:')
Image.CLOCK4 Image('00000:00000:00900:00099:00000:')
Image.CLOCK5 Image('00000:00000:00900:00090:00090:')
Image.CLOCK6 Image('00000:00000:00900:00900:00900:')
Image.CLOCK7 Image('00000:00000:00900:09000:09000:')
Image.CLOCK8 Image('00000:00000:00900:99000:00000:')
Image.CLOCK9 Image('00000:00000:99900:00000:00000:')
Image.CLOCK10 Image('00000:99000:00900:00000:00000:')
Image.CLOCK11 Image('09000:09000:00900:00000:00000:')
Image.CLOCK12 Image('00900:00900:00900:00000:00000:')
Image.CONFUSED Image('00000:09090:00000:09090:90909:')
Image.COW Image('90009:90009:99999:09990:00900:')
Image.DIAMOND Image('00900:09090:90009:09090:00900:')
Image.DIAMOND_SMALL Image('00000:00900:09090:00900:00000:')
Image.DUCK Image('09900:99900:09999:09990:00000:')
Image.FABULOUS Image('99999:99099:00000:09090:09990:')
Image.GHOST Image('99999:90909:99999:99999:90909:')
Image.GIRAFFE Image('99000:09000:09000:09990:09090:')
Image.HAPPY Image('00000:09090:00000:90009:09990:')
Image.HEART Image('09090:99999:99999:09990:00900:')
Image.HEART_SMALL Image('00000:09090:09990:00900:00000:')
Image.HOUSE Image('00900:09990:99999:09990:09090:')
Image.MEH Image('09090:00000:00090:00900:09000:')
Image.MUSIC_CROTCHET Image('00900:00900:00900:99900:99900:')
Image.MUSIC_QUAVER Image('00900:00990:00909:99900:99900:')
Image.MUSIC_QUAVERS Image('09999:09009:09009:99099:99099:')
Image.NO Image('90009:09090:00900:09090:90009:')
Image.PACMAN Image('09999:99090:99900:99990:09999:')
Image.PITCHFORK Image('90909:90909:99999:00900:00900:')
Image.RABBIT Image('90900:90900:99990:99090:99990:')
Image.ROLLERSKAT Image('00099:00099:99999:99999:09090:')
Image.SAD Image('00000:09090:00000:09990:90009:')
Image.SILLY Image('90009:00000:99999:00909:00999:')
Image.SKULL Image('09990:90909:99999:09990:09990:')
Image.SMILE Image('00000:00000:00000:90009:09990:')
Image.SNAKE Image('99000:99099:09090:09990:00000:')
Image.SQUARE Image('99999:90009:90009:90009:99999:')
Image.SQUARE_SMALL Image('00000:09990:09090:09990:00000:')
Image.STICKFIGURE Image('00900:99999:00900:09090:90009:')
Image.SURPRISED Image('09090:00000:00900:09090:00900:')
Image.SWORD Image('00900:00900:00900:09990:00900:')
Image.TARGET Image('00900:09990:99099:09990:00900:')
Image.TORTOISE Image('00000:09990:99999:09090:00000:')
Image.TRIANGLE Image('00000:00900:09090:99999:00000:')
Image.TRIANGLE_LEFT Image('90000:99000:90900:90090:99999:')
Image.TSHIRT Image('99099:99999:09990:09990:09990:')
Image.UMBRELLA Image('09990:99999:00900:90900:09900:')
Image.XMAS Image('00900:09990:00900:09990:99999:')
Image.YES Image('00000:00009:00090:90900:09000:')
まとめ
microbitモジュールのImageについて前回からの残件について記載しました。明るさの演算ができるのは面白い気がしました。文字も簡単にImageでデータ化できるので便利かもしれません。