MATLAB Answers

0

MATLABによるa​rduino操作時に​発生するエラー

Asked by Eiichi Nishida on 17 Mar 2019 at 2:19
Latest activity Answered by Eiichi Nishida on 21 Mar 2019 at 1:29
以下のようなエラーメッセージが生じ、その後の操作(LEDランプ点滅)ができません。一昨日はできたのですが・・・
arduinoはuno, PCのOSはwindows10です。
ーーーーーーーーーーーーーーー
>> a=arduino('COM4')
a =
arduino のプロパティ:
Port: 'COM4'
Board: 'Uno'
AvailablePins: {'D2-D13', 'A0-A5'}
Libraries: {'I2C', 'Servo', 'SPI'}
>> a.pinMode(13,'output')
クラス 'arduino' に対する適切なメソッド、プロパティ、またはフィールド 'pinMode' がありません。

  0 Comments

Sign in to comment.

2 Answers

Answer by Eiichi Nishida on 21 Mar 2019 at 1:29
 Accepted Answer

writeDigitalPin、動作しました。おかげさまで、これで今回の問題は解決しました。ありがとうございました。

  0 Comments

Sign in to comment.


Answer by Soya AOKI on 17 Mar 2019 at 6:29
Edited by Soya AOKI on 17 Mar 2019 at 6:31

こんにちは。
pinModeが無いようですね…
類似の問題が過去に発生していたようです。
別の書き方が存在するようです。こちらはすでに試されていますでしょうか?
a.configureDigitalPin(13, 'output')
configurePin を使用する方法もあるようです。
configurePin(a, 13, 'DigitalOutput')
一昨日は動作されたことや使用されているMATLABバージョンが不明なため動作しないかもしれませんが、
まだ試されていなかったらお試しください。

  6 Comments

Soya AOKI on 17 Mar 2019 at 13:58
ありがとうございます。
本質的な解決にはなっていなさそうですが一歩前進できたようで嬉しいです。
またdigitalWriteですが、writeDigitalPin で代用できないでしょうか?
writeDigitalPin(a,'D13',1);
参考までに…
pinModedigitalWrite のページをみると 、EngduinoMatlabを使用して以下のように使えるみたいです。
% Check if the Engduino object already exists. Otherwise initialize it.
if (~exist('e', 'var'))
e = engduino();
end
e.pinMode(13, e.PIN_TYPE_OUTPUT);
もしかして、pinMode等が使用できないのは、EngduinoMatlabをインストールはしたもののそこにパスが通っていないことが原因かなと思ったのですが、いかがですか?
(一昨日は一時的にパスを通していたのでは?)
おはようございます。
ご指摘のソフトEngduinoMatlabはインストールした覚えはありません。インストールしたmathworksの製品は、matlab support package for arduino hardwareとsimulink support package for arduino hardwareの2つだけです。この範囲でできるのが理想なのですが・・・
ちなみに私は平田光男氏テキスト「arduinoとmatlabで制御系設計を始めよう」に従っており、この内容がmatlab2014以前のバージョンなので、これが根本的な問題なのですね。
Soya AOKI on 18 Mar 2019 at 14:18
ありがとうございます。
おっしゃる通り、バージョン違いが根本的な問題である可能性が高いです。
使用されているテキストはR2016bまでのみ実行可能なようです。(ソースはこちら
上記、writeDigitalPinは動作しましたでしょうか?

Sign in to comment.