Bom pessoal estou tentando fazer a leitura de um sensor em Real-time para o excel.

Em parte ja consegui estou com uma dificuldade em fazer o gráfico do excel voltar ao inicio quando,quando a leitura chega ao fim da area do gráfico.

Se alguém puder me ajudar..?

Exibições: 2743

Responder esta

Respostas a este tópico

hehe mundo pequeno Allan,mais meus parabéns ótimo conteúdo.

Bom se achar algo ai me avisa!

/*

  ALLAN DAVID SILVA DA COSTA
  ELETROTÉCNICO
  TECNOLOGO EM AUTOMAÇÃO INDUSTRIAL
  GRADUANDO EM ENGENHARIA ELÉTRICA


--> TODOS OS DADOS SÃO SALVOS EM UM "SD CARD" PARA ANALISE DO HISTÓRICO

*/

#include <SD.h>

//  VARIÁVEIS DE USO GERAL
int sensor1 = 5;                                                            //  PINO ANALÓGICO 5
int sensor2 = 4;                                                            //  PINO ANALÓGICO 4
int valor1 = 0;                                                             //  VALOR LIDO NA ENTRADA ANALÓGICA 5
int valor2 = 0;                                                             //  VALOR LIDO NA ENTRADA ANALÓGICA 4
float temp1 = 0;                                                            //  VARIÁVEL QUE RECEBERÁ VALOR CONVERTIDO DO SENSOR 1
float temp2 = 0;                                                            //  VARIÁVEL QUE RECEBERÁ VALOR CONVERTIDO DO SENSOR 2
float tempmedia = 0;                                                        //  TEMPERATURA MÉDIA MEDIDA


//  VARIÁVEIS PARA O "SD CARD"
int pin10 = 10;                                                             //  PINO DIGITAL 10
File sdcard;                                                                //  VARIÁVEL PARA INCIALIZAÇÃO DO SD CARD

//  VARIÁVEIS DA COMUNICAÇÃO SERIAL COM O EXCEL (PLX-DAQ)                   //  NÃO PODE USAR O "MONITOR SERIAL" DO IDE DO ARDUINO (CONFLITO)                                                                  //  
int ROW = 0; //  VARIÁVEL QUE SE REFERE AS LINHAS DO EXCEL
int LABEL = 1;

void setup() {
  Serial.begin(9600);                                                       //  INICIALIZAÇÃO DA COMUNICAÇÃO SERIAL
  Serial.println("CLEARDATA");                                              //  RESET DA COMUNICAÇÃO SERIAL
  Serial.println("LABEL,Time,TEMP1,TEMP2,TEMPMEDIA");                       //  NOMEIA AS COLUNAS
    
    pinMode(pin10, OUTPUT);                                                 //  COMO ESTA SENDO USADO O SHIELD ETHERNET+SD CARD
    if (!SD.begin(4)) {                                                     //  É NECESSÁRIO "DESLIGAR" O PINO DO ETHERNET, OU SEJA,
    return;                                                                 //  O PINO 10. O PINO 4 É O PINO DO SD CARD.
    }
}

void loop() {
 
  valor1 = analogRead(sensor1);                                             //  LEITURA DO PINO A5
  valor2 = analogRead(sensor2);                                             //  LEITURA DO PINO A4
  temp1 = valor1 * 0.00488;                                                 //  5 VOLTS / 1023 = 0.00488
  temp2 = valor2 * 0.00488;                                                 //
  temp1 = temp1 * 100;                                                      //  CONVERTER milivolts PARA CELCIUS
  temp2 = temp2 * 100;                                                      //
  tempmedia = (temp1+temp2)/2;                                              //  TEMPERATURA MÉDIA
 
  sdcard = SD.open("histemp.txt", FILE_WRITE);                            //  ABRE A COMUNICAÇÃO COM O SD
 
  Serial.print("DATA,TIME,");   //  INICIA A "IMPRESSÃO" DOS DADOS, SEMPRE INICIANDO COM O "TIME"
  Serial.print(temp1);                                                      //  DADOS ENVIADOS PARA A "SERIAL" (EXCEL) E PARA O "SD CARD"
  sdcard.print(temp1);                                                      //  
  Serial.print(",");                                                        //
  sdcard.print("   ");                                                      //
  Serial.print(temp2);                                                      //
  sdcard.print(temp2);                                                      //  
  Serial.print(",");                                                        //
  sdcard.print("   ");                                                      //
  Serial.println(tempmedia);                                                //
  sdcard.println(tempmedia);                                                //

  sdcard.close();                                                           //  FECHA A COMUNICAÇÃO COM O SD. "EXTREMAMENTE NECESSÁRIO
                                                                            //  PARA VISUALIZAÇÃO DOS DADOS NO SD".  
  ROW++;                                                                    //  INCREMENTA A LINHA DO EXCEL
  if (ROW > 500)                                                            //  LAÇO PARA LIMITAR A QUANTIDADE DE DADOS ENVIADOS, SERVE PARA LIMITAR O GRÁFICO
  {                                                                         //
    ROW=0;                                                                  //  RESET DA LINHA
    Serial.println("ROW,SET,2");                                            //  ALIMENTAÇÃO DAS LINHAS COM OS DADOS, INICIANDO DA LINHA 2
  }                                                                         //
   
  delay(500);                                                              //  ESPERA CINCO SEGUNDOS PARA NOVA LEITURA
}

DE QUEBRA, ESTE CODIGO SLAVA OS DADOS EM UM CARTAO SD COM O AUXILIO DE UM SHIELD. ABRAÇOS (obs. FUNCIONANDO!!!)

Opa blz vou testar aqui..

Alan, 

modifiquei o código para fazer a leitura de potenciômetro mais o estranho é que não reinicia o gráfico quando chega em 500 ele simplesmente escreve no excell row,set,2.

No excel eu devo apenas selecionar as 500 linha e colocar inserir grífico né?

não preciso configurar nada ?

coloca teu codigo aqui....


byte potpin = 0;
int row = 0;
int LABEL = 1;
int val = 0;

void setup(){
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL,Time,val,row");
}


void loop(){

val = analogRead(potpin);
Serial.println(val);

Serial.print("DATA,TIME,");
Serial.print(val);
Serial.print(",");
row++;
if (row > 500)
{
row=0;
Serial.println("ROW,SET,2");
}
delay(500);


}

retire:

Serial.println(val);

declare uma variavel para row++ ... assim, tente:

float potpin = 0;
int ROW = 0;
int LABEL = 1;
int val = 0;

void setup(){
Serial.begin(9600);
Serial.println("CLEARDATA");
Serial.println("LABEL,Time,val,ROW");
}


void loop(){

val = analogRead(potpin);

ROW++;

Serial.print("DATA,TIME,");
Serial.print(val);
Serial.print(",");

Serial.println(ROW);

if (ROW > 500)
{
ROW = 0;
Serial.println("ROW,SET,2");
}
delay(500);


}

TENTA AE.... as ordens!

Cara  tu é o cara funcionou..

A muito tempo to tentando fazer isso funcionar brigado msm..

Se precisar de min para alguma coisa estou ai!

Funcionou!?

sim funcionou!

Novamente brigado msm.

Depois de tudo funcionou legalzinho.. ai resolvi fazer um tutorial..

http://www.youtube.com/watch?v=bVOwB2NQ9ok

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço