背景
LEDマトリクスには英数字を表示することができますので、hello worldと表示させてみます。
Scratch
文字列表示のブロックはマトリクスのところにありました。
「Hello Worldと文字列を表示する。
文字列はスクロール表示する。
スクロールし終わったら、表示をクリアする。」
せっかくなのでスクロール表示のブロックへの指定は変数を使いました。
終了確認用に赤色を表示しました。
スクロール表示のブロックのwaitのところをクリックすると「続ける」になります。
この状態でスタートを押すと、Hが表示しかけてすぐにマトリクスがクリアされました。
どうやら、この「続ける」は表示が終わる前に処理を続けるということのようです。
試しにディレイを入れてあげるとスクロール表示が行われました。
待っている間の確認用にフロントのLEDを点灯させました。
spheroV2
sphero_edu.pyのメソッドを参考に同様な動作をするスクリプトを作成しました。
import time
from spherov2 import scanner
from spherov2.sphero_edu import EventType, SpheroEduAPI
from spherov2.types import Color
from spherov2.utils import FrameRotationOptions
import os
import pygame
print("Testing Starting...")
print("Connecting to Bolt...")
toy = scanner.find_BOLT()
if toy is not None:
print("Connected.")
with SpheroEduAPI(toy) as api:
pygame.mixer.init(frequency=44100)
api.set_stabilization(False)
api.scroll_matrix_text("hello world", Color(r=50, g=50, b=250), 15, True)
time.sleep(3)
api.clear_matrix()
api.set_main_led(Color(r=50, g=0, b=0)) #Sets whole Matrix
time.sleep(1)
else:
print("Failed to connect to Sphero.")
実行結果はこちらのようになりました。
ここではworldのoの途中まで表示した時点でマトリクスがクリアされました。
git\spherov2.py\spherov2\test>python BoltTest_matrix2.py
pygame 2.6.1 (SDL 2.28.4, Python 3.12.7)
Hello from the pygame community. https://www.pygame.org/contribute.html
Testing Starting...
Connecting to Bolt...
Connected.
sphero_edu.pyのscroll_matrix_textメソッドを見ると、waitについては未実装のようです。
まとめ
Scratchの文字表示スクロールを作成してみました。
waitは文字数とスクロール速度から計算したディレイ時間を追加するとよいかもしれません。