蓄光シートにATOM Matrix + toio™️ core cube + 紫外線LEDで文字を描いてみた

<img src="https://drive.google.com/uc?id=1yxskItYBQwe69SUaH9fUDBpYievXIzIu" width=50%/>

本記事のまとめ動画  https://youtu.be/0Ofy3T3seUU (YouTube 約2分30秒)

　Advent Calender用に「[蓄光シートで(略)](https://qiita.com/kenichih/items/df4b5406a0db65d71947)」からもうひとネタということで... 複数の紫外線LEDを使って文字を描く、をやってみます。
　いわゆるドットプリンタ方式ですね。
　前回(「[蓄光シートで(略)](https://qiita.com/kenichih/items/df4b5406a0db65d71947)」)はM5StickCでしたが、今回はGPIOがたくさん使えるATOM Matrixを使います。

 注意：前回(「[蓄光シートで(略)](https://qiita.com/kenichih/items/df4b5406a0db65d71947)」)同様、紫外線LEDを使いますので、**紫外線LEDの光を直視しないでください。眼に回復不能の視覚障害が出る可能性があります。**

#ハードウェア
## 材料
- 紫外線LED(砲弾型) 5個
    - [秋月電子](https://akizukidenshi.com/catalog/c/cv5mm/)、[マルツ](https://www.marutsu.co.jp/pc/i/838664/)が安いようです。波長は紫外線領域であれば蓄光塗料は反応しますのでどれでも良いです。
- M5 ATOM Matrix　1個 
    - ATOM Liteでもかまいません(表側LEDマトリクスによる文字表示ができないだけです)
- M5 TailBat 1個
    - ATOMはバッテリーがないので必須
- toio™️ core cube 1個
    - トッププレートもあったほうが良いです。
- ユニバーサル基板の切れ端　適量
    - 片面ランドの基板でもできますが、両面ランドのもののほうが固定がしっかりします。
- 2.54mmヘッダピン　1列4pin、1列5pin ひとつづつ
- はんだ 適量
- 線材 適量
- 蓄光シート  「[蓄光シートで(略)](https://qiita.com/kenichih/items/df4b5406a0db65d71947)」で説明してありますが、厚紙やプラ板などに塗料を塗って作っておきます。

<img src="https://drive.google.com/uc?id=10oDbHWH5l0oT3WXiyFlmaVx6vpZjTJ82" width=50% alt="部品"/>

## 作り方
　まず紫外線LEDを1列にそろえてはんだ付けします。ユニバーサル基盤を細く切り出し、て紫外線LEDを一列にぴったり並べ、紫外線LEDの根元ではんだ付けして固定します。今回5mmの砲弾型LEDを使ったので、フチの部分をちょっと削らないとぴったり並べることができませんのでニッパーなどで切り飛ばしてください。
　足の短い方、長いほうそれぞれが一列に並ぶようにします。(短いほうは全部GNDに配線します。)
<img src="https://drive.google.com/uc?id=1cIcGY1ZVk0g_HYNHiBl01Xa3SQAQ1HSv" width=50% alt="紫外線LEDを一列にそろえて根元をはんだ付けして固定" />

　次に、Atom matrixとだいたい同じ大きさに切ったユニバーサル基盤(穴が横10個、縦8個残るように折とったサイズがちょうどよいです)に1列4pinと1列5pinのヘッダピンをAtom matrixのピンソケットに刺さる位置で植えてはんだで固定します。
<img src="https://drive.google.com/uc?id=1q9BDMp4jFA9c3j2KCICwE3nAtj8uxJMa" width=50% />

　このヘッダピンを植えた基盤と、先ほどの紫外線LEDを一列に固定した基盤をいい感じの距離ではんだ付けして固定します。
　足の短いほう(カソード側)を外側にします。(アノード側をATOM MatrixののGPIOに繋ぐため)
　あとでtoio™️ core cubeと合体したときに、紫外線LEDのの先がtoio™️ core cubeの車輪の接地面のちょい上、になるぐらいの距離にします。距離がうまく調整できない場合は、若干突き出し気味にしておいて、toio™️ core cubeと合体するときに厚みのある紙などを挟んで高さを調整するようにすると良いでしょう。
<img src="https://drive.google.com/uc?id=1u0cAURpsbzkFTX62_TmPg76VK-Dctw6V" width=50% alt="ATOMと接続する側" title="ATOMと接続する側" /><img src="https://drive.google.com/uc?id=1E1YBSfc4b5585H_gkOdoMSqCTqOx5gkb" width=50% alt="足の高さはこれくらい" title="足の高さはこれくらい"/>

　配線していきます。紫外線LEDの足の切れ端や、適当な線材で繋いでゆきます。
　紫外線LED５個のカソード側を全部つないで、ATOM MatrixのGNDへつなぎます。
　紫外線LEDのアノード側は個別にATOM MatrixのGPIOにつなぎます。
　紫外線LEDのの列の端から順にG22、G19、G23、G33、G21 につなぎます。ATOM Matrix/Liteはどのピンもデジタルアウトとして使えるようなのでどのピンを使ってもいいです。変えた場合はソフトウェア(Arduinoスケッチ)側でピン割当を調整してください。
<img src="https://drive.google.com/uc?id=19I8oYKabzzGMIybCZoLkLGcfdDjg6yUp" width=50% alt="配線中" title="配線中"/><img src="https://drive.google.com/uc?id=1klm50EitOil6S5oWi7xZ9mhahEbae8jv" alt="簡易実体配線図" title="簡易実体配線図" width=50% />

## [合体、合体、合体](https://www.youtube.com/watch?v=S9JGglSsQ_w&t=32)

　出来上がった紫外線LED基板とATOM Matrixを合体します。
<img src="https://drive.google.com/uc?id=1Bgv0tWiMrv6_DLJQsKuYQGyUH9R3g8wv" width=33% /><img src="https://drive.google.com/uc?id=1hnmKt_tZ64ydSpeNst3cAWG5SrQtMh5Z" width=33% /><img src="https://drive.google.com/uc?id=1OaxQR2WFSgTkOKmfu1bS-Zj6cmB3C9nK" width=33% />

　さらにM5 TailBat と合体。
<img src="https://drive.google.com/uc?id=1b6rAmTeEBzD3K4t_1ueCWzfp62RxedJ8" width=50% />

　最後にtoio™️ core cubeと合体。
<img src="https://drive.google.com/uc?id=1wVKOCs0ZOcFRDrAxwnlyEP3BT9j_DxC-"  width=33% /><img src="https://drive.google.com/uc?id=1O2klV1mThCK3W-T0CEcuEc7W56eqSJFH"  width=33% /><img src="https://drive.google.com/uc?id=1XHbOP_fQ2LulY9W6lmPUBvTx2XMQENG_" width=33% />
<img src="https://drive.google.com/uc?id=14-tlkAZFpDM2bSiI2SUEhlTiIb1B7sg3"  width=33% /><img src="https://drive.google.com/uc?id=1ZEkmeRTfeF06iQUnUcD4s1q7YMzLpHjO"  width=33% />

　高さを確認、場合によっては紙などをはさんで調整してください。紫外線LEDが地面(蓄光シート)に擦らないギリギリの高さがベストです。(擦っているとまっすぐ走りません)

#ソフトウェア
　今回、Arduino IDEでM5atom用スケッチとして書きました。5x5のドットフォントは、「[5x5 dots](https://www.dafont.com/5x5-dots.font)」と、「[5×5ドットフォント完成版](https://wentwayup.tamaliver.jp/e93615.html)」を参考に作成しました。
　ATOM Matrixの5x5 LEDに文字をスクロール表示しつつ、紫外線LEDの点灯制御を行い、1ライン(5ドット)づつ移動しながら蓄光シートに文字をプリントしてゆきます。
　toio™️ core cubeの移動速度と、紫外線LEDの点灯時間をいい感じに(toio™️ core cubeの移動速度15から20、紫外線LEDの発光時間100ms〜120msぐらい　塗料やLEDの性能によって変わります)合わせると...冒頭の動画のよう文字が流れ、蓄光シートにプリントされます。
<img src="https://drive.google.com/uc?id=1kKRks5AHoGqvYoEvdQ-WYshEoZXaeQ_b" width=20%/><img src="https://drive.google.com/uc?id=199Ym2UjBn8szbWKVKWHMzI4zSsAYVer8" width=20% /><img src="https://drive.google.com/uc?id=1_-HwHtRvOatHrsM5PeVYCeD_O_PgLdsg" width=20%  /><img src="https://drive.google.com/uc?id=1Cl2X5KwBRnvXA4WSWIpC9RZ8kchMfF-m" width=20% /><img src="https://drive.google.com/uc?id=1aYKv1R-SUdiNX4ozN_Us3TRE8j2v1l46" width=20%  />

　折り返しながらの複数行表示もチャレンジしてみましたが、シートが(塗料の塗りが悪くて)でこぼこのため、きれいにターンできたりできなかったりでなかなかうまくいきません。塗料をスプレーで塗るか、塗装済みのシートを使うなどの工夫が必要そうです。
<img src="https://drive.google.com/uc?id=1RmafL0NF7KEFiSPKnU1ERkBCHynE-0TF" alt="toio❤︎ Advent Calender" title="toio❤︎ Advent Calender" width=50% />

#サイバーパンクめいたアトモスフィア
 暗闇で緑色に鈍く光るカタカナがネオサイタマ感満点だったので...

<img src="https://drive.google.com/uc?id=1wrsH-sLcwB0Wu18JzjV1Rrpo36tPrYH4" alt="ドーモ　トイオコアキューブデス"  title="ドーモ　トイオコアキューブデス" width=50%  />
<img src="https://drive.google.com/uc?id=1ZjlO2lfbyY1HVyTs4g1xVd6MVb6Cyx6Z" alt="ニンジャ!? ニンジャナンデ!?" title="ニンジャ!? ニンジャナンデ!?" width=50% />
<img src="https://drive.google.com/uc?id=1M7qjxjznGL8mTdH8P_fbw0qhRbbvXo85" alt="マルノウチ　スゴイタカイビル" title="マルノウチ　スゴイタカイビル" width=50%  />
<img src="https://drive.google.com/uc?id=1NQW0kJ0wn82mBvifFM7NgzAlUqw7Yk8U" alt="インガオホー　オタッシャデー" title="インガオホー　オタッシャデー" width=50%  />
<img src="https://drive.google.com/uc?id=1CotcKEBpT_9OML_KuA262Y1DWoLo5cky" alt="ワタシtoioチョットデキル" title="ワタシtoioチョットデキル" width=50% />

#さいごに
　実はこのネタ、むかーし、東工大でやってた[MFT2013](https://makezine.jp/event/mft2013/program/)で見た作品のことを憶えていて、それを再現できそうだなぁと思ってやってみました。Google検索してみると、衣斐 秀聽さん／星野 泰漢さんによる「[言葉の軌跡](http://archive.j-mediaarts.jp/festival/2013/entertainment/works/17ej_Word_Spur/)」という作品のようです。
　今回、ATOM Matrixの5x5 LEDにに合わせて5ドットにしましたが、ATOM Matrix/LiteだとGrove端子側も合わせれば8つのGPIOがが使えるので8ドット幅版を作って「[美咲フォント](https://littlelimit.net/misaki.htmhttps://littlelimit.net/misaki.htm)」で漢字表示とかやってみたいですね。また、光が周りに漏れて濁った印字？になってしまうので、光がまっすぐ蓄光シートの面にだけあたるような覆いをつけたほうが良いかもしれません。[3mm径の紫外線LED(秋月電子に取り扱いあり)](https://akizukidenshi.com/catalog/c/cv3mm/)を使って精細度をあげるのもおもしろそうです。