实时数据绘图时Arduino和Matlab之间的时间延迟

5次观看(过去30天)
大家好!
我正在用串行通信从arduino到MATLAB绘制实时正弦波数据。正弦波绘图很棒,但是在绘图开始时存在延迟/噪声,并且不太确定为什么会发生这种情况。我在arduino IDE中添加了延迟以允许串行通信的时间,在matlab中添加了延迟以允许情节更新的时间,但不太确定为什么会发生这种情况。任何帮助都很感激。
图一开始的错误如下所示:
Matlab代码:
删除(instrfindall);
clc;
串口=“COM4为”
plotTitle =“正弦波”
包含=“时间(s)”
yLabel =“数据”
plotGrid =“上”
最小值= -1.5;
max = 1.5;
延迟= . 01;
%定义函数变量
时间= 0;
数据= 0;
数= 0;
%设置情节
plotGraph =情节(时间、数据“- r”);
标题(plotTitle,“字形大小”, 18);
包含(包含,“字形大小”15);
ylabel (ylabel“字形大小”15);
轴([0 10分钟最大]);
网格(plotGrid);
%打开串口COM端口
s =串行(串口);
disp (“关闭Plot以清除数据”);
fopen (s);
%启动秒表计时器
抽搐
当Plot激活时%循环
时间< = 50
从串行读取数据为浮点数
dat = fscanf(年代,' % f ');
如果(~ isempty (dat) & & isfloat (dat))%确认数据类型是正确的
Count = Count + 1;
时间(数)= toc;停止秒表并提取时间。
数据(数)= dat (1);提取第一个数据元素
集(plotGraph,“XData”、时间、“YData”、数据);
轴([0时间(计数)分钟最大]);
结束
%允许MATLAB更新绘图
暂停(延迟);
结束
关闭串口并删除无用的变量
文件关闭(年代);
flushinput(串口);
清晰的count dat delay max min plotGraph plotGrid plotTitle...
scrollWidth serialPort xLabel yLabel
Arduino代码:
x = 0
无效设置(){
Serial.begin (9600);
x = 0;
无效循环(){
Serial.flush ();
以(sin (x));
x+ = 0。
如果(x > = 2 * 3.14)
x = 0;
/ /允许的时间处理串行通信
延迟(50);

答案(0)

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!