adafruit PyBadge for MakeCode Arcadeとやらを衝動買いしたので使ってみる

[カードサイズのマイコンボード「Adafruit PyBadge」が入荷、MakeCode ArcadeやArduinoでプログラミング](https://akiba-pc.watch.impress.co.jp/docs/news/news/1240938.html)

って記事を見て、

ゲームウォッチみたいじゃね？

って思いつつ、秒でポチってました。
Pythonとかarduinoで動くなにかなんだろうな、ってとこしかわかってません。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/082efbf3-e054-ebf1-61c6-11ab7a4698b6.jpeg" width=70%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/4e02f66b-8ae3-fdfd-39c8-cce80a64ae42.jpeg" width=70%>

そんな予備知識でとりあえず挑んでみる記事でございます。

# 目次

- 向き合う
- 教材
- Bootloader
- Load a MakeCode Game
- ケースをプリント

# 向き合う

まずはブツの確認です。
これですね。

https://www.adafruit.com/product/4200

> Here's a list of everything you get
ATSAMD51J19 @ 120MHz with 3.3V logic/power - 512KB of FLASH + 192KB of RAM
2 MB of SPI Flash for storing images, sounds, animations, whatever!
1.8" 160x128 Color TFT Display connected to its own SPI port
8 x Game/Control Buttons with nice silicone button tops (these feel great)
5 x NeoPixels for badge dazzle, or game score-keeping
Triple-axis accelerometer (motion sensor)
Light sensor, reverse-mount so that it points out the front
Built in buzzer mini-speaker
Mono Class-D speaker driver for 4-8 ohm speakers, up to 2 Watts
LiPoly battery port with built in recharging capability
USB port for battery charging, programming and debugging
Two female header strips with Feather-compatible pinout so you can plug any FeatherWings in
JST ports for NeoPixels, sensor input, and I2C (you can fit I2C Grove connectors in here)
Reset button
On-Off switch

ざっくりとまとめると、ちっちゃいモニタがついてて、ボタンが8個あって、LEDとかセンサーとかブザーとかがついてて、LiPoバッテリーが使えてUSBでつないで充電とか通信とかするよ。I2Cでなんかつなげるよ。
って感じでしょうか。

このへんみとくともうちょっとよくわかる。
https://learn.adafruit.com/adafruit-pybadge/pinoutshttps://learn.adafruit.com/adafruit-pybadge/pinouts

よし。完全に理解した。

# 教材

はい、こちらでございます。

https://learn.adafruit.com/adafruit-pybadge/overview

一旦、

- Update the PyBadge Bootloader
- Load a MakeCode Game on PyGamer/PyBadge

ってあたりをやってみようかな。

あとこれもやってみたい。一応、しょぼい3Dプリンターならある。

[3D Printing](https://learn.adafruit.com/pybadge-case/3d-printing)

# Bootloader

https://learn.adafruit.com/adafruit-pybadge/updating-the-bootloader

なんか早速つまづきそう。

> Your PyBadge may need its bootloader updated, especially if you're using MakeCode Arcade or if you're using MacOS.

win10(surface go) でやるつもりでした。macもあるんだけど、このままwin10でいってみましょうか。

## Driver

で、早速繋いでみたのですが、ストレージとしては認識されなかったです。
Driverを入れないといけないっぽい。
https://learn.adafruit.com/adafruit-pybadge/troubleshooting

下記よりDriver入れてみます。
https://github.com/adafruit/Adafruit_Windows_Drivers/releases/tag/2.4.0.0

## Update

だがしかし。
Driver更新しても認識しないんですよね。。

・・と小一時間。

なんかresetを `Double Click` せんとダメでした。

> You should now be done! Test by unplugging and replugging the board. You should see the CIRCUITPY drive, and when you double-click the reset button (single click on Circuit Playground Express running MakeCode), you should see the appropriate boardnameBOOT drive.

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/f6f08035-f5ac-5ecd-d1cf-97e80643f293.jpeg" width=60%>
v3.3.0

そんなわけで無事、認識されまして、ここに`update-bootloader-arcade_pybadge-v3.7.0.uf2`を置いてみます。

置いてみると、即リブートがかかり、立ち上がってきたら`v3.7.0`になってました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/b67e05c8-f393-7cb5-96d0-bbc48aff36c2.jpeg" width=60%>

では次～。
win10でもぜんぜん問題なかった。


# Load a MakeCode Game

https://learn.adafruit.com/adafruit-pybadge/load-makecode-game-on-pybadge

おもむろに[Makecode Arcade Game: Run, Blinka, Run!]ってボタンを押してみます。
おもむろにゲームが始まりました。pythonすね。

## microsoft MakeCode

https://www.microsoft.com/ja-jp/makecode

> Microsot MakeCodeはオープンソースのプログラミング学習プラットフォームです。ブロックを使ったビジュアルコーディングとJavaScriptによるテキストコーディングの２種類のエディタを切り替えながら、プログラミングできます。

小学生とかのプログラミングの教科で使うようなやつか。あれがノンプログラミングでできるってけっこうすごいな。
micro:bitとかLEGO MINDSTORMとかもあるし、IoTとも仲良さそうだ。
[show code]ってボタンを押すとコードがみれます。
GUI的なのだけじゃなくてCUI的な見方もできる。

## Demo

まずはショボいやつを動かしてみるテストらしい。
しかし、せっかくなのでなんか別のを動かしてみよう。

+ https://arcade.makecode.com/ を開く
+ Tutolials > Galgaを選択
+ tutolial通りにやってみる
+ なんかできた　https://makecode.com/_HWk3ke9KXL9C
+ settings -> change board でPyBadgeを選ぶ
+ .ufが落ちてくる
+ 落ちてきたのをlocalのPyBadgeにドラッグ&ドロップしてみる

そんなわけでなんかできました。
キャラクター動かんけど、これはAボタンの動作しか設定してないからだよね、きっと。
意外とあさっり動いたのは面白い。

![hqaxe-xv6y5.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/dadbc1ba-1f8a-2513-61ea-a50fcb37d2b9.gif)

撮影したら発色がいまいちになっちゃったんだけど、実際にはちゃんと表示されてます。
主人公はひよこ。魚を口から吐き出してます。

# ケースをプリント

我が家にはディアゴスティーニさんのidboxという3Dプリンタがいらっしゃいます。
で、都合のよいことにケース用のプリントデータがこちらに。

[3D Printing](https://learn.adafruit.com/pybadge-case/3d-printing)

これはやってみるしかないでしょう。

![8c29t-5pn1j.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/e25ead0c-e7ea-21c3-5373-5b677ed37417.gif)

そんなわけでやってみてます。
しかし、これめっちゃ時間かかるんですわ。
この後については割愛で。

そしてPyBadgeはarduino IDEでも使えるみたいなんですよね。
今度試してみよう。もしかしたらその時にはケースできてるかも。