#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
// Data wire is plugged into digital pin 2 on the Arduino
#define ONE_WIRE_BUS 6
// Setup a oneWire instance to communicate with any OneWire device
OneWire oneWire(ONE_WIRE_BUS);
// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);
// I2C address 0x27, 16 column and 2 rows
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int Btn1 = 3;
const int LED = 5;
const int BZR = 4;
volatile bool RESET1 = false;
void RESET(){
RESET1= true;
}
void setup(void)
{
sensors.begin(); // Start up the library
Serial.begin(9600);
lcd.init(); // initialize the lcd
lcd.backlight();
pinMode(Btn1, INPUT_PULLUP);
pinMode(LED, OUTPUT);
pinMode(BZR, OUTPUT);
attachInterrupt(digitalPinToInterrupt(Btn1),RESET,CHANGE);
}
void loop(void)
{
digitalWrite(LED, LOW);
digitalWrite(BZR, LOW);
lcd.clear(); // clear display
// Send the command to get temperatures
sensors.requestTemperatures();
if(sensors.getTempCByIndex(0) >= 35.00){
digitalWrite(LED, HIGH);
if(RESET1){
digitalWrite(BZR, LOW);
}
else{
digitalWrite(BZR, HIGH);
}
lcd.setCursor(0, 0); // move cursor to (0, 0)
lcd.print("Temp.: ");
lcd.print(sensors.getTempCByIndex(0));
lcd.print((char)223); //shows degrees character
lcd.print("C");
lcd.setCursor(4,1);
lcd.print("WARNING!!! ");
delay(1000); // display the above for 1 second
//print the temperature in Celsius
Serial.print("Temperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print((char)176);//shows degrees character
Serial.print("C | ");
Serial.println("WARNING");
}
else{
lcd.setCursor(0, 0); // move cursor to (0, 0)
lcd.print("Temp.: ");
lcd.print(sensors.getTempCByIndex(0));
lcd.print((char)223); //shows degrees character
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("Fhrt.: ");
lcd.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);
lcd.print((char)223); //shows degrees character
lcd.print("F");
delay(1000); // display the above for 1 second
//print the temperature in Celsius
Serial.print("Temperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print((char)176);//shows degrees character
Serial.print("C | ");
//print the temperature in Fahrenheit
Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);
Serial.print((char)176);//shows degrees character
Serial.println("F");
//delay(500);
}
}
Loading
ds18b20
ds18b20