//Libraries
#include "DHT.h";
#include <LiquidCrystal_I2C.h>
//for DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
//Constants
#define DHTPIN 2 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define LCD_I2CADDR 0x27
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
LiquidCrystal_I2C lcd(LCD_I2CADDR,20,4);
OneWire oneWire(3); // Pin 3 DS18B20 data pin
DallasTemperature sensor(&oneWire);
// Creat a new characters shape of the degree symbol
byte degree[8] = {B00110,
B01001,
B01001,
B00110,
B00000,
B00000,
B00000,
B00000};
void setup()
{
dht.begin();
sensor.begin(); // DS18B20
lcd.init();
lcd.createChar(0,degree);
lcd.backlight();
}
void loop()
{
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temperature:");
// get temperature and humidity from DHT22
float humidity = dht.readHumidity();
//float temperature = dht.readTemperature();
// un-commend if using DS18B20 toget temperature
sensor.requestTemperatures();
float temperature = sensor.getTempCByIndex(0);
// Display temperature on 2nd line
lcd.setCursor(0, 1);
lcd.print(temperature, 1); // set one decimal
lcd.print(char(0));
lcd.print("C");
lcd.setCursor(11, 1);
// convert the Celsius to Fahrenheit
float tempF = temperature * 9 / 5 + 32;
lcd.print(tempF);
lcd.print(char(0));
lcd.print("F");
// Display Humidity on 3rd line
lcd.setCursor(0,2);
lcd.print("Humidity: ");
lcd.setCursor(11, 2);
lcd.print(humidity, 1);
lcd.print("%");
// Dsiplay Dew Point on 4th line
lcd.setCursor(0,3);
lcd.print("Dew Point: ");
lcd.setCursor(11, 3);
lcd.print(dewPointFast(temperature,humidity), 1);
lcd.print(char(0));
lcd.print("C");
}/* --(end main loop )-- */
// function from http://arduino-info.wikispaces.com/PROJECT-Temp-Humidity-Display
double dewPointFast(double celsius, double humidity)
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity/100);
double Td = (b * temp) / (a - temp);
return Td;
}
Loading
ds18b20
ds18b20