2017-07-31 2 views
0

J'ai deux tâches à faireTraçage Accéléromètre valeur 3 axes dans Matlab

  1. obtenir des données en série à partir de micro-contrôleur.
  2. traçant la valeur de 3 axes en temps réel.

Pour premiers temps, je le code suivant:

s=serial('COM10'); 
fopen(s); 
out=fscanf(s); 
while(out~=0) 
out=fscanf(s); 
disp(out); 
end 
fclose(s); 

maintenant dans la deuxième partie, je dois tracer là des données en temps réel comment puis-je faire, suis nouveau Matlab j'ai essayé le code exemple suivant pour tracer 3 valeurs mais n'a pas fonctionné. aidez s'il vous plaît.

x = -50; 
y = 10; 
z = 20; 
while(1) 

plot3(x,y,z); 
XLABEL('X Axis'); 
YLABEL('Y Axis'); 
ZLABEL('Z Axis'); 
set(gca, 'XColor', 'r', 'YColor', [0 0.5 0.5], 'ZColor', 'y') 
x=x+2; 
y=y+2; 
z=z+2; 
end 
+0

Qu'est-ce qui n'a pas fonctionné concernant la solution que vous avez publiée? S'il vous plaît, utilisez des majuscules dans votre texte. – Bernhard

+0

@Bernhard L'intrigue ne montre aucune ligne, comme l'idée était de tracer 3 valeurs dans une boucle infinie.Alors je peux mettre en œuvre la même chose quand je vais obtenir la valeur 3 axes sur uart continuellement.Est-ce la bonne approche? –

Répondre

0

Modifier le code, l'utilisation parcelle qu'une seule fois:

X=[];Y=[];Z=[]; 
x=0;y=0;z=0; 
figure(1); 
myplot=plot3(x,y,z); 
while(1) 
    x=x+1; 
    y=sin(x); 
    z=cos(x); 
    X(end+1)=x; 
    Y(end+1)=y; 
    Z(end+1)=z; 
    set(myplot,'Xdata',X,'YData',Y,'ZData',Z); 
    drawnow limitrate; 
end 

Si la boucle suffisamment longtemps, ne pas oublier de limiter X, Y, tailles Z (par exemple tous les 1000 échantillons supprimer 500)