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' がありません。

 채택된 답변

Soya AOKI
Soya AOKI 2019년 3월 17일
편집: Soya AOKI 2019년 3월 17일

1 개 추천

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

댓글 수: 6

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

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Eiichi Nishida
Eiichi Nishida 2019년 3월 21일

0 개 추천

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

카테고리

도움말 센터File Exchange에서 MATLAB Support Package for Arduino Hardware에 대해 자세히 알아보기

질문:

2019년 3월 17일

답변:

2019년 3월 21일

Community Treasure Hunt

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

Start Hunting!