MicroPython版の M5Stack Avatar を作ってみた

 以前の記事で MicroPython のスレッドを使ってみたときに、簡単にアバター表示をしてみました。

blog.akanumahiroaki.com

Arduino 版のアバターは @meganetaaan さんが公開されていて、こちらを参考にさせていただいています。

github.com

 前回はとりあえず自分のところで表示させるために実装してましたが、その時のアバターをもう少し使いやすくして、とは言えだいぶ雑ではありますが GitHub に載せてみました。

github.com

機能

 今のところはまだ大した機能はなく、下記のみとなっています。

  • アバターの顔表示&瞬き

  • アバターが話している風にテキストをスクロール表示する

  • 何か気づいた風にエクスクラメーションマークを表示する

  • 青ざめた感じの表情にする

 アバター表示と瞬きはそれぞれスレッドを使用して実行しています。それ以外は単純にLCDに描画しているだけです。

使い方

 使い方は単純で、 m5stack_avatar.py をダウンロードし、 main.py 等から import します。今のところは特に依存している外部ライブラリはないので、 M5Stack での開発ができる環境ができていればその他には必要ありません。

 初期化とアバターの表示までは下記のようにします。

from m5stack_avatar import M5StackAvatar

avatar = M5StackAvatar()
avatar.start()

 喋っている風にテキストをスクロール表示するには speak() メソッドを使用します。

avatar.speak('Hello from M5StackAvatarPython!!')

f:id:akanuma-hiroaki:20181124215207j:plain:w500

 エクスクラメーションを ON/OFF するには exclamation_on()/exclamation_off() メソッドを使用します。

avatar.exclamation_on()
avatar.exclamation_off()

f:id:akanuma-hiroaki:20181124215233j:plain:w500

 青ざめた感じで顔に縦線表示するのは pale_on()/pale_off() メソッドを使います。

avatar.pale_on()
avatar.pale_off()

f:id:akanuma-hiroaki:20181124215303j:plain:w500

使用例

簡単な使用例として、上記機能をループで順番に繰り返す処理は下記のようになります。

from m5stack_avatar import M5StackAvatar

import time

avatar = M5StackAvatar()
avatar.start()

while True:
    avatar.speak('Hello from M5StackAvatarPython!!')
    time.sleep(10)
    avatar.exclamation_on()
    time.sleep(5)
    avatar.exclamation_off()
    time.sleep(5)
    avatar.pale_on()
    time.sleep(5)
    avatar.pale_off()
    time.sleep(5)

 これを実行した様子は下記のような感じになります。

まとめ

ある程度汎用的に使えるようにしようと思うとなかなか難しいところも多いですね。あと太めの斜線を描画しようと思うと簡単にはいかなかったりと色々とありますが、まずは不十分でも公開してみようということで、今後機能追加や改善していけると良いなと思っています。改善点のご指摘等ありましたらぜひいただければと思います。