No appropriate method, property, or field 'pinMode' for class 'arduino'.

3 visualizzazioni (ultimi 30 giorni)
Hello,
I make a project with arduino and matlab. I have connected everything, now I try to write arduino code in matlab. if I print on run, this following announcement always comes out:
No appropriate method, property, or field 'pinMode' for class 'arduino'.
can somebody help please me?
thanks
thus matlab code looks:
a = arduino('COM12', 'uno');
clkPin=2;
dtPin=3;
swPin=4;
a.pinMode(2,'input')
a.pinMode(3,'input');
a.pinMode(4,'input');
a.digitalWrite(4,1);
oldA = 1;
oldB = 1;
result = 0;
encoderVal = 0;
newA = a.digitalRead(clkPin);
newB = a.digitalRead(dtPin);
if (newA ~= oldA) | (newB ~= oldB)
if (oldA == 1 & newA == 0)
result = (oldB * 2 - 1);
end
end
oldA = newA;
oldB = newB;
change = result;
encoderVal = encoderVal + change;
if digitalRead(swPin) == 0
encoderVal = 0;
end
Serial.println(encoderVal);
i use matlab R2016a
  2 Commenti
homam  mohamad alramadan
homam mohamad alramadan il 20 Lug 2017
Modificato: Walter Roberson il 20 Lug 2017
i have the same problem i am trying to communicate arduino ith matlab gui and the error appears in the last line
delete(instrfind({'Port'},{'COM5'}))
clear a;
global a;
a=arduino('COM5');
a.pinMode(8,'output');
Walter Roberson
Walter Roberson il 20 Lug 2017
homam mohamad alramadan: which MATLAB release are you using?

Accedi per commentare.

Risposte (1)

Walter Roberson
Walter Roberson il 26 Set 2016
pinmode is the older "legacy" interface. It has been replaced. See https://www.mathworks.com/help/supportpkg/arduinoio/ref/configurepin.html and readDigitalPin and readVoltage and writeDigitalPin
  9 Commenti
Fredy  Aldo Tsangue Jiatsa
Fredy Aldo Tsangue Jiatsa il 27 Ott 2016
Modificato: Walter Roberson il 27 Ott 2016
Hello Walter Roberson,
when I run the programme by putting delete (instrfind ()) at this level:
clear all; close all; clc
a = arduino('COM12', 'uno');
delete(instrfind())
configurePin(a,'D2','DigitalInput');
configurePin(a,'D3','DigitalInput');
configurePin(a,'D4','Unset');
writeDigitalPin(a,'D4',1);
encoderVal = 0;
oldA = 1;
oldB = 1;
while 1
result = 0;
newA = readDigitalPin(a,'D2');
newB = readDigitalPin(a,'D3');
if (newA ~= oldA) || (newB ~= oldB)
if (oldA == 1 && newA == 0)
result = (oldB * 2 - 1);
end
end
oldA = newA;
oldB = newB;
change = result;
encoderVal = encoderVal + change
end
I get the text suivant:
Error using to Encode (line 4)
Instrument object OBJ simple percentage year invalid object.
but when I put delete (instrfind ()) at the end of the programme:
clear all; close all; clc
a = arduino('COM12', 'uno');
configurePin(a,'D2','DigitalInput');
configurePin(a,'D3','DigitalInput');
configurePin(a,'D4','Unset');
writeDigitalPin(a,'D4',1);
encoderVal = 0;
oldA = 1;
oldB = 1;
while 1
result = 0;
newA = readDigitalPin(a,'D2');
newB = readDigitalPin(a,'D3');
if (newA ~= oldA) || (newB ~= oldB)
if (oldA == 1 && newA == 0)
result = (oldB * 2 - 1);
end
end
oldA = newA;
oldB = newB;
change = result;
encoderVal = encoderVal + change
end
delete(instrfind())
I still do not get numbers negative. I always get numbers positive, all the same which direction of encoder I turn .
where exactly in the programme I must delete(instrfind()) write?
good day to you and thank you.

Accedi per commentare.

Categorie

Scopri di più su MATLAB Support Package for Arduino Hardware in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by