Temperature and Humidity with Min/Max on LCD
Display temperature and humidity along with minimum and maximum readings on an 16x2 LCD screen with I2C.
Components and supplies
5
Jumper Wire Female to Male
2
Jumper Wire Female to Female
1
16 X 2 LCD with I2C Adapter
1
Arduino UNO
1
DHT11 Digital Temperature and Humidity Sensor DHT11 module
Apps and platforms
1
Arduino IDE
Project description
Code
Temperature and humidity on LCD
cpp
current, Min and Max temperature and humidity
1/* 2 Temperature and Humidity with Min and Max 3 4 Displays current temperature along with minimum and maximum readings. 5 6 Most Arduinos have an on-board LED on pin 13 that you can control. 7 On the UNO, MEGA and ZERO it is attached to digital pin 13, 8 on MKR1000 on pin 6. This LED is used as a status for LCD display. 9 Just before the LCD display changes it will blink once. 10 11 For this example, the DHT11 temperature and humidity module is used. 12 The data pin from the DHT11 module is connected to analog pin A0. 13 14 For the display, a generic 16x2 LCD display is attached to an I2C. 15 The Vcc and GND from the I2C is connected to the ICSP header. 16 17 Written by Jesse Leon 18 */ 19 20#include <dht.h> // Load the DHT module library 21#include <LiquidCrystal_I2C.h> // Lod the LCD with I2C library 22LiquidCrystal_I2C lcd(0x27, 16, 2); // Initialize LCD on address 2x27 with a 16 x 2 display 23#define dht_pin A0 // Analog Pin A0 of Arduino is connected to DHT11 out pin 24dht DHT; // Set alias 25byte myTemp; // Variable used to store current temperature in Celsius 26byte myHumid; // Variable used to store current humidity 27byte minHumid; // Variable used to store minimum humidity 28byte maxHumid; // Variable used to store maximum humidity 29byte minTemp; // Variable used to store minimum temperature 30byte maxTemp; // Variable used to store maximum temperature 31byte converted; // Variable used to store converted temperature from Celsius to Fahrenheit 32byte CminTemp; // Variable used to store converted minimum temperature 33byte CmaxTemp; // Variable used to store converted maximum temperature 34int ledStatus = 13; // Initiate pin 13 as ledStatus 35 36void setup() { 37 pinMode(ledStatus, OUTPUT); // Set pin mode for status LED 38 digitalWrite(ledStatus, HIGH); // Turn on status LED 39 lcd.init(); // Initialize I2C LCD display 40 lcd.backlight(); // Turn on LCD back light 41 lcd.clear(); // Clear the LCD screen 42 43 /* The following section is optional 44 ====================================================================================*/ 45 lcd.setCursor(0, 0); // Set LCD cursor to 1st position on first line 46 lcd.print(F("TEMP & HUMIDITY ")); // Send text to LCD 47 lcd.setCursor(0, 1); // Set LCD cursor to 1st position on 2nd line 48 lcd.print(F("Initializing ")); // Send text to LCD 49 delay(500); // Set delay 50 lcd.setCursor(0, 1); // Set LCD cursor to 1st position on 2nd line 51 lcd.print(F("Initializing. ")); // Send text to LCD 52 delay(500); // Set delay 53 lcd.setCursor(0, 1); // Set LCD cursor to 1st position on 2nd line 54 lcd.print(F("Initializing.. ")); // Send text to LCD 55 delay(500); // Set delay 56 lcd.setCursor(0, 1); // Set LCD cursor to 1st position on 2nd line 57 lcd.print(F("Initializing... ")); // Send text to LCD 58 delay(500); // Set delay 59 lcd.setCursor(0, 1); // Set LCD cursor to 1st position on 2nd line 60 lcd.print(F("Initializing....")); // Send text to LCD 61 /*==================================================================================== 62 End of optional section */ 63 64 DHT.read11(dht_pin); // Read data from dht_pin (A0) 65 delay(500); // Set delay 66 minHumid = (DHT.humidity); // Set variable to initial minimum humidity reading 67 maxHumid = (DHT.humidity); // Set variable to initial maximum humidity reading 68 minTemp = (DHT.temperature); // Set variable to initial minimum temperature reading 69 CminTemp = (minTemp * 1.8) + 32; // Convert minimum temperature reading to Fahrenheit 70 maxTemp = (DHT.temperature); // Set variable to initial minimum temperature reading 71 CmaxTemp = (maxTemp * 1.8) + 32; // Convert maximum temperature reading to Fahrenheit 72 digitalWrite(ledStatus, LOW); // Turn off status LED 73} 74 75void loop() { 76 DHT.read11(dht_pin); // Take new reading from module 77 myHumid = (DHT.humidity); // Set variable to current humidity reading 78 myTemp = (DHT.temperature); // Set variable to current temperature reading 79 converted = (myTemp * 1.8) + 32; // set variable to converted temperature in Fahrenheit 80 81 if (myHumid < minHumid) { minHumid = (DHT.humidity); } // If current humidity is < minimum, set minimum to current 82 if (myHumid > maxHumid) { maxHumid = (DHT.humidity); } // If current humidity is > maximum, set maximum to current 83 if (converted < CminTemp) { CminTemp = converted; } // If current temperature is < minimum, set maximum to current 84 if (converted > CmaxTemp) { CmaxTemp = converted; } // If current temperature is > maximum, set maximum to current 85 86 TempStat(); // Run TempStat function 87 delay(5000); // wait for delay 88 HumidStat(); // Run HumidStat function 89 delay(5000); // wait for delay 90} 91 92void TempStat() { 93 digitalWrite(ledStatus, HIGH); // Turn on status LED 94 lcd.setCursor(0, 0); // Set LCD cursor position 95 lcd.print(F("TEMP min: ")); // Display message on LCD 96 lcd.setCursor(12, 0); // Set LCD cursor position 97 lcd.print(CminTemp); // Display minimum temperature on LCD 98 lcd.print(F(" F")); // Display message on LCD 99 lcd.setCursor(0, 1); // Set LCD cursor position 100 lcd.print(converted); // Display current temperature on LCD 101 lcd.print(F(" F ")); // Display message on LCD 102 lcd.setCursor(7, 1); // Set LCD cursor position 103 lcd.print(F("max: ")); // Display message on LCD 104 lcd.setCursor(12, 1); // Set LCD cursor position 105 lcd.print(CmaxTemp); // Display maximum temperature on LCD 106 lcd.print(F(" F")); // Display message on LCD 107 digitalWrite(ledStatus, LOW); // Turn off status LED 108} 109 110void HumidStat() { 111 digitalWrite(ledStatus, HIGH); // Turn on status LED 112 lcd.setCursor(0, 0); // Set LCD cursor position 113 lcd.print(F("HUMID min: ")); // Display message on LCD 114 lcd.setCursor(12, 0); // Set LCD cursor position 115 lcd.print(minHumid); // Display minimum humidity on LCD 116 lcd.print(F(" %")); // Display message on LCD 117 lcd.setCursor(0, 1); // Set LCD cursor position 118 lcd.print(myHumid); // Display current humidity on LCD 119 lcd.print(F(" % ")); // Display message on LCD 120 lcd.setCursor(7, 1); // Set LCD cursor position 121 lcd.print(F("max: ")); // Display message on LCD 122 lcd.setCursor(12, 1); // Set LCD cursor position 123 lcd.print(maxHumid); // Display maximum humidity on LCD 124 lcd.print(F(" %")); // Display message on LCD 125 digitalWrite(ledStatus, LOW); // Turn off status LED 126}
Comments
Only logged in users can leave comments