こんにちは、エンジニアのオオバです。

今回はArduinoを使ったシリアル通信をやってみようと思います。

Arduinoを始めよう!(1)シリアル通信編 | Think IT(シンクイット)
基本はコチラの記事の内容をそのまま使わせてもらうわけですが、それだけだと芸がないのでUnityからArduinoへのシリアル通信もやってみようと思います。

ArduinoコンソールからArduinoへのシリアル通信

serial.ino · GitHub

このコードは、文字列nを送信するとLEDが点灯し、fを送ると消灯するというシンプルな処理です。
Arduinoエディタから文字列を送信するためには、シリアルモニタを使用します。

UnityからArduinoへのシリアル通信_0

この矢印部分をクリックします。

UnityからArduinoへのシリアル通信_1

シリアルモニタ内の、右下のボーレートをソースコード側と合わせます。
※今回は9600bps

UnityからArduinoへのシリアル通信_2

文字列を入力して送信ボタン or エンターキーで送信できます。

UnityからArduinoへシリアル通信

こちらは以前作成したSerialPortWrapperというライブラリを使用して実装します。

Unityの実装コードはコチラ
SerialSample.cs · GitHub

ポイントはSerialPortWrapperのコンストラクタの第1引数にポート名、第2引数にボーレートを渡します。
ボーレートはArduino側のソースコードと合わせる必要があるので、9600を設定します。

ポート名は以下のコマンドを実行して出力された文字列を入力します。

ls /dev/cu.*  

画面上のnボタン、fボタンを押下することでLEDの点灯と消灯を実行することができます。

UnityからArduinoへのシリアル通信_3

このようにSerialPortWrapperを使用することで、簡単にUnityから文字列を送信することができました。

以上

GitHub - baobao/SerialPortWrapper

オススメ記事
検証環境