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..?
Tags:
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..
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por