//2024_04_17_V1_Stand_Alone_DHT22_DB18S20_LCD
// ??????? Funcionou ######
//Atenção, fiz esse esquema só para colocar no caderno(documentação),
//porém não tem nas biblioteca o chip ATmega328-P, só os arduinos
#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"};
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();
//chamaSD();
//chamaRTC();
chamaLCD();
chamaSerial();
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("Teste-V1234.txt", O_RDWR | O_CREAT | O_AT_END)) // Abre o arquivo LER_POT.TXT
{
sdCard.errorHalt("Erro na abertura do arquivo Grava_temperatura.txt!");
}
meuArquivo.println(" - V1234 - ");
meuArquivo.print (" 1ª versão ");
meuArquivo.println("Teste todos juntos");
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("Teste-V1234.txt");
lcd.setCursor(0,1);
lcd.setCursor(9,0);
//lcd.print("Teste tds juntos");
//lcd.setCursor(6,1);
lcd.setCursor(0,1);
lcd.print("Teste tds juntos");
lcd.print("");
delay(2000);
lcd.clear(); //Fim da mensagem do SD
delay(2000);
}
void chamaSerial()
{
Serial.print("\n\nUmidade: ");
Serial.print(umid); // Exibe umidade
Serial.print(" %");
Serial.print("\nTemperatura: ");
Serial.print(temp); // Exibe temp.
Serial.print(" °C");
Serial.print("\nSensação Térmica: ");
Serial.print(senterm);
Serial.println(" °C");
Serial.print("Temperature DB18S20 é: ");
Serial.println(sensor.getTempCByIndex(0));
/*
DateTime now = rtc.now();
Serial.print("Current time: ");
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();
delay(1000); // every second
//Serial.println();
*/
delay(2000);
}