Ir ao conteúdo
  • Cadastre-se

lubao

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Exatamente, man! Não estou conseguindo identificar os dados do sensor 1 e do sensor 2 no serial (preciso separá-los). No código do Arduíno estou simplesmente encaminhando os dados dos dois sensores um abaixo do outro para o serial, mas quando o Matlab lê, ele enxerga como sendo apenas um dado e por isso não consigo fazer um gráfico. Saberia como fazer a identificação de cada valor no Matlab??? Já me falaram que posso fazer um separador na saída serial do Arduíno, por exemplo, colocando uma barra " / " entre os valores, que assim o Matlab iria conseguir identificar cada um.. mas não estou conseguindo implementar isso. Obs.: Não coloquei o código completo do Arduíno para deixar a postagem menor, mas no código tá com as leituras dos sensores tudo certinho, com o trigger, echo etc.
  2. Fala galera!! Vou deixar de forma bem esquemática a minha situação para facilitar: O que preciso?? Fiz um código no arduino para enviar dados de 2 sensores ultrasom via serial. Preciso de um código no Matlab para receber os valores dos dois sensores e plotar um ou dois (só um de preferência) gráficos com os resultados pelo tempo. O que tenho?? Como falei, já fiz o código no arduino. Também tenho um código no Matlab onde só consigo receber 1 valor, ou seja, o código é útil quando envio apenas 1 dado pelo serial (seria de 1 sensor). Detalhe: o código do Matlab também salva os dados em um arquivo .txt . Código no arduino (apenas o trecho com o envio dos dados via serial): void setup() { Serial.begin(9600); } void loop() { Serial.println(sensor1); Serial.println(sensor2); } Código no Matlab: delete(instrfindall); %limpa todos os instrumentos anterioarmente abertos na serial clear all; close all; clc; s = serial('COM5'); % atribui o objeto à porta serial set(s, 'InputBufferSize', 16); % Número de bytes no buffer de entrada set(s, 'FlowControl', 'hardware'); set(s, 'BaudRate', 9600); set(s, 'Parity', 'none'); %s.ReadAsyncMode = 'continuous'; set(s, 'DataBits', 8); % Procura por "Serial Configurada" no help set(s, 'StopBit', 1); set(s, 'Timeout', 1000); % Tempo em segundos que o matlab aguarda por novos dados. disp(get(s, 'Name')); % Mostra o nome "Serial - COM5" prop(1) = (get(s, 'BaudRate')); % Prop é apenas um vetor de strings que nesse caso tem 4 posições prop(2) = (get(s, 'DataBits')); prop(3) = (get(s, 'StopBit')); prop(4) = (get(s, 'InputBufferSize')); disp(['Port Setup Done!!', num2str(prop)]); % help num2str: converte numeros para uma string fopen(s); % Abre a porta serial. t=1; disp('Running'); while(t <= 5) % Executa 100 ciclos - se você não consegue ver o símbolo, isto é sinal de "menos de" a = fgetl(s); % fread(a, 4, 'single');% ('SIZE', 16.000, 'PRECISION','%f');%Reads the data from fprintf('%s', a); x(t) = t*0.100; % Multiplicando pela taxa de amostragem % x(t) e y(t) são para construir um y(t) = str2double(a); % a é uma string, srt2num converte uma string para um número t = t+1; a = 0; % Limpa o buffer end time = clock; adress = 'D:\Matlab\Dados_'; dia = num2str(time(3)); mes = num2str(time(2)); ano = num2str(time(1)); horas = num2str(time(4)); minutos = num2str(time(5)); nome_do_arquivo = strcat(adress,dia,'-',mes,'-', ano,'-',horas,'-',minutos,'.txt.'); id_do_arquivo = fopen(nome_do_arquivo,'wt'); % wt=write, refere-se à ação que se deseja fazer t=1; while(t <= 5) fprintf(id_do_arquivo,'\t%5.2f\t%8.2f\n',x(t),y(t)); t = t+1; end fclose(id_do_arquivo); fclose(s); plot(x,y) Agradeço muito se alguém puder ajudar!!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...