WADFS-35 ミニIPSディスプレイをPythonで使用する

[BitTradeOne](https://bit-trade-one.co.jp/) さんから、ちょっと面白いミニディスプレイが発売になりました。
<a href="https://bit-trade-one.co.jp/wadfs35/"><img src="https://assets.st-note.com/production/uploads/images/186251992/rectangle_large_type_2_5356ef72c216366dbc8f3f7244e28197.jpeg?width=1200"></a>

いわゆるサブモニターとして使うのではなく、
ArduinoやRaspberryPiなどマイコンで直接ディスプレイに表示するような用途を
USB接続してPCやMacから行うことができます。
マイコン側はデバッグが大変なので、処理をPC側に持ってこれるのは助かります。

自分は仕事でセンサー類を用いた実験器具を作成することがあり、
実験の計画作成やデータ保存などはPC側からPythonで行い、
センサーの読み取りや表示はArduino等マイコン側で行うことが多かったのですが、
これを使用すると表示の制御もPC側に持ってくることが可能です。

それでは使用方法を見ていきます。
Python環境がすでに入っていることを前提としています（スミマセン）。
また、今回はPython実行環境としてVSCodeを使用しています。

**使用方法**
ミニディスプレイをPCまたはMacに接続します。
製品にはいい感じに強そうなUSBケーブルが同梱されていますが、
USBA-USBCなので、Macで使用する場合は変換コネクタが必要になります。

接続すると、ミニディスプレイにテスト用の文字列が表示されます。

![IMG_4849.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/6d00815e-0fcb-4969-9931-080af461ad53.jpeg)


次に、こちらのミニディスプレイを使用するための[GitHub](https://github.com/WeActStudio/WeActStudio.SystemMonitor)からリソースを取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/6d3b5c90-a95f-4fae-88cb-9da038d58f0f.png)

ダウンロードして解凍（またはClone）したら、そのフォルダをVSCodeで開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/91ddf796-0b24-4c16-97d1-0126a1176cab.png)

simole-program.pyを開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/d144239d-d991-4fd1-8725-01a6b388e7c9.png)

実行すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/3a99f915-8445-48ed-a41a-ad321af64daf.png)
背景の上に文字やプログレスバーが表示されるデモ画面になります。

![IMG_4852.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59911/3c02006a-cbd2-40a0-a050-290b51b659f4.jpeg)

試しに
```
    lcd_comm.DisplayText("Basic text", 50, 85)
```
の部分を変更すると、表示位置や文字列を変更することができました。
背景画像は
```
background = f"res/backgrounds/example_{lcd_comm.get_width()}x{lcd_comm.get_height()}.png"
```
のように直接引っ張ってくることが可能です（↑の例では解像度で引っ張ってくる画像を変えています）。

もともとPCのステータス等を表示する用途で用意されたライブラリだけあって、
プログレスバーや円形にデザインされたグラフが用意されているようです。

```
        lcd_comm.DisplayText(str(datetime.now().time()), 160, 2,
                             font=Path(__file__).parent / "res" / "fonts" / "roboto" / "Roboto-Bold.ttf",
                             font_size=20,
                             font_color=(255, 0, 0),
                             background_image=background)

```
でテキストを表示したり、
```
        lcd_comm.DisplayRadialProgressBar(98, 260, 25, 4,
                                          min_value=0,
                                          max_value=100,
                                          value=bar_value,
                                          angle_sep=0,
                                          bar_color=(0, 255, 0),
                                          font_color=(255, 255, 255),
                                          background_image=background)
```
で円形のプログレスバーを表示したりしています。
他にも、
library > lcd > lcd_comm.pyの中を見てみると、

```
    def DisplayLineGraph(self, x: int, y: int, width: int, height: int,
                         values: List[float],
                         min_value: float = 0,
                         max_value: float = 100,
                         autoscale: bool = False,
                         line_color: Color = (0, 0, 0),
                         line_width: int = 2,
                         graph_axis: bool = True,
                         axis_color: Color = (0, 0, 0),
                         axis_font: str = str(Path(__file__).parent.parent.parent / "res" / "fonts" / "roboto" / "Roboto-Black.ttf"),
                         axis_font_size: int = 10,
                         background_color: Color = (255, 255, 255),
                         background_image: Optional[str] = None):

```
でグラフを描いたりといったことができるようです。

以上、簡単な使用方法の説明でした！