Hola, estaba mirando como graficar las entradas del microcontrolador con octave. He visto este enlace que hace lo mismo pero con Matlab, he intentado copiarlo directamente a Octave a ver que pasaba. 1) Octave no trae de serie las funciones y por tanto hay que descargarse el paquete por separado, 2) no lo acaba de traducir bien.
El texto que quiero traducir es:
PD: la segunda linea la he añadido yo
No me funciona la función scanf: valor_potenciometro=fscanf(puerto_serial,'%d')
En concreto la función scanf, deduzco que está en el paquete especializado en la lectura de datos... pero no sé como cambiarlo. El link de la descripción de las funciones es: http://octave.sourceforge.net/instru.../overview.html
Estoy pensando que quizá tengo que escribir, para evitar posibles confusiones entre esta función y otra fopen que pueda traer por defecto octave.
@octave_serial/fopen en vez de open, etc.
Investigaré. Si alguno tiene alguna sugerencia y me pueda ayudar, queda agradecido.
Muchas gracias por adelantado, Saludos.
- - - Actualizado - - -
Hola, no lo he podido solucionar lo que proponía en el hilo. Pero ya que he visto que las nuevas versiones del Arduino IDE (que por cierto, no vienen en el centro de software de Ubuntu) crean su propia gráfica, ya no me hace falta verlo en un programa externo.
Gracias.
El texto que quiero traducir es:
PD: la segunda linea la he añadido yo
No me funciona la función scanf: valor_potenciometro=fscanf(puerto_serial,'%d')
Código:
function Arduino_octave(numero_muestras)
pkg load instrument-control
close all;
clc;
y=zeros(1,1000); %Vector donde se guardarán los datos
%Inicializo el puerto serial que utilizaré
puerto_serial=serial('/dev/ttyACM0',9600);
%Abro el puerto serial
fopen(puerto_serial);
%Declaro un contador del número de muestras ya tomadas
contador_muestras=1;
%Creo una ventana para la gráfica
figure('Name','Serial communication: Matlab + Arduino. Mario Pérez Esteso')
title('SERIAL COMMUNICATION MATLAB+ARDUINO');
xlabel('Número de muestra');
ylabel('Voltaje (V)');
grid on;
hold on;
%Bucle while para que tome y dibuje las muestras que queremos
while contador_muestras<=numero_muestras
ylim([0 5.1]);
xlim([contador_muestras-20 contador_muestras+5])
valor_potenciometro=fscanf(puerto_serial,'%d')
y(contador_muestras)=(valor_potenciometro(1))*5/1024
plot(contador_muestras,y(contador_muestras),'X-r')
drawnow
contador_muestras=contador_muestras+1
end
%Cierro la conexión con el puerto serial y elimino las variables
fclose(puerto_serial);
delete(puerto_serial);
clear all;
end
Estoy pensando que quizá tengo que escribir, para evitar posibles confusiones entre esta función y otra fopen que pueda traer por defecto octave.
@octave_serial/fopen en vez de open, etc.
Investigaré. Si alguno tiene alguna sugerencia y me pueda ayudar, queda agradecido.
Muchas gracias por adelantado, Saludos.
- - - Actualizado - - -
Hola, no lo he podido solucionar lo que proponía en el hilo. Pero ya que he visto que las nuevas versiones del Arduino IDE (que por cierto, no vienen en el centro de software de Ubuntu) crean su propia gráfica, ya no me hace falta verlo en un programa externo.
Gracias.



