如何使用matlab读取Arduino串口不同的数据并作图
1个回答
推荐于2018-04-05
展开全部
用matlab读了串口数据然后plot图,但我只会读一种数据。比如只读ADC value,或者只读 Time。但想用matlab把Arduino得到的时间和ADC值都读过去然后做出波形图。时间为横轴,ADC为纵轴。Arduino和matlab代码写在下面了,用那个代码做出来的图横坐标的时间都是不对的,所以必须把Arduino读出的时间也读过去。
Arduino:
#include <MsTimer2.h>
const int INTERVAL = 3;
unsigned long n = 0;
void ggyy() {
n = millis();
int m = analogRead(A0);
Serial.print(n);
Serial.print(" ");
Serial.print(m);
}
void setup(){
Serial.begin(115200);
MsTimer2::set(INTERVAL,ggyy);
MsTimer2::start();
}
void loop() {
delay(800000);
}
Matlab:
s=serial('COM3');
set(s,'BaudRate',115200);
fopen(s);
interval=5000;
passo=1;
t=1;
x=0;
while(t<interval)
b=str2num(fgetl(s));
x=[x,b];
plot(x);
grid
t=t+passo;
drawnow;
end
fclose(s);
Arduino:
#include <MsTimer2.h>
const int INTERVAL = 3;
unsigned long n = 0;
void ggyy() {
n = millis();
int m = analogRead(A0);
Serial.print(n);
Serial.print(" ");
Serial.print(m);
}
void setup(){
Serial.begin(115200);
MsTimer2::set(INTERVAL,ggyy);
MsTimer2::start();
}
void loop() {
delay(800000);
}
Matlab:
s=serial('COM3');
set(s,'BaudRate',115200);
fopen(s);
interval=5000;
passo=1;
t=1;
x=0;
while(t<interval)
b=str2num(fgetl(s));
x=[x,b];
plot(x);
grid
t=t+passo;
drawnow;
end
fclose(s);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询