Two graphs at the same time
15 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Ameen Mouazzen
le 20 Avr 2019
Modifié(e) : Ameen Mouazzen
le 21 Avr 2019
PLEASE HELP
Hello,
I have this code that is used with arduino package
the code will be used to get data from two sensors:
- load cell that measures load
- displacement sensor that measures displacement
problems:
- this code is showing two graphs but only one graph has labels
- only one graph is showing data results
this is the code: (please note that i'm new to MATLAB and coding in general)
clear
clc
a=arduino('com3','Uno')
loadcell=addon(a,'ExampleAddon/HX711',{'D2','D3'})
plotTitle1 = 'Load VS Time';
xLabel1 = 'Elapsed Time (s)';
yLabel1 = 'Load (KN)';
legend1 = 'Load Cell 1'
plotTitle2 = 'Displacement VS Time';
xLabel2 = 'Elapsed Time (s)';
yLabel2 = 'Displacement (mm)';
legend2 = 'Displacement Sensor 1'
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
yMax1 = 10000000
yMin1 = 0
yMax2 = 10000000
yMin2 = 0
plotGrid = 'on';
min1 = 0;
max1 = 10000;
min2 = 0;
max2 = 10000;
delay = .001;
time = 0;
data1 = 0;
data11 = 0;
data12 = 0;
data2 = 0;
data21 = 0;
data22 = 0;
count = 0;
subplot(2,4,1)
plotGraph1 = plot(time,data1,'-r')
subplot(2,4,2)
plotGraph2 = plot(time,data2,'-r')
hold on
title(plotTitle1,'FontSize',5);
xlabel(xLabel1,'FontSize',5);
ylabel(yLabel1,'FontSize',5);
axis([yMin1 yMax1 min1 max1]);
title(plotTitle2,'FontSize',5);
xlabel(xLabel2,'FontSize',5);
ylabel(yLabel2,'FontSize',5);
axis([yMin2 yMax2 min2 max2]);
grid(plotGrid);
tic
figure (1)
while ishandle(plotGraph1)
dat1 = read_HX711(loadcell)-1940.225269
count = count + 1;
time(count) = toc;
data1(count) = dat1(1);
set(plotGraph1,'XData',time,'YData',data1);
axis([0 time(count) min1 max1]);
pause(delay);
end
hold on
figure (2)
while ishandle(plotGraph2)
dat2 = readVoltage(a,'A0')*80
count = count + 1;
time(count) = toc;
data2(count) = dat2(1);
set(plotGraph2,'XData',time,'YData',data2);
axis([0 time(count) min2 max2]);
pause(delay);
end
hold off
delete(a);
disp('Plot Closed and arduino object has been deleted');
0 commentaires
Réponse acceptée
darova
le 20 Avr 2019
Try to use subplot() each time you want plot or modify something in figure
subplot(2,4,1)
plotGraph1 = plot(time,data1,'-r')
title(plotTitle1,'FontSize',5);
xlabel(xLabel1,'FontSize',5);
ylabel(yLabel1,'FontSize',5);
axis([yMin1 yMax1 min1 max1]);
subplot(2,4,2)
plotGraph2 = plot(time,data2,'-r')
title(plotTitle2,'FontSize',5);
xlabel(xLabel2,'FontSize',5);
ylabel(yLabel2,'FontSize',5);
axis([yMin2 yMax2 min2 max2]);
grid(plotGrid);
tic
% figure (1) % already created with "plotGraph1 = plot(time,data1,'-r')"
subplot(2,4,1), hold on
while ishandle(plotGraph1)
dat1 = read_HX711(loadcell)-1940.225269
count = count + 1;
time(count) = toc;
data1(count) = dat1(1);
% set(plotGraph1,'XData',time,'YData',data1);
plot(time, data1, '-r')
axis([0 time(count) min1 max1]);
pause(delay);
end
hold off
subplot(2,4,1), hold on
% figure (2) % already created with "plotGraph2 = plot(time,data2,'-r')"
while ishandle(plotGraph2)
dat2 = readVoltage(a,'A0')*80
count = count + 1;
time(count) = toc;
data2(count) = dat2(1);
% set(plotGraph2,'XData',time,'YData',data2);
plot(time, data2, '-r')
axis([0 time(count) min2 max2]);
pause(delay);
end
hold off
6 commentaires
darova
le 21 Avr 2019
To draw a line "plot" needs at least 2 points ( plot([x1 x2], [y1 y2]) )
subplot(2,4,1), hold on
subplot(2,4,2), hold on
tic
n = 2000; % 2000 measurements
[time, data1, data2] = deal( zeros(1,n) );
time(1) = 0;
data1(1) = read_HX711(loadcell)-1940.225269
data2(2) = readVoltage(a,'A0')*80
for count = 2:n
dat1 = read_HX711(loadcell)-1940.225269
dat2 = readVoltage(a,'A0')*80
time(count) = toc;
data1(count) = dat1(1);
data2(count) = dat2(1);
subplot(2,4,1)
plot([time(count-1) time(count)], ...
[data1(count-1) data1(count)],'.-b');
% axis([0 time(count) min1 max1]);
subplot(2,4,2)
plot([time(count-1) time(count)], ...
[data2(count-1) data2(count)],'.-r');
% axis([0 time(count) min2 max2]);
drawnow
pause(delay);
end
subplot(2,4,1), hold off
subplot(2,4,2), hold off
delete(a);
disp('Plot Closed and arduino object has been deleted');
Which way do you stop the code? Closing figure or script is not enough
Use Ctrl+C
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur MATLAB Support Package for Arduino Hardware dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!