Graficar en dos axes de un GUI, señales leidas por dos puertos de Arduino
Publicado por Stephs (1 intervención) el 07/12/2020 19:14:30
Ayuda!!
Lo que pasa es que quiero graficar dos señales de entrada de Arduino, leídas en vivo a los axes de GUI Matlab, si se grafican pero las dos se mandan al axes2 y no una a cada una, intente de todo pero por la manera de ordenar de mi código creo que no me lo permite, si alguien sabe como especificar el axes en drawnow de cada uno, seria genial.. Muchas gracias!
Lo que pasa es que quiero graficar dos señales de entrada de Arduino, leídas en vivo a los axes de GUI Matlab, si se grafican pero las dos se mandan al axes2 y no una a cada una, intente de todo pero por la manera de ordenar de mi código creo que no me lo permite, si alguien sabe como especificar el axes en drawnow de cada uno, seria genial.. Muchas gracias!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
%close all;
clc;
delete(instrfind({'port'},{'COM6'}));%LECTURA CORRIENTE
puerto = serial('COM6','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
delete(instrfind({'port'},{'COM3'}));%LECTURA VELOCIDAD
puerto1 = serial('COM3','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
fopen(puerto);
fopen(puerto1);
tmax = 40; % tiempo de captura en s
rate = 2.3;
l1 = line(nan,nan,'Color','r','LineWidth',1);
l2 = line(nan,nan,'Color','b','LineWidth',1);
axes(handles.axes3);
xlim([0 tmax])
ylim([0 100])
title('Corriente en Fases de Motor');
xlabel('Tiempo (s)');
ylabel('Amperios');
grid on;
hold on;
axes(handles.axes2);
xlim([0 tmax])
ylim([0 100])
title('Velocidad del Motor');
xlabel('Tiempo (s)');
ylabel('Km/h');
grid on;
hold on;
v1 = zeros(1,tmax*round(rate));
v2 = zeros(1,tmax*round(rate));
i = 1;
t = 0;
% ejecutar bucle cronometrado
tic
while t<tmax
t=toc;
valorADC=fscanf(puerto,'%f')';
valorADC1=fscanf(puerto1,'%f')';
v1(i)=valorADC(1);
v2(i)=valorADC1(1);
x = linspace(0,i/rate,i);
y = linspace(0,i/rate,i);
set(l1,'YData',v1(1:i),'XData',x);
drawnow
set(l2,'YData',v2(1:i),'XData',y);
drawnow
% seguir
i = i+1;
end
plot(x,v1)
plot(y,v2)
clc;
fprintf('%g s de captura a %g cap/s \n',t,i/t);
fclose(puerto);
fclose(puerto1);
delete(puerto);
delete(puerto1);
clear puerto;
clear puerto1;
Valora esta pregunta


0