LusoRobótica - Robótica em Português
Robótica => Iniciantes => Tópico iniciado por: nunosilvarocha em 10 de Janeiro de 2010, 17:01
-
Hoje como esta frio decidi pegar no arduino e fazer dele um termómetro.
Depois reparei que seria giro transportar esses dados para uma folha excel e construir um gráfico!!
A minha duvida e como ler os dados da porta USB (COM9 no meu caso) para poder construir o tal gráfico!!
-
O seguinte link poderá dar-lhe as dicas necessárias:
http://www.microlink.co.uk/rs232.html (http://www.microlink.co.uk/rs232.html)
-
pois, ler os dados da porta COM eu consigo, mas como ponho isso no EXCEL para poder construir gráficos e tabelas a fim de analisar os dados??
-
és capaz de ter que fazer uma aplicaçãozita pra fazer a interacção entre o que recebes da com e o excel.. C# ou VB são boas opções, suponho.
-
Há uma maneira simples e directa que é criar um CSV, mas não permite fazer a coisa "em tempo real", isto é, é preciso criar o CSV e depois abrir o CSV.
O CSV é um ficheiro de texto com um formato simples. Se tiveres apenas 1 variável para mostrar, é só um ficheiro com 1 valor por linha, tipo:
25
24
24
25
...
Se tiveres vários valores por linha (várias colunas) então separas por ";":
12:00; 25
12:30; 24
13:00; 24
13:30; 25
...
-
E como crio um CSV??
-
Crias com qualquer programa... Um CSV não é mais do que um ficheiro de texto com sintaxe específica.
Aconselho a usares o Processing... É tudo o que precisas para fazeres o gráfico...
Ora vê isto:
http://ricardodias.wordpress.com/projectos-pessoais/central-de-temperatura/ (http://ricardodias.wordpress.com/projectos-pessoais/central-de-temperatura/)
-
No excel tens Visual Basic numa versão minimal que não sei se será suficiente para ler dados pela porta COM. Experimenta!
Em C# tens aqui um exemplo que te pode ajudar: http://bravomofo.blogspot.com/2009/12/talk-to-arduino-with-c.html (http://bravomofo.blogspot.com/2009/12/talk-to-arduino-with-c.html)
Esse programa envia dados para o Arduino. A unica coisa que terias que alterar era "serial.Write()" para "serial.Read()" e o inverso no código do Arduino.
Depois podes fazer o gráfico também em C#, utilizando GDI. Se ainda assim quiseres enviar os dados para o Excel penso haverem classes que te permitam faze-lo, é procurar no google.
Edit: escrevi ao mesmo tempo do microbyte. eu nao estou habituado a processing mas parece-me ser uma melhor opção neste caso!
-
Boas,
Assim de cabeça, podes fazer isso com alguma facilidade com um script em VB usando a interface
Comum Object Model (ora aqui esta um exemplo de uma verdadeira API).
Crias um instância de objectos COM (Comum Object Model, não confundir com "com" da porta) para
uma folha Excel e para a Porta Serie e depois usas as propriedades e métodos dos mesmos para ler
os dados da porta serie e espetar os mesmos na folha Excel.
Tens tudo aqui:
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx (http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx)
http://msdn.microsoft.com/en-us/library/wss56bz7(VS.80).aspx (http://msdn.microsoft.com/en-us/library/wss56bz7(VS.80).aspx)
Abraços
Paulo A.
-
Podes usar o PLX-DAQ Data Acquisition for Excel gratuito da Parallax http://www.parallax.com/tabid/393/Default.aspx (http://www.parallax.com/tabid/393/Default.aspx)
Eles fornecem exemplos para o BS2, SX e Propeller, mas pode ser utilizado com qualquer uC que envie dados pela UART.
Depois de instalado nota-se q se trata apenas de um ficheiro Excel com script em VB como já foi dito. Também traz um ficheiro de ajuda que explica o formato (muito simples) dos dados a enviar pela porta COM. Ao abrir o ficheiro Excel é preciso activar macros senão não funciona.
Tive a experimentar com o Arduino... Funciona bem. Dá para visualizar os dados no gráfico em tempo real sem ter de fazer mais nada. Qq dúvida é só perguntar :D.
-
Eu uso VB para fazer essas intereções e acredicto que terás mais mobilidade ao gráfico.
O problema será ter de baixar o compilador.
-
Vê lá se esta aplicação serve para o que tu queres: http://mikmo.dk/gobetwino.html (http://mikmo.dk/gobetwino.html)