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

以下のようなエラーメッセージが生じ、その後の操作(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' がありません。

 Accepted Answer

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

6 Comments

Eiichi Nishida
Eiichi Nishida on 17 Mar 2019
ご指示のコマンド試してみましたが、以下のようにうまくいきませんでした。また、別のところで見つけたヒント「arduinoの線を外し、matlabを再立ち上げする」でもうまくいきませんでした。言い忘れましたが、MATLABバージョンは2018aです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
>> a.configureDigitalPin(13, 'output')
クラス 'arduino' に対する適切なメソッド、プロパティ、またはフィールド 'configureDigitalPin' がありません。
>> configurePin(a,13,'DigitalOutput')
Invalid pin format. Pin number must be a character vector or string that starts with D or A
Soya AOKI
Soya AOKI on 17 Mar 2019
Edited: Soya AOKI on 17 Mar 2019
バージョン情報ありがとうございます。
以下ではどうでしょうか?
configurePin(a,'D13','DigitalOutput')
「'configurePin'がありません。」のエラーが出ていないので、configurePinを使用して設定ができそうな気がします。
追記
以下のコマンドでプロパティが確認できるようです。可能であれば結果を見せていただけますか?
properties(a)
Eiichi Nishida
Eiichi Nishida on 17 Mar 2019
結果を以下に示します。問題がひとつクリアできたような気がします。a.digitalWriteについてはどうでしょうか? またpropertiesについてはいかがでしょうか?
ーーーーーーーーーーーーーーーーー
>> configurePin(a,'D13','DigitalOutput')
>> a.digitalWrite(13,1)
クラス 'arduino' に対する適切なメソッド、プロパティ、またはフィールド 'digitalWrite' がありません。
>> properties(a)
クラス arduino に対するプロパティ:
Board
AvailablePins
Libraries
Port
Soya AOKI
Soya AOKI on 17 Mar 2019
Edited: Soya AOKI on 17 Mar 2019
ありがとうございます。
本質的な解決にはなっていなさそうですが一歩前進できたようで嬉しいです。
また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をインストールはしたもののそこにパスが通っていないことが原因かなと思ったのですが、いかがですか?
(一昨日は一時的にパスを通していたのでは?)
Eiichi Nishida
Eiichi Nishida on 18 Mar 2019
おはようございます。
ご指摘のソフトEngduinoMatlabはインストールした覚えはありません。インストールしたmathworksの製品は、matlab support package for arduino hardwareとsimulink support package for arduino hardwareの2つだけです。この範囲でできるのが理想なのですが・・・
ちなみに私は平田光男氏テキスト「arduinoとmatlabで制御系設計を始めよう」に従っており、この内容がmatlab2014以前のバージョンなので、これが根本的な問題なのですね。
Soya AOKI
Soya AOKI on 18 Mar 2019
ありがとうございます。
おっしゃる通り、バージョン違いが根本的な問題である可能性が高いです。
使用されているテキストはR2016bまでのみ実行可能なようです。(ソースはこちら
上記、writeDigitalPinは動作しましたでしょうか?

Sign in to comment.

More Answers (1)

Eiichi Nishida
Eiichi Nishida on 21 Mar 2019

0 votes

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

Categories

Find more on Embedded Coder でサポートされているハードウェア in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!