#include <LiquidCrystal.h>
#include <DHT.h>
//Define a ligação ao pino de dados do sensor DHT
#define DHTPIN 7
//Define o tipo de sensor DHT utilizado
#define DHTTYPE DHT22
const int leftButton = 8;
const int rightButton = 9;
int leftButtonState = 0;
int rightButtonState = 0;
DHT dht(DHTPIN, DHTTYPE);
const char* sensores[4] = {"temperatura", "umidade", "pressao", "hidrogeneo"};
int sensorCount = 0;
//Define os pinos que serão ligados ao LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//simbolo grau
byte grau[8] ={ B00001100,
B00010010,
B00010010,
B00001100,
B00000000,
B00000000,
B00000000,
B00000000,};
byte a_tiu[8] ={B00001101,
B00010010,
B00001110,
B00010001,
B00001111,
B00010001,
B00001111,
B00000000,};
byte c_cedilha[8] ={B00000000,
B00001111,
B00010000,
B00010000,
B00001111,
B00000100,
B00000010,
B00000100,};
byte o_acento[8] ={ B00000000,
B00000010,
B00000100,
B00001110,
B00010001,
B00010001,
B00001110,
B00000000,};
void setup()
{
Serial.begin(9600); //Inicializa a serial
lcd.begin(16,2); //Inicializa LCD
lcd.clear(); //Limpa o LCD
//Cria o caractere customizado com o simbolo do grau
lcd.createChar(0, grau);
//Cria o caractere customizado "ã"
lcd.createChar(1, a_tiu);
//Cria o caractere customizado "ç"
lcd.createChar(2, c_cedilha);
//Cria o caractere customizado "ç"
lcd.createChar(3, o_acento);
//Inicia o DHT
dht.begin();
lcd.clear(); //Limpa o LCD
lcd.setCursor(0,0);
//Escreve "Projeto Estacao" no LCD
lcd.print("Projeto Esta");
lcd.write((byte)2);
lcd.write((byte)1);
lcd.print("o");
lcd.setCursor(0,1);
//Escreve "Meteorologica" no LCD
lcd.print(" Meteorol");
lcd.write((byte)3);
lcd.print("gica");
delay(3000);
delay(2000);
}
void loop()
{
leftButtonState = digitalRead(leftButton);
//Se o botão foi acionado
if (leftButtonState == HIGH) {
sensorCount++;
if (sensorCount == 3) {
sensorCount = 0;
}
}
rightButtonState = digitalRead(rightButton);
if (rightButtonState == HIGH) {
sensorCount--;
if (sensorCount == -3) {
sensorCount = 2;
}
}
if (sensores[sensorCount] == "temperatura") {
float t = dht.readTemperature(); //Le o valor da temperatura
lcd.clear(); //Limpa o LCD
lcd.setCursor(0,0);
lcd.print("Temperatura: ");
lcd.print(" ");
lcd.setCursor(10,1);
lcd.print(t,1);
lcd.setCursor(14,1);
//Mostra o simbolo do grau formado pelo array
lcd.write((byte)0);
lcd.print("C");
//Mostra o simbolo do grau quadrado
//lcd.print((char)223);
delay(2000);
}
if (sensores[sensorCount] == "umidade") {
float h = dht.readHumidity(); //Le o valor da umidade
lcd.clear(); //Limpa o LCD
lcd.setCursor(0,0);
lcd.print("Umidade: ");
lcd.setCursor(11,1);
lcd.print(h,1);
lcd.setCursor(15,1);
lcd.print("%");
delay(2000);
}
if (sensores[sensorCount] == "pressao") {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Press");
lcd.write((byte)1);
lcd.print("o:");
delay(2000);
}
}