ArduinoとUnityを連携

2025/06/04

シリアル通信を用いてArduinoとUnity間での通信を可能にした。

シリアルポートで接続しているため、大量の情報通信はできない。

Arduinoスケッチ

UI設計

2025/06/26

入力がとりあえずできるようにした。

テキストボックスが下線の上に配置されている。

Unityスクリーンショット

ステッピングモーターの制御

2025/07/17

Unityから送信した文字によってステッピングモーターを左右に動かすプログラムを書いた。

未だ正常な動きは期待できない

作業中の鵜飼

UI設計 2

2025/07/21

UIをシンプルにした。

真っ黒な画面に文字が打たれるように。

Unityスクリーンショット

ステッピングモーターの制御 2

2025/07/25

文字と次の文字の距離を計算するプログラムを書き、それによってコンベアを動かすようにした。

100ステップで6cmほど移動できるようだ。

コンベア動作状況

サーボモーターの制御

2025/07/25

Unity側から文字をArduinoに1文字づつ送り、それをArduinoが順次処理していくという流れになっている。

Unityが上流であり、Arduinoが下流にあるイメージ。

Arduino側からはデータを送信できないが、Unity側から送信できる。

Arduinoスケッチ

コンベアとベンダーの連動(本展示版)

2025/07/25

Unityから10秒おきにアルファベットを送信し、

受信したら

コンベアを動かす→文字を置く

という動作になっている。

Unityからは決まって10秒間隔で送られるため、文字を入力してから実際に動き始めるまでや、一文字目と二文字目の待ち時間がかなり長くなってしまう。これは発表までに文字を送る間隔を安定して制御することが技術的に困難であると考えたためである。

そこで最も時間のかかるもの(文字を出す時間+A→ZもしくはZ→Aの移動時間)を確実に成功できる秒数待機することにした。

機能としては実装できているのだが、待ち時間が非常に冗長であり体験展示としては改善すべき点である。

Arduinoスケッチ

オープンキャンパス用プログラム

2025/07/26

Unityから文字の距離に応じてn秒間隔で文字を送信

文字を置く→コンベアを動かす

としたことで、各文字間の移動時間に最適な間隔を開けることが可能となり、かなり快適な動作を実現した。理論上の最速ではないが安定動作の範囲内でかなり最適化された動きをすることが可能となった。

オープンキャンパスでの動作の様子