Matlab Arduino使用模拟输入作为输出

时间:2014-06-19 17:32:04

标签: matlab arduino

我需要使用Arduino模拟输入作为A0 A1 A2 A3 A4 A5的数字输出。 通常,当我使用arduino程序时,digitalWrite(A0,0)正在完成它的工作,但是在matlab中我找不到这样做的方法。我试过将A0视为14 digitalWrite(14,0)并且没有工作。 你知道如何在Matlab中做这个引脚映射的事情吗?简单来说,matlab中的数字写入(A0,0)的等价是什么?

 function test_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for test
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

global a;
set(handles.pushbutton1, 'UserData', 0);
a=arduino('COM3');

a.pinMode(2,'output');
a.pinMode(3,'output');
a.pinMode(4,'output');
a.pinMode(5,'output');
a.pinMode(6,'output');
a.pinMode(7,'output');
a.pinMode(8,'output');
a.pinMode(9,'output');
a.pinMode(10,'output');
a.pinMode(11,'output');
a.pinMode(12,'output');
a.pinMode(13,'output');
a.pinMode(14,'output');

function pushbutton1_Callback(hObject, eventdata, handles)

global a;
global counter;
counter = get(hObject, 'UserData') + 1
set(hObject, 'UserData', counter);

if(counter==1)
a.digitalWrite(14,1);This doesnt work
a.digitalWrite(7, 0);
a.digitalWrite(13, 0); 
a.digitalWrite(8, 1); 
a.digitalWrite(12, 0);
a.digitalWrite(9,0); 
a.digitalWrite(11, 0);
a.digitalWrite(10, 0);

  a.servoStatus(2)
end

1 个答案:

答案 0 :(得分:0)

你认为A0相当于引脚14是正确的,所以你的代码应该可行。也许你忘了设置引脚模式?你能发布你的代码和你得到的错误吗?

以下代码适用于我:

 a = arduino('COM4');
 a.pinMode(14,'output'); % pin 14 is equivalent to analog pin A0

 tic;
 while toc/60 < 0.25 % Run for 15 seconds
    a.digitalWrite(14,1); % setting A0 to HIGH
 end

 delete(a);
 clear a;