Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino UNO Based Temperature Monitoring System with LCD Display

View and Edit Project In Cirkit DesignerImage of Arduino UNO Based Temperature Monitoring System with LCD Display

Circuit Documentation

Summary

This circuit is designed to interface an Arduino UNO with an LCD display and a DHT11 humidity and temperature sensor. The LCD display is used to show the temperature readings captured by the DHT11 sensor. A trimmer potentiometer is included to adjust the contrast of the LCD, and resistors are used for current limiting and pull-up configurations.

Component List

LCD Display (16 pin)

Trimmer Potentiometer

Resistor (Instance 1)

Resistor (Instance 2)

DHT11 Humidity and Temperature Sensor

Arduino UNO

Wiring Details

LCD Display

Trimmer Potentiometer

Resistor (Instance 1)

Resistor (Instance 2)

DHT11 Sensor

Arduino UNO

Documented Code

#include <LiquidCrystal.h>
#include <DHT.h>

// Initialize the LCD with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Define the DHT sensor pin and type
#define DHTPIN 9
#define DHTTYPE DHT11

// Initialize the DHT sensor
DHT dht(DHTPIN, DHTTYPE);

unsigned long startTime;
float previousTemperature = NAN;

void setup() {
  // Set up the LCD's number of columns and rows
  lcd.begin(16, 2);
  
  // Print a message to the LCD
  lcd.print("Initializing...");
  
  // Initialize the start time
  startTime = millis();

  // Initialize the DHT sensor
  dht.begin();

  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);

  digitalWrite(6, LOW);
  digitalWrite(7, HIGH);
}

void loop() {
  // Calculate the elapsed time in milliseconds
  unsigned long elapsedTime = millis() - startTime;
  
  // Convert elapsed time to seconds with one decimal place
  float elapsedTimeSec = elapsedTime / 1000.0;
  
  // Read temperature as Celsius
  float temperature = dht.readTemperature();
  
  // Check if any reads failed and exit early (to try again).
  if (isnan(temperature)) {
    lcd.setCursor(0, 0);
    lcd.print("Error reading");
    return;
  }
  
  // Only update the display if the temperature has changed
  if (temperature != previousTemperature) {
    // Clear the first row
    lcd.setCursor(0, 0);
    lcd.print("                "); // Clear the first row by printing spaces
    
    // Set the cursor to the first row, first column
    lcd.setCursor(0, 0);
    lcd.print("Temp: ");
    
    // Clear the second row
    lcd.setCursor(0, 1);
    lcd.print("                "); // Clear the second row by printing spaces
    
    // Set the cursor to the second row, first column
    lcd.setCursor(0, 1);
    
    // Print the temperature to the LCD
    lcd.print(temperature);
    lcd.print(" C");
    
    // Update the previous temperature
    previousTemperature = temperature;
  }
  
  // Add a small delay to avoid flickering
  delay(50);
}

This code initializes the LCD and DHT11 sensor, then enters a loop where it reads the temperature and displays it on the LCD. If the temperature reading fails, it displays an error message. The display is updated only when the temperature changes to minimize flickering.