How can I plot bluetooth data in real-time without drawnow?
    5 次查看(过去 30 天)
  
       显示 更早的评论
    
I have an HC-05 module hooked up to an AD8232 Heart rate monitor and an arduino nano. I've looked through the forums and found a few ways to get data over bluetooth into matlab. However, the timing on the x-axis of the figure is highly inaccurate and shows that an ECG waveform occurs every 5 seconds when it should show up about every second. In addition, there is about a 20 second delay for the figure window to show up after hitting run. Any suggestions on how these issues can be avoided?
Here is a screenshot of the output figure:

Below is my code:
clear all;close all;
tic;
delete(instrfindall)
instrreset;
b = Bluetooth('HC-05',1);
fopen(b);
figure
h = animatedline;
ax = gca;
ax.YGrid = 'on';
startTime = datetime('now');
count=1;
numsamples=2500;
y=zeros(1,numsamples);
while count<length(y)
    tic;
    a = str2num(fscanf(b));
    z(count)=toc;
    if length(a)<1
        a=0;
    else
        y(:,count)=a;
    end
    count=count+1;
    t =  datetime('now');
    addpoints(h,datenum(t),a)
    ax.XLim = datenum([t-seconds(15) t]);
    datetick('x','keeplimits')
    drawnow limitrate
end
toc;
fclose(b);
figure;
plot(linspace(0,seconds(t-startTime),length(y)),y)
0 个评论
回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 MATLAB Support Package for Arduino Hardware 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
