#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//I2C pins declaration
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define ONE_WIRE_BUS 2 //2 is DPin-2 of UNO at which sensor's output is connected
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire); //sensors is the object created from the class -- DallasTemp..
unsigned int dsTemp; //variable to hold Temperature value directly in Celsius
unsigned long presentmillis;
void setup(void)
{
Serial.begin(9600); //initialize Serial Monitor
pinMode(3, OUTPUT); //Lamp control
pinMode(4, OUTPUT); //Lamp control
digitalWrite(3, LOW); //Lamp Off
digitalWrite(4, LOW); //Lamp Off
sensors.begin(); //initialize One-Wire Sensor -- DS18B20
lcd.begin(16,2);//Defining 16 columns and 2 rows of lcd display
lcd.backlight();//To Power ON the back light
//lcd.backlight();// To Power OFF the back light
}
void loop(void)
{
showTempOnLCD(); //at 2-sec interval
if (dsTemp < 20)
{
digitalWrite(3, HIGH); //Lamp On
digitalWrite(4, LOW); //Lamp Off
delay(600000);
digitalWrite(3, LOW); //Lamp On
digitalWrite(4, HIGH); //Lamp Off
delay(600000);
presentmillis = millis();
}
if (dsTemp > 20)
{
digitalWrite(3, LOW); //Lamp Off
digitalWrite(4, LOW); //Lamp Off
presentmillis = millis();
}
}
void showTempOnLCD()
{
sensors.requestTemperatures(); // Temp conversion command; waiting here until comversion is done
dsTemp = sensors.getTempCByIndex(0); //read temp data from Sensor #0 and convert to celsius
presentmillis = millis();
lcd.begin (16,2);
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Amb Temp:");
lcd.print(dsTemp);
lcd.write(0xDF);
lcd.print('C');
lcd.setCursor(0,1);
lcd.print (presentmillis);
delay(2000); //sample temperature at 2-sec interval
}