Estação Meterologica Contem: -DHT22 -LM35 -BMP180 -DISPLAY LCD 16X2 (com moludo I2C) -Arduino UNO -Sensor Touch (TTP223B1)

-Monte o circuito do jeito que esta.

-Baixe as bibliotecas do BMP, DHT e a LiquidCrystal_I2C.

-Insira o codigo no arduino.

Codigo:

 

#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

const int LM35 = A0; // Define o pino que gera a saída do LM35
float temperatura; // Variável que armazenará a temperatura medida
float temperatura_real;
//float umidade_real;

Adafruit_BMP085 bmp180;

// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Pino conectado ao pino de dados do sensor
#define DHTPIN 7

#define DHTTYPE DHT22 // Sensor DHT 22 (AM2302)

#define ctsPin 2 // Pin for capactitive touch sensor

// Definicoes do sensor : pino, tipo
DHT dht(DHTPIN, DHTTYPE);

// Array simbolo grau
uint8_t grau[8] ={0x06, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, 0x00,};

void setup()
{
// Inicializa o display
lcd.begin();
lcd.clear();
// Cria o caracter customizado com o simbolo do grau
lcd.createChar(0, grau);
//Verifica se BMP180 esta conectado
if (!bmp180.begin())
{
Serial.println("Sensor BMP180 nao encontrado !!");
while (1) {}
}

// Informacoes iniciais no display
lcd.setCursor(0,0);
lcd.print("Temp. : ");
lcd.setCursor(13,0);
lcd.write(byte(0));
lcd.print("C");

Serial.begin(9600);
Serial.println("Aguardando dados...");

pinMode(ctsPin, INPUT);

// Iniclaiza o sensor DHT
dht.begin();
}

void loop()
{
int ctsValue = digitalRead(ctsPin);
if (ctsValue == HIGH){
lcd.backlight();
}
else{
lcd.noBacklight();
}
// Leitura da umidade
float h = dht.readHumidity()- 0.00005/0.9282;
//float umidade_real = ((0.000005*((h)^4.0))-(0.0011*((h)^3.0))+(0.0789*((h)^2))-(0.7116*(h))+9.7974);

// Leitura da temperatura
temperatura = (float(analogRead(LM35))*5/(1023))/0.01;
temperatura_real = (temperatura-1.86)/0.994 ;

// Verifica se o sensor esta respondendo
if (isnan(h))
{
Serial.println("Falha ao ler dados do sensor DHT !");
return;
}


// Mostra a temperatura no serial monitor e no display
Serial.print("Temperatura: ");
Serial.println(temperatura);
lcd.setCursor(8,0);
lcd.print(temperatura);
Serial.print(" *C ");

ctsValue = digitalRead(ctsPin);
if (ctsValue == HIGH){
lcd.backlight();
}
else{
lcd.noBacklight();
}

// Mostra a Humidade no LCD
{
lcd.setCursor(0,1);
lcd.print("Umid. : ");
lcd.setCursor(14,1);
lcd.print("%");
lcd.setCursor(8,1);
lcd.print(h);
}
delay(1500);
ctsValue = digitalRead(ctsPin);
if (ctsValue == HIGH){
lcd.backlight();
}
else{
lcd.noBacklight();
}
//Mostra a Altitude no display
{
lcd.setCursor(0, 1);
lcd.print("Altit.: ");
Serial.print("Altitude : ");
lcd.print(bmp180.readAltitude());
Serial.print(bmp180.readAltitude());
Serial.println(" m");
lcd.print(" m");
}
delay(1500);
ctsValue = digitalRead(ctsPin);
if (ctsValue == HIGH){
lcd.backlight();
}
else{
lcd.noBacklight();
}
//Mostrar a Pressão no display
{
lcd.setCursor(0, 1);
lcd.print("Press.: ");
Serial.print("Pressao : ");
lcd.print(bmp180.readPressure());
Serial.print(bmp180.readPressure());
Serial.println(" Pa");
lcd.print(" Pa");
}
delay(1500);
ctsValue = digitalRead(ctsPin);
if (ctsValue == HIGH){
lcd.backlight();
}
else{
lcd.noBacklight();
}
}