Olá meus Caros,

To precisando muito da ajuda de vcs para meu projeto. Estou desenvolvento um datalogger meteorologico com os seguintes componentes:

- Arduino Mega 2560;
- Shield Adafruit datalogger (SD card e RTC);
- Sensor temp e umidade SHT15 SPARKFUN;
- Sensor Pressão BMP085 SPARKFUN;
- Display LCD 16x2.

Eu não estou conseguindo colocar para ler os sensores e configurar o RTC. Alguem poderia me ajudar?
Segue o código atualizado:

#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <LiquidCrystal.h>
#include <SHT1x.h>
#include <SD.h>


// Constantes do sistema
int clockPin = 8;  // pin used for clock
int dataPin  = 9;  // pin used for data
int ack;  // track acknowledgment for errors
int val;
float temp;
float humidity;
#define DELAY_TIME 3000

// Instâncias de objetos
SHT1x sht1x(dataPin, clockPin);
Adafruit_BMP085 bmp;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
char dataString[50];


void setup() {
  Serial.begin(9600);
  bmp.begin();

  // Necessário para funcionar cartão sd
  pinMode(10, OUTPUT);
  
  // 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:
    //return;
  }
  Serial.println("card initialized.");

  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
 lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD
 lcd.print("   Energetica "); //Escreve no LCD "Energética! na primeira linha do LCD"
 lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD
 lcd.print(" Qualidade Do Ar"); //Escreve no LCD "Qualidade do Ar" n segunda linha do LCD
 
   delay(DELAY_TIME);
 lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD
 lcd.print("  Datalogger  "); //Escreve no LCD "Energética! na primeira linha do LCD"
 lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD
 lcd.print("  AGV versao 1.0  "); //Escreve no LCD "Qualidade do Ar" n segunda linha do LCD
 
   delay(DELAY_TIME);
}

void loop() {
  String dataString = "";
 temp = (float)val * 0.01 - 40;
  
  char vector[10], vector2[10], vector3[10];
  
  // Insere dados no buffer
  dtostrf(temp, 2, 2, vector);
  dataString += vector;
  
  // Insere divisor
  dataString += ",";

  // Obtém o valor da pressão já em hPA
  int32_t pres = bmp.readPressure() / 100;

  dtostrf(pres, 2, 2, vector2);
  dataString += vector2;
  
  // Insere divisor
  dataString += ",";
  
  
  // Obtém umidade
  float humidity = sht1x.readHumidity();

  dtostrf(humidity, 2, 2, vector3);
  dataString += vector3;
  
  // Insere divisor
  dataString += ",";

  File dataFile = SD.open("datalog.csv", FILE_WRITE);
  if (dataFile){
    dataFile.println(dataString);
    dataFile.close();
    Serial.print("gravado no cartao: ");
    Serial.println(dataString);
  }
  else{
    Serial.println("problema ao abrir datalog.csv");
  }


  Serial.print("Temperatura do ar = ");
  Serial.print(temp);
  Serial.println("Grau");

  Serial.print("Pressao atmosferica = ");
  Serial.print(pres);
  Serial.println("Pa");
  
  Serial.print("Umidade relativa do ar = ");
  Serial.print(humidity);
  Serial.println("%");
  
  

  lcd.clear();
  lcd.print("temp ar ");
  lcd.print(temp);
  lcd.print(" graus");

  lcd.setCursor(0,1);
  lcd.print("pres atm ");
  lcd.print(pres);

  delay(DELAY_TIME);
  lcd.clear();
  lcd.print("umidade ");
  lcd.print(humidity);
  lcd.print("%");
  delay(DELAY_TIME);
}

Desde já agradeço.

Exibições: 2472

Responder esta

Respostas a este tópico

Parece que sim.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço