マシンの設定
コードの生成は完全にWolframシステム内で処理される.しかし,コードのコンパイルとダウンロードには,外部のツールチェーンが呼び出される.
Needs["MicrocontrollerKit`"]Arduinoボード上のマイクロコントローラを使用している場合は,MicrocontrollerEmbedCodeはArduino IDEを探す.コンパイラやその他のプログラムの呼出しに成功したかどうか確認するためには,テストを実行してボード上のLEDを点滅させる.例えばArduino Unoの場合は以下のコードの最後の引数を使用中のマシンの接続ポートに合うように変更して実行する.
sys = NonlinearStateSpaceModel[{{Which[x > 0, 0, True, 1]}, {x}}, {x}, {}, {Automatic}, Automatic, SamplingPeriod -> 1];
μc = <|"Target" -> "ArduinoUno", "Outputs" -> 13 -> "Digital"|>;
p = "/dev/cu.usbmodem14101";MicrocontrollerEmbedCode[sys, μc, p]LEDが途切れなく点滅するなら,Arduinoツールチェーンは正しく呼び出されている.点滅しない場合は明示的に指定しなければならない.
ardCompInstl = FileNameJoin[{$RootDirectory, "Applications", "Arduino.app", "Contents", "Java", "hardware", "tools", "avr", "bin"}];FileExistsQ[FileNameJoin[{ardCompInstl, "avr-gcc"}]]MicrocontrollerEmbedCode[sys, μc, p, <|"CompilerInstallation" -> ardCompInstl|>]avr-gccツールチェーンが他の場所にインストールされている場合,それを使うこともできる.
compInstl = FileNameJoin[{$RootDirectory, "usr", "local", "bin"}];MicrocontrollerEmbedCode[sys, μc, p, <|"CompilerInstallation" -> compInstl|>]MicrocontrollerEmbedCode[sys, μc, p, <|"CompilerInstallation" -> compInstl, "CompilerName" -> "avr-gcc"|>]パス"/usr/local/bin"はシステムパス内にある.
Environment["PATH"]システムパス内にある場合は,パスを明示的に与える必要はない.
MicrocontrollerEmbedCode[sys, μc, p, <|"CompilerInstallation" -> Sequence[]|>]