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