Help us understand the problem. What is going on with this article?

Python-LEGO MindstormsでLCDのスクリーンショットを撮る

LEGO Mindstorms EV3(以降EV3)を使った記事など書く際に、画像を差し込むことがある。EV3をBluetooth接続する際など状況を説明するのにEV3の画面の表示を用いて説明したい時もあるだろう。今回はそうしたEV3のLCD画面のスクリーンショットの撮影方法を記していく。

EV3について

教育版 LEGO® MINDSTORMS EV3

本記事内での環境

※環境構築やVSCodeでのソース作成やEV3への転送・実行方法は以下を参照
 EV3×Pyrhon 機械学習その1 環境構築編
 スクリーンショットを撮影するにはVSCodeが必須なので注意。

無線での接続~撮影

まずはEV3とPCをBluetooth接続する。
接続方法はこちらを参照。

その後VSCodeのev3dev拡張機能よりEV3にアクセスする。

1.png
アクセスが完了すると緑の丸が表示される。
アクセスしているEV3名の上で左クリックをするとメニューが表示されるのでTake Screenshotを選択。
2.png

すると撮影結果のウィンドウがVSCode上に表示される。
ウィンドウ上部にPNG画像が格納されているフォルダーのパスが表示される。
3.png
※このフォルダーはVSCodeの一時ファイルなのでVSCodeを閉じると消えることに注意!
 VSCodeを閉じる前にPNG画像を移動するなどバックアップを取る必要がある。

実際のPNGファイルは以下のように出力される。
LCDの白黒画面とは変わって、選択している箇所は青色で表示される。
3-1.png

有線での接続~撮影

Bluetooth接続時の手順解説の際など、無線接続前の状態のLCD画面を撮影したい場合
EV3とPCをUSBケーブルで接続することで同じようにVSCodeからアクセスすことができる。

まずはEV3とPCをUSBケーブルを用いて接続する。Bluetooth接続時のような設定は特に不要。
10.png
その後、VSCodeのev3devよりEV3にアクセスする。
Bluetooth時にはBluetooth ネットワーク接続となっていた表記がUSB接続時はイーサネット 7の表記になっている。
4.png

同じようにアクセスしているEV3名の上で左クリックし、メニューからTake Screenshotを選択することでUSB接続時のLCD画面のスクリーンショットが撮影できる。
5.png

実際のPNGファイルは以下のように出力される。
5-2.png

プログラム実行時のLCD画面撮影

上記2つの手順をプログラム実行時に行えば、LCDに表示させている文字なども撮影可能である。

今回は以下のようなプログラムをVSCode上で作成し、EV3で実行した際のLCD画面の撮影を行う。
プログラムの作成方法や転送方法はこちらを参照。

display.py
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を転送する。
5-1.png

転送後、SSHターミナルを開き、cd ev3workspace/(cd ワークスペース名/)を実行し
python3 display.pyを実行する。
6.png
7.png

プログラムが実行されたら5秒間LCD画面に文字列が表示されるのでその間にTake Screenshotを選択する。
8.png

プログラムによってLCD画面に文字列が表示されている状態のスクリーンショットが撮影される。
9.png

実際のPNGファイルは以下のように出力される。
プログラム実行時の背景は黄色で表示される。
9-1.png

Hiroki-Fujimoto
AI初心者ががちゃがちゃやってみた記事を投稿していく!
https://ai.afrel.co.jp/
afrel
明るい未来づくりに向けて教育支援サービスを提供します。
http://afrel.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away