HOW CAN I DO A CONTINUOUSLY MATLAB GRAPH AUTO UPDATABLE

1 visualización (últimos 30 días)
Gerard Nava
Gerard Nava el 4 de Jun. de 2018
Editada: Gerard Nava el 4 de Jun. de 2018
I am adquiring data from arduino, froman ultra sonic sensor and from de position of a servo motor , i have two variables i have a huge problem ..well two
first i need to plot in real time, i did it, but i run the program, then it plots, then restarts the program and so the counter in x axis , i have red other old post about this , but ,i just dont get it, i need two graph "current_pos", and "t"
Second after that i need to derive current_pos to get its velocity, and then derive it again to get acceleration , is that even possible? to differentiate or derive an input in order to get another physic analysis?, if so , it would be current_pos, Vel=[diff(current_pos)]; Accel=[diff(Vel)]; -- i did it and didnt worked -- please help i needed for tomorrow morning %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
a = arduino ('COM3', 'Uno', 'Libraries',{'Servo','JRodrigoTech/HCSR04'} );
s = servo(a, 'D4')
sensor = addon(a, 'JRodrigoTech/HCSR04', 'D12', 'D8')
clear s;
s = servo(a, 'D4', 'MinPulseDuration', 700*10^-6, 'MaxPulseDuration', 2300*10^-6)
for i=1:1
writePosition(s,0);
current_pos = readPosition(s);
current_pos = current_pos*180;
fprintf('Current motor position is %d degrees\n', current_pos);
t = readTravelTime(sensor)*100;
sprintf('Current distance is %.4f cm\n', 340*t/2)
pause (1);
writePosition(s,0.5);
current_pos = readPosition(s);
current_pos = current_pos*180;
fprintf('Current motor position is %d degrees\n', current_pos);
t = readTravelTime(sensor)*100;
sprintf('Current distance is %.4f cm\n', 340*t/2)
pause (1);
writePosition(s,1);
current_pos = readPosition(s);
current_pos = current_pos*180;
fprintf('Current motor position is %d degrees\n', current_pos);
t = readTravelTime(sensor)*100;
sprintf('Current distance is %.4f cm\n', 340*t/2)
pause (1); end %%%%%%%%%%%%%%%%555
  2 comentarios
Gerard Nava
Gerard Nava el 4 de Jun. de 2018
Editada: Gerard Nava el 4 de Jun. de 2018
i did this ...
init_time=1
interv=3
x=0
while(init_time<interv)
b=current_pos;
x=[x,b];
plot(x)
grid ON
init_time=init_time+1;
drawnow
-.................... didnt worked
i want to reach here:
V=[ diff(t)]
A=[ diff(V)]
W=[ diff(current_pos)]
ALP=[ diff(W)]
subplot(3,2,1),plot(t,'k'),ylabel('Posición '),xlabel('Tiempo'),title('Grafica de posición s','FontSize',12)
subplot(3,2,3),plot(V,'g'),ylabel('Velocidad '),xlabel('Tiempo'),title('Grafica de Velocidad s','FontSize',12)
subplot(3,2,5),plot(A,'r'),ylabel('Aceleración '),xlabel('Tiempo'),title('Grafica de Aceleración s','FontSize',12)
subplot(3,2,2),plot(current_pos,'g'),ylabel('Posición '),xlabel('Tiempo'),title('Grafica de posición Angular', 'FontSize',12)
subplot(3,2,4),plot(W,'c'),ylabel('Velocidad '),xlabel('Tiempo'),title('Grafica de Velocidad Angular', 'FontSize',12)
subplot(3,2,6),plot(ALPHA,'r'),ylabel('Aceleración'),xlabel('Tiempo'),title('Grafica de Aceleracón Angular', 'FontSize',12)
ti=ti+pass drawnow
But with no reset on x axis, like from 0 to 10 and then reset, my gram using the first program of my comment ,( first adquires and writes data then graph then reset )ETC. over and over, i want to write , read data and continuously graph data is that possible?
sloppydisk
sloppydisk el 4 de Jun. de 2018
First of all these links maybe useful

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre LEGO MINDSTORMS EV3 Hardware en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by