Guest User

Captura de datos con MATLAB

a guest
Sep 11th, 2011
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.32 KB | None | 0 0
  1. %Captura de datos mediante MATLAB
  2.  
  3. %borrar previos
  4. delete(instrfind({'Port'},{'COM4'})); %ajustar puerto serie!
  5. %crear objeto serie
  6. s = serial('COM4','BaudRate',9600,'Terminator','CR/LF');
  7. warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
  8. %abrir puerto
  9. fopen(s);
  10.  
  11. % parámetros de medidas
  12. tmax = 10; % tiempo de captura en s
  13. rate = 33; % resultado experimental (comprobar)
  14.  
  15. % preparar la figura
  16. f = figure('Name','Captura');
  17. a = axes('XLim',[0 tmax],'YLim',[0 5.1]);
  18. l1 = line(nan,nan,'Color','r','LineWidth',2);
  19. l2 = line(nan,nan,'Color','b','LineWidth',2);
  20.  
  21. xlabel('Tiempo (s)')
  22. ylabel('Voltaje (V)')
  23. title('Captura de voltaje en tiempo real con Arduino')
  24. grid on
  25. hold on
  26.  
  27. % inicializar
  28. v1 = zeros(1,tmax*rate);
  29. v2 = zeros(1,tmax*rate);
  30. i = 1;
  31. t = 0;
  32.  
  33. % ejecutar bucle cronometrado
  34. tic
  35. while t<tmax
  36.     t = toc;
  37.     % leer del puerto serie
  38.     a = fscanf(s,'%d,%d')';
  39.     v1(i)=a(1)*5/1024;
  40.     v2(i)=a(2)*5/1024;
  41.     % dibujar en la figura
  42.     x = linspace(0,i/rate,i);
  43.     set(l1,'YData',v1(1:i),'XData',x);
  44.     set(l2,'YData',v2(1:i),'XData',x);
  45.     drawnow
  46.     % seguir
  47.     i = i+1;
  48. end
  49. % resultado del cronometro
  50. clc;
  51. fprintf('%g s de captura a %g cap/s \n',t,i/t);
  52. %savefigure('captura_multi','s',[4.5 3],'po','-dpdf')
  53.  
  54. %% Limpiar la escena del crimen
  55. fclose(s);
  56. delete(s);
  57. clear s;
Add Comment
Please, Sign In to add comment