Matlab - Grafica en tiempo real

 
Vista:
sin imagen de perfil

Grafica en tiempo real

Publicado por denis (18 intervenciones) el 11/11/2015 10:18:56
Hola muy buenas me estaba preguntando si alguien me podria ayudar a hacer una grafica en tiempo real, os cuento estoy usando matlab para la aduisicion de datos a traves de arduino por puerto serial, puedo adquirir los datos e incluso graficarlos el problema es que lo quiero hacer en funcion del tiempo y no en funcion de las muestras. Aqui os dejo el codigo, gracias de antemano.
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
%AQUI INICIALIZO EL PUERTO SERIAL 
delete(instrfind({'Port'},{'COM3'}));
s=serial('COM3');
s.BaudRate=9600;
%CREO LA VARIABLE MUESTRAS 'muestras' Y CONTADOR 'i'
muestras=10;
i=1;
temperatura=[];
humedad=[];
tic;
for i=1:muestras
 
    %ABRO EL PUERTO SERIAL
    fopen(s)
    %IMPRIMO EN EL COMMAND WINDOW
    fprintf(s, 'datos')
    %VARIABLE PARA LA ENTRADA DE DATOS DE ARDUINO
    salida = fscanf(s)
    %PASO A VALORES EN BASE 10 Y GRAFICA DE LOS DATOS, COGER LOS 4
    %PRIMEROS DIGITOS QUE SON LOS DE LA TEMPERATURA
temperatura(i)=str2double (salida(1:4))/100;
 subplot(211);
 plot(temperatura,'g');
 axis([0,i,0,50]);
title('temperatura vs tiempo');
xlabel('tiempo');
ylabel('temperatura');
grid
 
fclose(s)
i=i+1;
drawnow;
end
delete(s)
clear s
time=toc;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Grafica en tiempo real

Publicado por Royeth (1818 intervenciones) el 11/11/2015 15:32:54
una vez vayas teniendo tus datos del puerto puedes hacer lo siguiente :


1
2
3
4
5
6
7
8
T=randi([50 100],1,10000) %datos aleatorios para ejemplo;
hold on %para que la gráfica no se borre
t=0; %tiempo 0 
while 1 %ciclo infinito 
plot(t,T(t+1),'*') %dibujar el punto de la temperatura en el tiempo que va
pause(1) %pausar el tiempo un segundo
t=t+1; %aumentar en uno el tiempo
end


saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Grafica en tiempo real

Publicado por Denis (18 intervenciones) el 12/11/2015 14:31:50
Muchas gracias lo probare a ver como me va.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar