Enxugamento 4 termopares 6 canais analógicos gravação serial e no 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 

 }

Comentários

Postagens mais visitadas