//2023_06_24_V1_Sensor Temperatura-Umidade.ino

#include <LiquidCrystal.h> // Incluindo a biblioteca do LCD
//LiquidCrystal lcd(4, 5, 6, 7, 8, 9); //Definindo os pinos de controle do LCD (RS, E, D4, D5, D6, D7).PROGRAMA DO ÍTALO
LiquidCrystal lcd (2, 3, 4, 5, 6, 7); //Definindo os pinos de controle do LCD (RS, E, D4, D5, D6, D7). programa da apostila aula 6A

//#include <DHT.h> // Incluindo a biblioteca do sensor DHT22.
#include <DHT.h>    //Biblioteca indicada pelo ìtalo p inserir: DHT sensor library versão 1.4.4
#include <DHT_U.h>  //Veio junto com a bibloteca acima
//#define DHTPIN 2 // Definindo o pino 2 como o pino de dados do DHT22.
#define DHTPIN 12 // Definindo o pino 13 como o pino de dados do DHT22.
#define DHTTYPE DHT22 // Definindo o sensor DHT22.
DHT dht(DHTPIN, DHTTYPE); // Inicializando a biblioteca do sensor DHT22.

char temperatura[] = "Temp.= 00.0 C"; // Criando a váriável "temperatura" e iniciando zerada.
char umidade[]    = "Umid.= 00.0 %"; // Criando a váriável "umidade" e iniciando zerada.
//int V0 = 3; // Criando uma variável V0 no pino 3.

void setup()
{
  Serial.begin(9600); //Eu inclui p depurar
  lcd.begin(16, 2); // Inicializando e definido o número de colunas e linhas do LCD
  dht.begin(); // Inicializando o sensor DHT22.
  //analogWrite(V0, 100); // Ajustando um nível de tensão no pino 3 para ajustar o brilho do LCD.

}
 
void loop()
{

  delay(2000); // Esperando 1s entre leituras.
  int UR = dht.readHumidity() * 10; // fazendo a leitura da umidade.
  int Temp = dht.readTemperature() * 10; // Fazendo a leitura da temperatura em graus Celcius.
  

  if (isnan(UR) || isnan(Temp)) // Verificando se ocorreu alguma falha de leitura. Se ocorrer, ele monstra "Erro" tenta ler novamente.

  {
 
  lcd.clear();
  lcd.setCursor(5, 0);
  lcd.print("Erro");
  Serial.println("erro");//Eu inclui
  return;

  }

  if(Temp < 0)

  {

  temperatura[6] = '-';
  Temp = abs(Temp);

  }

  else

  temperatura[6]  = ' ';
  temperatura[7]  = (Temp / 100) % 10  + 48;
  temperatura[8]  = (Temp / 10)  % 10  + 48;
  temperatura[10] =  Temp % 10 + 48;
  temperatura[11] = 223; // Gerar o símbolo de graus no LCD.

  if(UR >= 1000)

  umidade[6]  = '1';

  else
  
  umidade[6]  = ' ';
  umidade[7]  = (UR / 100) % 10 + 48;
  umidade[8]  = (UR / 10) % 10 + 48;
  umidade[10] =  UR % 10 + 48;

  lcd.setCursor(0, 0); // Posiciona o cursor na linha 1 e coluna 1 do LCD.
  lcd.print(temperatura); // escreve o valor da temperatura no LCD.
  Serial.println(temperatura);//Eu inclui
  lcd.setCursor(0, 1); // Posiciona o cursor na linha 2 e coluna 1 do LCD.
  lcd.print(umidade); // Escreve o valor da umidade no LCD.

}