#なんの記事?
この記事はUduinoに関する謎の挙動を集めたものです。
- 環境
- ArduinoIDE 1.8.5
- Arduino UNO
- Unity 2.18.2.10f1
- Uduino 2.1.8
- MacBookPro
##謎1
Arduinoのスケッチのloop関数内の記述によって、Unityのインスペクタで、UduinoでDiscover ports(以下の写真の青いボタン)を押した時にArduinoを認識するか否かが異なった。
//Arduinoのスケッチ
//認識しないもの
void loop()
{
uduino.update();
while(isPlay){
analogWrite(pin, sinwave[indexer]);
indexer ++;
delayMicroseconds(50);
if(indexer ==255){
indexer = 0;
}
}
while(!isPlay){
analogWrite(pin, 0);
}
}
//Arduinoのスケッチ
// 認識するもの
void loop()
{
uduino.update();
while(isPlay){
analogWrite(pin, sinwave[indexer]);
indexer ++;
delayMicroseconds(50);
if(indexer ==255){
indexer = 0;
}
}
analogWrite(pin, 0);
}
###備考
- 原因はわからない
- どちらもArduinoへの書き込みは成功した
##謎2
Arduinoのシリアルモニタを開いた状態でDiscover portsすると認識されない(以下のエラーコード)。
//Unityのconsoleへのerrorコード
Error on port <color=#2196F3>[/dev/tty.usbmodem143101]</color> : System.IO.IOException: Resource busy at System.IO.Ports.SerialPortStream.ThrowIOException () [0x0000f] in <93cc5a601cf645d2a15a96c4600351ac>:0 at System.IO.Ports.SerialPortStream..ctor (System.String portName, System.Int32 baudRate, System.Int32 dataBits, System.IO.Ports.Parity parity, System.IO.Ports.StopBits stopBits, System.Boolean dtrEnable, System.Boolean rtsEnable, System.IO.Ports.Handshake handshake, System.Int32 readTimeout, System.Int32 writeTimeout, System.Int32 readBufferSize, System.Int32 writeBufferSize) [0x0001b] in <93cc5a601cf645d2a15a96c4600351ac>:0 at (wrapper remoting-invoke-with-check) System.IO.Ports.SerialPortStream..ctor(string,int,int,System.IO.Ports.Parity,System.IO.Ports.StopBits,bool,bool,System.IO.Ports.Handshake,int,int,int,int) at System.IO.Ports.SerialPort.Open () [0x0006f] in <93cc5a601cf645d2a15a96c4600351ac>:0 at (wrapper remoting-invoke-with-check) System.IO.Ports.SerialPort.Open() at Uduino.UduinoDevice_DesktopSerial.Open () [0x0005a] in /Users/kudoryu/github/UduinoTest/Assets/Uduino/Scripts/Boards/Devices/UduinoDevice_DesktopSerial.cs:87
UnityEngine.Debug:Log(Object)
Uduino.Log:Info(Object, Boolean) (at Assets/Uduino/Scripts/Extra/UduinoDebug.cs:34)
Uduino.UduinoDevice_DesktopSerial:Open() (at Assets/Uduino/Scripts/Boards/Devices/UduinoDevice_DesktopSerial.cs:100)
Uduino.UduinoConnection_DesktopSerial:Discover(String[]) (at Assets/Uduino/Scripts/Boards/Finder/UduinoConnection_DesktopSerial.cs:84)
Uduino.UduinoConnection_DesktopSerial:FindBoards(UduinoManager) (at Assets/Uduino/Scripts/Boards/Finder/UduinoConnection_DesktopSerial.cs:19)
Uduino.UduinoManager:DiscoverPorts() (at Assets/Uduino/Scripts/UduinoManager.cs:453)
Uduino.UduinoManagerEditor:ArduinoSettings() (at Assets/Uduino/Editor/UduinoManagerEditor.cs:808)
Uduino.UduinoManagerEditor:OnInspectorGUI() (at Assets/Uduino/Editor/UduinoManagerEditor.cs:527)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
また、Discover portsして認識に成功した後にArduinoのシリアルモニタを開こうとすると以下のエラーが出て開けない。
//ArduinoIDEへのerrorコード
シリアルポート「/dev/cu.usbmodem143101」が開けません。 (Port busy)
###備考
- シリアルモニタとUduinoを同時に使うことはできないということ?
##謎3
Uduinoが以下の画像のように接続済の時に、Arduinoに書き込もうとすると、エラーが出てできない。
//ArduinoIDEへのerrorコード
avrdude: ser_open(): can't open device "/dev/cu.usbmodem143101": Resource busy