Enxugamento Gravação Serial e Cartão
//Wilson 27/03/2020
//V6.5 com 4 termopares com shield MAX6675
//União dos projetos Enxugamento com SD Datalogger
//Acionamento de gravação
#include "max6675.h" // biblioteca do shield max6675
#include // biblioteca comunicação serial
#include // biblioteca cartão SD
const int chipSelect = 10;
//primeiro termopar
int so1Pin = 2;// SO=Serial Out do shield termopar
int cs1Pin = 3;// CS = chip select CS pin do shield termopar
int sck1Pin = 4;// SCK = Serial Clock pin do shield termopar
//segundo termopar
int so2Pin = 5;// SO=Serial Out do shield termopar
int cs2Pin = 6;// CS = chip select CS pin do shield termopar
int sck2Pin = 7;// SCK = Serial Clock pin do shield termopar
//terceiro termopar
int so3Pin = 8;// SO=Serial Out do shield termopar
int cs3Pin = 9;// CS = chip select CS pin do shield termopar
int sck3Pin = 52;// SCK = Serial Clock pin do shield termopar
//quarto termopar
int so4Pin = 50;// SO=Serial Out do shield termopar
int cs4Pin = 48;// CS = chip select CS pin do shield termopar
int sck4Pin = 46;// SCK = Serial Clock pin do shield termopar
MAX6675 robojax1(sck1Pin, cs1Pin, so1Pin);// create instance 1 object of MAX6675
MAX6675 robojax2(sck2Pin, cs2Pin, so2Pin);// create instance 2 object of MAX6675
MAX6675 robojax3(sck3Pin, cs3Pin, so3Pin);// create instance 3 object of MAX6675
MAX6675 robojax4(sck4Pin, cs4Pin, so4Pin);// create instance 4 object of MAX6675
const int buttonPin = 44; // constante para botão de aquisição
const int ledPin = 35; // constante pino do LED aquisição ligada
int buttonState = 0; // zerar a variável de estado do botão
float correcao=204.7; // correção para mostrar em tensão
float entradaA8 = 8; // variável que define que a porta A8 é flutuante e zera
float entradaA9 = 9; // variável que define que a porta A9 é flutuante e zera
float entradaA10 = 10; // variável que define que a porta A10 é flutuante e zera
float entradaA11 = 11; // variável que define que a porta A11 é flutuante e zera
float entradaA12 = 12; // variável que define que a porta A12 é flutuante e zera
float entradaA13 = 13; // variável que define que a porta A13 é flutuante e zera
int ROW = 0; // variável para as linhas do Excel
int LABEL = 1;
int val0 = 0; //variável que guarda o valor lido na analógica
int val1 = 1; //variável que guarda o valor lido na analógica
int val2 = 2; //variável que guarda o valor lido na analógica
int val3 = 3; //variável que guarda o valor lido na analógica
int val4 = 4; //variável que guarda o valor lido na analógica
int val5 = 5; //variável que guarda o valor lido na analógica
File dataFile; //Abertura arquivo no SD
void setup() {
Serial.begin(9600); //inicialização serial
Serial.println("CLEARDATA"); // reset da comunicação serial
Serial.println("LABEL,Time,val0,val1,val2,val3,val4,val5,Temp1,Temp2,Temp3,Temp4,ROW"); // nomeia as colunas
pinMode(ledPin, OUTPUT); // informar pino 35 como saída para informar aquisição ligada
pinMode(buttonPin, INPUT); // informar pino 44 como entrada para ligar aquisição
Serial.print("Initializing SD card...");
pinMode(10, OUTPUT); //configuração para shield SD
// see if the card is present and can be initialized:
if (!SD.begin(10, 11, 12, 13)) {
Serial.println("Card failed, or not present");
// don't do anything more:
while (1) ;
}
Serial.println("card initialized.");
// Open up the file we're going to log to!
dataFile = SD.open("datalog.txt", FILE_WRITE);
if (! dataFile) {
Serial.println("error opening datalog.txt");
// Wait forever since we cant write data
while (1) ;
}
}
void loop(){
buttonState = digitalRead(buttonPin); //ler estado do pino 44
// checar se o botão está pressionado. Se sim, buttonState é HIGH. Se não, LOW
//if (buttonState == HIGH) {
// digitalWrite(ledPin, HIGH); // liga LED e continua
val0 = analogRead(entradaA8); // faz a leitura da entrada A8
val1 = analogRead(entradaA9); // faz a leitura da entrada A9
val2 = analogRead(entradaA10); // faz a leitura da entrada A10
val3 = analogRead(entradaA11); // faz a leitura da entrada A11
val4 = analogRead(entradaA12); // faz a leitura da entrada A12
val5 = analogRead(entradaA13); // faz a leitura da entrada A13
ROW++; // incrementa a linha do Excel para que a leitura pule de linha em linha
Serial.print("DATA,TIME,"); // inicia a impressão de dados, sempre iniciando
Serial.print(val0 / correcao);
Serial.print(",");
Serial.print(val1 / correcao);
Serial.print(",");
Serial.print(val2 / correcao);
Serial.print(",");
Serial.print(val3 / correcao);
Serial.print(",");
Serial.print(val4 / correcao);
Serial.print(",");
Serial.print(val5 / correcao);
Serial.print(",");
Serial.print(robojax1.readCelsius()); // termopar 1
Serial.print(",");
Serial.print(robojax2.readCelsius()); // termopar 2
Serial.print(",");
Serial.print(robojax3.readCelsius()); // termopar 3
Serial.print(",");
Serial.print(robojax4.readCelsius()); // termopar 3
Serial.print(",");
Serial.println(ROW);
// make a string for assembling the data to log:
String dataString = "";
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 2; analogPin++) {
//int sensor = analogRead(analogPin);
//dataString += String(sensor);
//if (analogPin < 1) {
//dataString += ",";
// }
dataString+=(val0 / correcao);
dataString += ",";
dataString+=(val1 / correcao);
dataString += ",";
dataString+=(val2 / correcao);
dataString += ",";
dataString+=(val3 / correcao);
dataString += ",";
dataString+=(val4 / correcao);
dataString += ",";
dataString+=(val5 / correcao);
dataString += ",";
dataString+=(robojax1.readCelsius());
dataString += ",";
dataString+=(robojax2.readCelsius());
dataString += ",";
dataString+=(robojax3.readCelsius());
dataString += ",";
dataString+=(robojax4.readCelsius());
}
dataFile.println(dataString);
// print to the serial port too:
Serial.println(dataString);
dataFile.flush(); //'save' the file to the SD card after every
delay(1000); // espera 1000 ms
}
// else {
// digitalWrite(ledPin, LOW); // desliga LED
// }
//}
//V6.5 com 4 termopares com shield MAX6675
//União dos projetos Enxugamento com SD Datalogger
//Acionamento de gravação
#include "max6675.h" // biblioteca do shield max6675
#include
#include
const int chipSelect = 10;
//primeiro termopar
int so1Pin = 2;// SO=Serial Out do shield termopar
int cs1Pin = 3;// CS = chip select CS pin do shield termopar
int sck1Pin = 4;// SCK = Serial Clock pin do shield termopar
//segundo termopar
int so2Pin = 5;// SO=Serial Out do shield termopar
int cs2Pin = 6;// CS = chip select CS pin do shield termopar
int sck2Pin = 7;// SCK = Serial Clock pin do shield termopar
//terceiro termopar
int so3Pin = 8;// SO=Serial Out do shield termopar
int cs3Pin = 9;// CS = chip select CS pin do shield termopar
int sck3Pin = 52;// SCK = Serial Clock pin do shield termopar
//quarto termopar
int so4Pin = 50;// SO=Serial Out do shield termopar
int cs4Pin = 48;// CS = chip select CS pin do shield termopar
int sck4Pin = 46;// SCK = Serial Clock pin do shield termopar
MAX6675 robojax1(sck1Pin, cs1Pin, so1Pin);// create instance 1 object of MAX6675
MAX6675 robojax2(sck2Pin, cs2Pin, so2Pin);// create instance 2 object of MAX6675
MAX6675 robojax3(sck3Pin, cs3Pin, so3Pin);// create instance 3 object of MAX6675
MAX6675 robojax4(sck4Pin, cs4Pin, so4Pin);// create instance 4 object of MAX6675
const int buttonPin = 44; // constante para botão de aquisição
const int ledPin = 35; // constante pino do LED aquisição ligada
int buttonState = 0; // zerar a variável de estado do botão
float correcao=204.7; // correção para mostrar em tensão
float entradaA8 = 8; // variável que define que a porta A8 é flutuante e zera
float entradaA9 = 9; // variável que define que a porta A9 é flutuante e zera
float entradaA10 = 10; // variável que define que a porta A10 é flutuante e zera
float entradaA11 = 11; // variável que define que a porta A11 é flutuante e zera
float entradaA12 = 12; // variável que define que a porta A12 é flutuante e zera
float entradaA13 = 13; // variável que define que a porta A13 é flutuante e zera
int ROW = 0; // variável para as linhas do Excel
int LABEL = 1;
int val0 = 0; //variável que guarda o valor lido na analógica
int val1 = 1; //variável que guarda o valor lido na analógica
int val2 = 2; //variável que guarda o valor lido na analógica
int val3 = 3; //variável que guarda o valor lido na analógica
int val4 = 4; //variável que guarda o valor lido na analógica
int val5 = 5; //variável que guarda o valor lido na analógica
File dataFile; //Abertura arquivo no SD
void setup() {
Serial.begin(9600); //inicialização serial
Serial.println("CLEARDATA"); // reset da comunicação serial
Serial.println("LABEL,Time,val0,val1,val2,val3,val4,val5,Temp1,Temp2,Temp3,Temp4,ROW"); // nomeia as colunas
pinMode(ledPin, OUTPUT); // informar pino 35 como saída para informar aquisição ligada
pinMode(buttonPin, INPUT); // informar pino 44 como entrada para ligar aquisição
Serial.print("Initializing SD card...");
pinMode(10, OUTPUT); //configuração para shield SD
// see if the card is present and can be initialized:
if (!SD.begin(10, 11, 12, 13)) {
Serial.println("Card failed, or not present");
// don't do anything more:
while (1) ;
}
Serial.println("card initialized.");
// Open up the file we're going to log to!
dataFile = SD.open("datalog.txt", FILE_WRITE);
if (! dataFile) {
Serial.println("error opening datalog.txt");
// Wait forever since we cant write data
while (1) ;
}
}
void loop(){
buttonState = digitalRead(buttonPin); //ler estado do pino 44
// checar se o botão está pressionado. Se sim, buttonState é HIGH. Se não, LOW
//if (buttonState == HIGH) {
// digitalWrite(ledPin, HIGH); // liga LED e continua
val0 = analogRead(entradaA8); // faz a leitura da entrada A8
val1 = analogRead(entradaA9); // faz a leitura da entrada A9
val2 = analogRead(entradaA10); // faz a leitura da entrada A10
val3 = analogRead(entradaA11); // faz a leitura da entrada A11
val4 = analogRead(entradaA12); // faz a leitura da entrada A12
val5 = analogRead(entradaA13); // faz a leitura da entrada A13
ROW++; // incrementa a linha do Excel para que a leitura pule de linha em linha
Serial.print("DATA,TIME,"); // inicia a impressão de dados, sempre iniciando
Serial.print(val0 / correcao);
Serial.print(",");
Serial.print(val1 / correcao);
Serial.print(",");
Serial.print(val2 / correcao);
Serial.print(",");
Serial.print(val3 / correcao);
Serial.print(",");
Serial.print(val4 / correcao);
Serial.print(",");
Serial.print(val5 / correcao);
Serial.print(",");
Serial.print(robojax1.readCelsius()); // termopar 1
Serial.print(",");
Serial.print(robojax2.readCelsius()); // termopar 2
Serial.print(",");
Serial.print(robojax3.readCelsius()); // termopar 3
Serial.print(",");
Serial.print(robojax4.readCelsius()); // termopar 3
Serial.print(",");
Serial.println(ROW);
// make a string for assembling the data to log:
String dataString = "";
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 2; analogPin++) {
//int sensor = analogRead(analogPin);
//dataString += String(sensor);
//if (analogPin < 1) {
//dataString += ",";
// }
dataString+=(val0 / correcao);
dataString += ",";
dataString+=(val1 / correcao);
dataString += ",";
dataString+=(val2 / correcao);
dataString += ",";
dataString+=(val3 / correcao);
dataString += ",";
dataString+=(val4 / correcao);
dataString += ",";
dataString+=(val5 / correcao);
dataString += ",";
dataString+=(robojax1.readCelsius());
dataString += ",";
dataString+=(robojax2.readCelsius());
dataString += ",";
dataString+=(robojax3.readCelsius());
dataString += ",";
dataString+=(robojax4.readCelsius());
}
dataFile.println(dataString);
// print to the serial port too:
Serial.println(dataString);
dataFile.flush(); //'save' the file to the SD card after every
delay(1000); // espera 1000 ms
}
// else {
// digitalWrite(ledPin, LOW); // desliga LED
// }
//}
Comentários
Postar um comentário