This scenario demonstrates how to measure temperature using a thermistor (temperature-sensitive resistor) connected to an Arduino Uno. The temperature is calculated using the Steinhart-Hart equation.
Component | Arduino Pin |
———— | ————- |
Thermistor | A5 (Analog) |
LCD | RS=8, EN=9, D4=4, D5=5, D6=6, D7=7 |
Measure temperature using a thermistor and display the results (ADC reading, voltage, resistance, and temperature in Celsius) on the LCD.
#include <math.h> #include <LiquidCrystal.h>
Declare LCD pins and initialize:
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); const int sensorPin = A5;
Set LCD dimensions and initial message:
void setup() { lcd.begin(16, 2); lcd.print("Temperature"); delay(1000); }
Read sensor value, calculate temperature, and display on LCD:
void loop() { readThermistor(analogRead(sensorPin)); delay(1000); lcd.clear(); } void readThermistor(int RawADC) { double Temp; long Resistance; // Calculate resistance Resistance = ((10240000 / RawADC) - 10000); // Display ADC and voltage lcd.setCursor(0, 0); lcd.print("AD="); lcd.print(RawADC); lcd.setCursor(8, 0); lcd.print("U="); lcd.print(((RawADC * 5.0) / 1024.0), 3); // Display resistance lcd.setCursor(0, 1); lcd.print("R="); lcd.print(Resistance); // Calculate temperature (Steinhart-Hart) Temp = log(Resistance); Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp); Temp = Temp - 273.15; // Convert Kelvin to Celsius // Display temperature lcd.setCursor(8, 1); lcd.print("T="); lcd.print(Temp); }
LCD displays accurate ADC values, voltage readings, resistance, and temperature in Celsius. Typical room temperature should range between 19-24 °C.
If temperature readings are incorrect or unstable: