SimulinkからArduinoの出力ピンを制御する

MATLAB/Simulink 2013aあたりからArduinoの入出力ピンを制御することができるらしい。
相変わらずの異常な拡張性を実現するMathworksすごい。

使い方としては、

  1. Arduino UNOをWindowsへ接続
  2. MATLABでアドオンインストール
  3. Simulinkモデル上でArduinoの制御モデル作成
    • ライブラリブラウザでSimulink Support Package for Arduino Hardwareの
      各種ライブラリブロックを探せる
  4. 実行

というステップを経ていく。

上記の3.のステップで配置できるライブラリブロックとしては以下のものが標準部品として用意されている。 f:id:yusuke_ujitoko:20190720212823p:plain

上記の4.のステップはSimulinkのシミュレーション中にArduinoも同期的に実行できるのかなと思ったが、そうではなくてSimulinkモデルからArduinoで実行できるコードを生成しそれを実行してくれるだけだった。

注意が必要なのは、MATLAB起動後にArduinoを再接続すると、 Simulink内でArduinoが認識なされなくなること。 そのときにはSimulinkの"モデルコンフィグレーションパラメータ"で"ハードウェア実行"タブのところでCOMポート等の再設定することで認識させられる。

一番単純なサンプルは以下のようなもので、 指定したデジタル出力ピンにパルスを出力することを確認した。

f:id:yusuke_ujitoko:20190720213633p:plain