【M5Stack初心者向け】UIFlowでM5Stackのディスプレイに写真を表示させる時の細かい注意点

先日M5Stackを使ったハッカソンに参加しました。
その時に初めてUIFlowを触ったのですが、ディスプレイに写真を表示させる時に自分がつまづいたところを備忘録でまとめておこうと思います。

UIFlowでM5Stackを使ってみようと思ってる初心者の方にも参考になれば幸いです！

#画像をセットする方法
こちらに関しては、[M5Stack UI Flowを使ってみよう～画像（イメージ）を配置する～](http://www.openspc2.org/reibun/M5/UI-Flow/1.3.2/UI/image/0001/index.html)の記事をご覧ください！
簡潔にまとめられています♪
#ボタンを押したときに画像を表示させる
私が使ったM5Stack Basicはボタンが３つあって、左からAボタン、Bボタン、Cボタンとなっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670338/723cad78-dd88-4d7b-a627-0296f5f78ed8.png)
Aボタンを押したときに画像がディスプレイに表示されるようにしてみましょう！
[![Image from Gyazo](https://i.gyazo.com/d192fbcb72998ee40d88bd50b7b45355.png)](https://gyazo.com/d192fbcb72998ee40d88bd50b7b45355)
UIFlowで上記のようにブロックを組みましたが、画像は表示されませんでした＞＜

Setupは最初の表示画面になるので、このフローだと「もしA wasPressedであれば」が読み込まれていないことになります。
以下のように修正すると、エラーが解決されます！
[![Image from Gyazo](https://i.gyazo.com/b4ada267f2a357e8eeaea5d158fe1786.png)](https://gyazo.com/b4ada267f2a357e8eeaea5d158fe1786)
こうすることで、最初（Setup時）はimageを隠すようにしていましたが
「ずっと」のイベント内で「もしA wasPressedであれば」が読み込まれ、
Aボタンが押された時に「jason.jpg」の画像がディスプレイに表示されるようになりました。

#センサーを使ってパラメータに応じて画像を表示させる

私は光センサーを繋いで、明るさを読み取って画像を表示させるようにしました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【備忘録】<br>M5Stackと光センサの繋げ方<br>36、SV、Gにぶっ刺すっと✍<br> <a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://twitter.com/hashtag/%E3%83%92%E3%83%BC%E3%83%AD%E3%83%BC%E3%82%BA%E3%83%AA%E3%83%BC%E3%82%B0?src=hash&amp;ref_src=twsrc%5Etfw">#ヒーローズリーグ</a> <a href="https://t.co/f7FxMma6d5">pic.twitter.com/f7FxMma6d5</a></p>&mdash; カレー大好き★たわちゃん (@tawachan1128) <a href="https://twitter.com/tawachan1128/status/1307246013032267776?ref_src=twsrc%5Etfw">September 19, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

光センサーを36ピンに刺して、そこから値を取得するので、以下のようにブロックを組みます。
[![Image from Gyazo](https://i.gyazo.com/d82d3b5f0cc7b239ded0f9b838a8e46d.png)](https://gyazo.com/d82d3b5f0cc7b239ded0f9b838a8e46d)
私は、少しでも明るければ反応するようにしたかったので、値が0より大きい時としています。

###（ちょっと応用編）音も鳴らしつつ、画像の背景色を赤にする
[![Image from Gyazo](https://i.gyazo.com/ca18fd3fbaaa224f88aebc725bc322a4.png)](https://gyazo.com/ca18fd3fbaaa224f88aebc725bc322a4)
こうなります。
注意点は、音をピーピー断続的にしたいときは停止をちゃんと入れること。
あと、__ブロックは上から順に処理されていく__ので
「画面の背景色を赤色に設定する」を一番下に持っていくと
画像も上書きされて画面が赤くなっちゃうので気を付けましょう！！

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">結局いつもこうなる <a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a><a href="https://twitter.com/hashtag/%E3%83%92%E3%83%BC%E3%83%AD%E3%83%BC%E3%82%BA%E3%83%AA%E3%83%BC%E3%82%B0?src=hash&amp;ref_src=twsrc%5Etfw">#ヒーローズリーグ</a><a href="https://twitter.com/hashtag/jasonstatham?src=hash&amp;ref_src=twsrc%5Etfw">#jasonstatham</a> <a href="https://t.co/K7hLH57oCX">pic.twitter.com/K7hLH57oCX</a></p>&mdash; カレー大好き★たわちゃん (@tawachan1128) <a href="https://twitter.com/tawachan1128/status/1307228989786714112?ref_src=twsrc%5Etfw">September 19, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#画像をディスプレイに中央に表示させる方法
[![Image from Gyazo](https://i.gyazo.com/7ed75f50caf15089672c972b7a635bb0.png)](https://gyazo.com/7ed75f50caf15089672c972b7a635bb0)
このように、中央に表示させることにこだわりたくて色々調べた結果、
以下のような方法をとりました。

まず、ディスプレイの大きさは幅319×高さ239となっています。

そこに入るように、表示させたい画像を縦横比を維持したまま幅300ぐらいでサイズ変更し、
変更後の寸法を確認します。
[![Image from Gyazo](https://i.gyazo.com/0f34ce7086f7711366b0af8e70a901e7.png)](https://gyazo.com/0f34ce7086f7711366b0af8e70a901e7)
今回は幅300×高さ167の画像になりました。
そのため、中央表示するには、余白は下図のようになります。
[![Image from Gyazo](https://i.gyazo.com/a1eea031ff77ef0b388e5d1a9181c4c4.png)](https://gyazo.com/a1eea031ff77ef0b388e5d1a9181c4c4)
UIFlowのimage0設定のところでxとyという項目があるので、以下のように入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670338/ecd4ec5f-044a-fa75-b54d-2cf4f561471e.png)
ちなみに、xとyはここの数値を表してます。
[![Image from Gyazo](https://i.gyazo.com/73df5a6b6ebe56c8fa10b00daae364bd.png)](https://gyazo.com/73df5a6b6ebe56c8fa10b00daae364bd)
これで綺麗に写真を表示することができます♪

#（番外編）突然のエラー
[![Image from Gyazo](https://i.gyazo.com/48e026832c8c9ce71809220a014dca91.png)](https://gyazo.com/48e026832c8c9ce71809220a014dca91)
写真をアップロードすると、画像のようにアップロードしたファイル一覧が表示されるのですが、
ずっと使っていると急にファイルが表示されなくなるエラーが起きました。

何度やってもうまくいかず、結果再度BurnしてM5Stackと繋ぎ直したらなおりました。

一気に働かせすぎるとパンクしちゃうみたいです！
とりあえず何かあったらBurnをし直してみる！って覚えておいてもいいかもですね！