Para facilitar a vida de todos, criamos um programa/script em Python que, de forma simples, permite qualquer pessoa fazer gráficos sem precisar saber programar nada. A única coisa que você precisa é ter instalado o Python (>2.6), a biblioteca Matplotlib e fazer o download do nosso programa CLICANDO AQUI.
Como usar o programa:
Para quem usa Linux é simples, basta abrir um terminal e dar o comando "python grafico.py". O programa vai perguntar em qual porta o Arduino está conectado, tipicamente é a porta 0 (zero). Depois de informar a porta o programa fica esperando os dados chegarem do Arduino. O programa pode mostrar o gráfico deixo o eixo X "fixo" ou movendo o eixo X junto com os dados. No modo "fixo" o eixo X começa em X=0 e vai aumentando o X final conforme os dados vão chegando. No outro modo ele modifica o X inicial e final de forma que a diferença (DX) seja constante. Para alternar entre os modos, você precisa abrir o programa em um editor de texto e modificar a primeira linha do programa. Se você usar DX=0 o programa roda em modo fixo e se DX for diferente de 0 ele vai ajustar o X inicial e final conforme os dados forem sendo recebidos. O programa aceita até 6 gráficos simultâneos.
Como enviar os dados do Arduino para o programa:
A comunicação entre o programa e o Arduino é feita por comunicação serial. Você deve usar o comando Serial.print() e Serial.println() para enviar seus dados do Arduino. Os dados devem estar formatados da seguinte forma:gráfico; valor em x; valor em y , onde "gráfico" é o número do gráfico que você enviar os dados (o programa aceita fazer até 6 gráficos simultaneamente). Note que os dados são separados por ponto e vírgula. Abaixo temos um código que envia os valores das portas analógicas 0 e 1 como o dado em Y e o tempo como o dado em X.
Usando o Ardublock:void setup(){Serial.begin(9600);}void loop(){Serial.print('1');Serial.print(";");Serial.print(millis());Serial.print(";");Serial.print(analogRead(0));Serial.println("");delay(50);Serial.print('2');Serial.print(";");Serial.print(millis());Serial.print(";");Serial.print(analogRead(1));Serial.println("");delay(50);}