LEGO Mindstorms EV3(以降EV3)を使った記事など書く際に、画像を差し込むことがある。EV3をBluetooth接続する際など状況を説明するのにEV3の画面の表示を用いて説明したい時もあるだろう。今回はそうしたEV3のLCD画面のスクリーンショットの撮影方法を記していく。
EV3について
本記事内での環境
-
PC
Windows10
Python 3.7.3
開発環境 VisualStudioCode -
EV3
ev3dev
APIリファレンス
※環境構築やVSCodeでのソース作成やEV3への転送・実行方法は以下を参照
EV3×Pyrhon 機械学習その1 環境構築編
スクリーンショットを撮影するにはVSCodeが必須なので注意。
無線での接続~撮影
まずはEV3とPCをBluetooth接続する。
接続方法はこちらを参照。
その後VSCodeのev3dev拡張機能よりEV3にアクセスする。
アクセスが完了すると緑の丸が表示される。
アクセスしているEV3名の上で左クリックをするとメニューが表示されるのでTake Screenshot
を選択。
すると撮影結果のウィンドウがVSCode上に表示される。
ウィンドウ上部にPNG画像が格納されているフォルダーのパスが表示される。
※このフォルダーはVSCodeの一時ファイルなのでVSCodeを閉じると消えることに注意!
VSCodeを閉じる前にPNG画像を移動するなどバックアップを取る必要がある。
実際のPNGファイルは以下のように出力される。
LCDの白黒画面とは変わって、選択している箇所は青色で表示される。
有線での接続~撮影
Bluetooth接続時の手順解説の際など、無線接続前の状態のLCD画面を撮影したい場合
EV3とPCをUSBケーブルで接続することで同じようにVSCodeからアクセスすことができる。
まずはEV3とPCをUSBケーブルを用いて接続する。Bluetooth接続時のような設定は特に不要。
その後、VSCodeのev3devよりEV3にアクセスする。
Bluetooth時にはBluetooth ネットワーク接続
となっていた表記がUSB接続時はイーサネット 7
の表記になっている。
同じようにアクセスしているEV3名の上で左クリックし、メニューからTake Screenshot
を選択することでUSB接続時のLCD画面のスクリーンショットが撮影できる。
プログラム実行時のLCD画面撮影
上記2つの手順をプログラム実行時に行えば、LCDに表示させている文字なども撮影可能である。
今回は以下のようなプログラムをVSCode上で作成し、EV3で実行した際のLCD画面の撮影を行う。
プログラムの作成方法や転送方法はこちらを参照。
from ev3dev2.display import Display
import ev3dev2.fonts as fonts
import time
screen = Display()
screen.clear()
font = fonts.load('luBS12')
def main():
screen.draw.text((10, 10), 'Test1 Display String!', font=font)
screen.draw.text((10, 30), 'Test2!', font=font)
screen.update()
time.sleep(5.0)
screen.clear()
if __name__ == "__main__":
main()
プログラムを作成したらVSCode上で以下のマークをクリックしてEV3にWorkspaceを転送する。
転送後、SSHターミナルを開き、cd ev3workspace/
(cd ワークスペース名/)を実行し
python3 display.py
を実行する。
プログラムが実行されたら5秒間LCD画面に文字列が表示されるのでその間にTake Screenshot
を選択する。