UnityからArduinoにシリアルで送信

文字列として数字を送ります

Unity側(要SerialHandler)

using UnityEngine;
using System.Collections;
using System;//use for time
using UnityEngine.UI;//use for UI


public class serialSend : MonoBehaviour {
	public SerialHandler serialHandler;
	// Use this for initialization
	void Start () {
		serialHandler.OnDataReceived += OnDataReceived;
	}
	
	// Update is called once per frame
	void Update () {
	
	}

	public void sendBtn(){
		serialHandler.Write ("2");
	}



	void OnDataReceived(string message){

	}


}

Canvasでボタンを作成し,public void sendBtn()をアサインしてください

Arduino側

int i = 0;  // 文字数のカウンタ

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}
void loop() {

  if (Serial.available()) {

    byte var = Serial.read();
    var = var - 0x30;
    switch (var) {
      case 1:
        //hoge(var);
        Serial.println('1');
        digitalWrite(13, HIGH);
        delay(1000);              // wait for a second
        digitalWrite(13, LOW);
        break;
      case 2:
        //hoge(var);
        Serial.println('2');
       digitalWrite(13, HIGH);
        delay(2000);              // wait for 2 second
        digitalWrite(13, LOW);

        
        break;
      case 3:
        Serial.println('3');
        break;
    }
  }
}

文字列の扱いをcharでやると面倒なので(今回は数字だけなので)byteでやってみる

byteの数字は0が0x30らしいので,1(0x31)を送ってそれをひくと1になるらしい,,,

参考

シリアルモニタからArduinoへ数値を送る方法 – Qiita

シリアルモニタから数値を送り、Arduinoに数値に応じた処理をさせたいときがあります。しかし、以下のコードを書き込んでもちっとも反応してくれません。 sample1.ino void setup() { Serial.begin(9600); } void loop() { byte var = Serial.read(); switch (var) { case 1: //hoge(var); Serial.pr…” name=”description

LINK: qiita.com/hikoalpha/items/633c677f5cd12d536dcc