how to plot the real time data from arduino in matlab.
85 次查看(过去 30 天)
显示 更早的评论
the sensor that i am using is giving some output.how can i plot that in matlab
2 个评论
采纳的回答
Nick
2017-4-7
Hi this is some old code I have that will plot the Arduino's analogread output. It will read continuously until it is stopped. I should also say that when I used the Arduino, the support package was not available so I was grabbing my data from the Arduino a different way (analogRead) than you might depending how you are connected to the Arduino.
%This is a script that will plot Arduino analogRead values in real time
%Modified from http://billwaa.wordpress.com/2013/07/10/matlab-real-time-serial-data-logger/
%The code from that site takes data from Serial
clear
clc
%User Defined Properties
a = arduino('Com13') % define the Arduino Communication port
plotTitle = 'Arduino Data Log'; % plot title
xLabel = 'Elapsed Time (s)'; % x-axis label
yLabel = 'Temperature (C)'; % y-axis label
legend1 = 'Temperature Sensor 1'
legend2 = 'Temperature Sensor 2'
legend3 = 'Temperature Sensor 3'
yMax = 40 %y Maximum Value
yMin = 0 %y minimum Value
plotGrid = 'on'; % 'off' to turn off grid
min = 0; % set y-min
max = 40; % set y-max
delay = .01; % make sure sample faster than resolution
%Define Function Variables
time = 0;
data = 0;
data1 = 0;
data2 = 0;
count = 0;
%Set up Plot
plotGraph = plot(time,data,'-r' ) % every AnalogRead needs to be on its own Plotgraph
hold on %hold on makes sure all of the channels are plotted
plotGraph1 = plot(time,data1,'-b')
plotGraph2 = plot(time, data2,'-g' )
title(plotTitle,'FontSize',15);
xlabel(xLabel,'FontSize',15);
ylabel(yLabel,'FontSize',15);
legend(legend1,legend2,legend3)
axis([yMin yMax min max]);
grid(plotGrid);
tic
while ishandle(plotGraph) %Loop when Plot is Active will run until plot is closed
dat = a.analogRead(0)* 0.48875855327; %Data from the arduino
dat1 = a.analogRead(2)* 0.48875855327;
dat2 = a.analogRead(4)* 0.48875855327;
count = count + 1;
time(count) = toc;
data(count) = dat(1);
data1(count) = dat1(1)
data2(count) = dat2(1)
%This is the magic code
%Using plot will slow down the sampling time.. At times to over 20
%seconds per sample!
set(plotGraph,'XData',time,'YData',data);
set(plotGraph1,'XData',time,'YData',data1);
set(plotGraph2,'XData',time,'YData',data2);
axis([0 time(count) min max]);
%Update the graph
pause(delay);
end
delete(a);
disp('Plot Closed and arduino object has been deleted');
17 个评论
Walter Roberson
2022-6-4
When you create an arduino object and ask to analog read, then sampling rate is not a relevant question. The while loop runs however quickly it runs, almost certainly not consistent. Each iteration, the MATLAB host sends an analog read request along with information about what to read. That goes out over USB whenever USB gets around to it, and the command is interpreted by the arduino, which figures out what is being requested and executes the corresponding code, and then the arduino creates a response and sends it back over USB. All of this is asynchronous and irregular timing, so sample rate is not a relevant concept, unless you want to measure min, max, average on a particular set up (knowing it will change if Windows decides it is time to fetch email or defragment the hard drive or run a virus scan.)
If you to know about sample rate, you need to write code for the arduino side that is dedicated to reading the device and reporting back.
Walter Roberson
2022-6-4
The sampling rate possible for temperature sensors depends on the sensor. I am finding rates of 1 sample/second or 1 sample per 2 seconds for some. I cannot seem to find statements on the sampling time of LM35 type sensors
更多回答(3 个)
Nguyet Minh
2019-9-25
Can I ask about the number "Data from Arduino". What is it means?
Thanks a lot
![Data from the arduino.PNG](https://www.mathworks.com/matlabcentral/answers/uploaded_files/239667/Data%20from%20the%20arduino.png)
3 个评论
Walter Roberson
2021-11-17
See https://www.mathworks.com/matlabcentral/answers/333946-how-to-plot-the-real-time-data-from-arduino-in-matlab#comment_1314367 where I show how the meaning of that constant.
anil simsek
2020-5-6
Arduino kodum var, hemen matlab'da çizmek istiyorum. Bana yardımcı olabilir misiniz
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!