//2024_05_20_Ensaio BioREN_V1
/*########### Aproveitei a versão do sketch abaixo ##########
*2024_04_03_V1234_B_Nano_DHT22_DB18S20_SD_RTC_LCD
* Versão com todos os módulos e usando funções
* B: Melhorando a saída serial, LCD e cartão SD
* ###### Funcionou ######
*############################################################
*/
#include <DHT.h> //Sensor DHT22
#include <DallasTemperature.h> //Sensor DB18S20
#include <OneWire.h> //Sensor DB18S20
#include <SdFat.h> //Cartão SD
#include <Arduino.h>
#include "RTClib.h"
#include <LiquidCrystal.h>
DHT dht(9,DHT22); // Declara objeto dht do tipo DHT
float umid, temp, senterm; // Declara variáveis
OneWire oneWire(8);
DallasTemperature sensor(&oneWire);
SdFat sdCard;
SdFile meuArquivo;
const int chipSelect = 10; //Pino CS Cartão SD
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
//char daysOfTheWeek[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
LiquidCrystal lcd (2, 3, 4, 5, 6, 7);
//LiquidCrystal lcd (2, 3, 4, 5, 6, 7);
void setup() {
Serial.begin(9600);
dht.begin(); // Inicializa objeto dht (DHT22)
delay(20);
sensor.begin(); // Inicializa objeto sensor (DB18S20)
if(!sdCard.begin(chipSelect,SPI_HALF_SPEED))sdCard.initErrorHalt(); // Inicializa o modulo SD
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();}
lcd.begin(16,2);
delay (20);
}
void loop() {
chamaSENSORDHT22();
chamaSENSORDB18S20();
chamaRTC();
chamaLCD();
chamaSerial();
chamaSD();
delay(2000);
}
void chamaSENSORDHT22()
{
umid = dht.readHumidity(); // Lê umidade
temp = dht.readTemperature(); // Lê temperatura
senterm = dht.computeHeatIndex(temp,umid,false);//sensação térmica true=farenheit e false=graus celsius
delay(2000);
}
void chamaSENSORDB18S20()
{
sensor.requestTemperatures();
delay(10);
}
void chamaSD()
{
if (!meuArquivo.open("BioREN-V1", O_RDWR | O_CREAT | O_AT_END)) // Abre o arquivo LER_POT.TXT
{
sdCard.errorHalt("Erro na abertura do arquivo Grava_temperatura.txt!");
}
DateTime now = rtc.now();
meuArquivo.println();
meuArquivo.println("### 2024_04_03_V1234_B_Nano_DHT22_DB18S20_SD_RTC_LCD ###");
meuArquivo.print (" ### BioREN-V1.txt ### "); meuArquivo.println(" Temperaturas e Umidade ");
meuArquivo.print("T1 = ");meuArquivo.print(sensor.getTempCByIndex(0));meuArquivo.println("ºC");
meuArquivo.print("T2 = ");meuArquivo.println(temp);
meuArquivo.print("UR = ");meuArquivo.println(umid);
meuArquivo.println();
meuArquivo.print("Data: ");
meuArquivo.print(now.year(), DEC);
meuArquivo.print('/');
meuArquivo.print(now.month(), DEC);
meuArquivo.print('/');
meuArquivo.print(now.day(), DEC);
meuArquivo.print(" (");
meuArquivo.print(daysOfTheWeek[now.dayOfTheWeek()]);
meuArquivo.print(") ");
meuArquivo.print(now.hour(), DEC);
meuArquivo.print(':');
meuArquivo.print(now.minute(), DEC);
meuArquivo.print(':');
meuArquivo.print(now.second(), DEC);
meuArquivo.println();
delay(1000); // every second
meuArquivo.println();
meuArquivo.close();
}
void chamaRTC()
{
// Comentei a linha abaixo porque qdo rodava não mostrava a hora correta
// e sim 3 horas a menos.
//rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //CAPTURA A DATA E HORA EM QUE O SKETCH É COMPILADO
DateTime now = rtc.now();
}
void chamaLCD()
{
lcd.setCursor(0,0);
//lcd.print("Temp: "+String(t,1) +" C");
lcd.print("T1(C)");
lcd.setCursor(0,1);
lcd.print(sensor.getTempCByIndex(0)); //Referente ao Sensor DB18S20
lcd.setCursor(6,0);
lcd.print("T2(C)");
lcd.setCursor(6,1);
lcd.print(temp);
lcd.setCursor(12,0);
lcd.print("UR-%");
lcd.setCursor(12,1);
lcd.print(umid);
delay(3000);
lcd.clear(); //Início da mensagem do SD
lcd.setCursor(0,0);
lcd.print(" BioREN-V1.txt ");
lcd.setCursor(0,1);
lcd.setCursor(9,0);
//lcd.print("Teste tds juntos");
//lcd.setCursor(6,1);
lcd.setCursor(0,1);
lcd.print(" Temp e Umidade ");
lcd.print("");
delay(2000);
lcd.clear(); //Fim da mensagem do SD
delay(2000);
}
void chamaSerial()
{
//Serial.println("### 2024_04_03_V1234_B_Nano_DHT22_DB18S20_SD_RTC_LCD ###");
Serial.println (" ### BioREN-V1.txt ### ");
Serial.println(" Temperaturas e Umidade ");
Serial.print("Sensor 1 - DB18S20");
Serial.print(" T1 = ");Serial.print(sensor.getTempCByIndex(0));Serial.println("ºC");
Serial.println();
Serial.print("Sensor 2 - DHT22");
Serial.print(" T2 = ");Serial.print(temp);
Serial.print(" UR = ");Serial.println(umid);
DateTime now = rtc.now();
Serial.print("Data: ");
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println("#################################");
delay(1000); // every second
Serial.println();
Serial.println();
delay(1000);
}