2014-01-27 5 views
0

Я взаимодействую с MATLAB с Arduino для проекта проектирования цепей. Я хочу опросить Arduino для напряжения, которое он воспринимает на данном датчике, добавить это напряжение к вектору, а затем заговорить все внутри одного и того же цикла. У меня есть первые две части, но я не могу понять, как строить вектор напряжения снова и снова, когда он становится длиннее. Есть ли способ сделать это?MATLAB построение вектора изменения в цикле while

%{ 
Ventilation Rate Sensor v0.1 

This program uses a thermistor connected to pin A0 and analyzes the 
difference in voltage drop in order to assess the user's ventilation rate. 
Designed for use with a voltage divider using a 2.2kOhm resistor and a 
10kOhm (at 25C) thermistor in series. Note that this REQUIRES the Arduino 
to have the code for MATLAB interface already installed. This is included 
in the MATLAB Arduino software page at 
<<http://www.mathworks.com/matlabcentral/fileexchange/ 
32374-matlab-support-package-for-arduino-aka-arduinoio-package>> 
%} 

clc 
clear 
close all 

ard = arduino('COM3'); 
voltage = []; 
timer = datenum(clock+[0,0,0,0,0,30]); 


while datenum(clock) < timer 
    sensorValue = ard.analogRead(0); 
    voltage = [voltage (sensorValue * (5/1023))]; 
    hold on; 
    t = [1:1:length(voltage)]; 
    plot(t,voltage) 
end 

ответ

1

Попробуйте добавить drawnow после plot линии. Это сбрасывает очередь событий и заставляет Matlab выполнять сюжет.

Кроме того, вместо того, чтобы делать новый сюжет, каждый раз, когда вы можете обновлять данные графика x и y. Возможно, это может сэкономить немного времени работы:

h = plot(NaN,NaN); %// dummy plot (for now). Get a handle to it 
while [...] 
    [...] 
    set(h,'xdata',t,'ydata',voltage); %// update plot's x and y data 
end 
+0

Спасибо! Это работает очень хорошо. – SciurusDoomus

+0

@SciurusDoomus Рад, что это помогло. Также см. Отредактированный ответ с другой идеей, которая может быть полезна –

+0

Интересно. Мне действительно не нужно сокращать время выполнения, поскольку построение графика является скорее механизмом тестирования, чем фактическими данными, которые я хочу выводить. Тем не менее, я уверен, что мне это понадобится в будущем или чтобы эта программа была доступна на действительно старых системах. Благодаря! – SciurusDoomus

Смежные вопросы