極小マイコン「Leafony」をUnityからLチカする

# はじめに
昔、[MCPCナノコンハッカソン](https://www.zuken.co.jp/club_Z/zz/tech-column/20191128_tri_002.html)に出場したときにいただいた極小マイコン「[Leafony](https://leafony.com/)」を久しぶりに取り出して遊んでみました。

BLEモジュールや加速度センサをマイコンに載せても凄まじい小ささです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">今日つかったマイコン、やばやばなほど小さいんだけど、BLEも照度センサ、加速度センサ、温度センサ、スタックしていけばwifiモジュールもつくし、ボタン電池で駆動できて、Arduinoで開発できる。拡張も自由自在。スタックするだけでなく、横につなげてウェアラブルも可能。凄すぎるん😳😳😳 <a href="https://t.co/DGqssgNkCF">pic.twitter.com/DGqssgNkCF</a></p>&mdash; たくろーどん (@takudooon) <a href="https://twitter.com/takudooon/status/1035474814696222722?ref_src=twsrc%5Etfw">August 31, 2018</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# やりたいこと
一度、下記の動画のような加速度センサで何かしらオブジェクトをぐりぐりさせてみたいです。
[加速度センサでUnityオブジェクトをぐりぐりしてみた](https://youtu.be/M7PtmbnMcB0)
ただUnityをつかったことないので、まずはUnityからLeafonyにのっているLEDをシリアル通信でLチカさせてみました。

# つかうもの

- macOS catalina
- Leafony
- Unity 2020.1.4

# 参考にしたもの
UnityからArduinoをつかうために,便利な有償アセット[Uduino](https://assetstore.unity.com/packages/tools/input-management/uduino-arduino-and-unity-communication-simple-fast-and-stable-78402?locale=ja-JP)があるようですが、それを使わなくてもUnityからArduinoへシリアル通信できます。

こちら説明とgithubリポジトリが参考になりました。

- [Arduino + Unity communication made easy](https://github.com/dwilches/Ardity)

- [HOW TO INTEGRATE ARDUINO WITH UNITY – HARDWARE WORK WITH SOFTWARE](https://www.codetocreate.com/2020/02/06/how-to-integrate-arduino-with-unity-hardware-work-with-software/)

# やりかた
## Unity
1. [こちら](https://github.com/dwilches/Ardity)のリポジトリをダウンロード
2. ダウンロードしたパッケージをUnityにインポート
3. [こちら](https://www.codetocreate.com/2020/02/06/how-to-integrate-arduino-with-unity-hardware-work-with-software/)の動画どおりの手順を実行します


## Leafony
ボードとプロセッサーは下記を選択します。
こちらは[公式ホームページ](https://docs.leafony.com/docs/environment/basic/)に書いてあります。

- Arduino Pro or Pro Mini
- ATmega328P(3.3V, 8MHz)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212276/284becfa-624b-53de-9899-f0127bb5bbb4.png)

プログラムは[こちら](https://github.com/dwilches/Ardity)のリポジトリをダウンロードをそのまま使っています。

```c++
bool lightOn = false;

// the setup routine runs once when you press reset:
void setup() {
  Serial.begin(115200);
  // make the pushbutton's pin an input:
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // print out the state of the button:
  if(Serial.available()){
    char c = Serial.read();
    if (c){
      if(c == 'A'){
        lightOn = true;
      }
      else if(c == 'Z'){
        lightOn = false;
      }
      c = NULL;
    }
  }
  if(lightOn){
    digitalWrite(LED_BUILTIN, HIGH);
    Serial.println("on");
  }else{
    digitalWrite(LED_BUILTIN, LOW);
    Serial.println("off");
  }
  delay(1000);        // delay in between reads for stability
}
```



# 動作確認
あとはUnity上で実行ボタン（下記画像の▷ボタン）を押して、上記のプログラムに記載がある「A」もしくは「Z」のキーを押すとUnityからLeafonyでLチカできました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212276/e5ec0084-a330-cd06-eae4-851a2b7b3289.png)


![leafony_unity_LED.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212276/e074f418-9fd4-a228-f288-8ff9762f2324.gif)

# おわり
公開されているリポジトリを使えば簡単にUnityからLeafonyでLチカができました。
Unity上のオブジェクトを加速度センサでグリグリできるように精進しようと思います。