• Blogs
• Circuit 4B: Temperature Sensor

## Circuit 4B: Temperature Sensor

• Public
By Adam Kroeker July 15, 2022 - 1:38pm

I had no issues with building the circuit. My program displays the temperature in Celsius, Fahrenheit, and kelvins, as well as a message. The possible messages include “Freezing”, “Cold”, “Chilly”, “Nice”, “Warm”, “Hot”, “Too hot”, and “Boiling”. Here is the code:

`#include <LiquidCrystal.h> //the liquid crystal library contains commands for printing to the displayLiquidCrystal lcd(7, 12, 11, 10, 9, 8); // tell the RedBoard what pins are connected to the display`
`float voltage = 0; //the voltage measured from the TMP36float degreesC = 0; //the temperature in Celsius, calculated from the voltagefloat degreesF = 0; //the temperature in Fahrenheit, calculated from the voltagefloat kelvins = 0; //the temperature in kelvinsString message = ""; //the message to be displayed`
`void setup() { lcd.begin(16, 2); //tell the lcd library that we are using a display that is 16 characters wide and 2 characters high lcd.clear(); //clear the display}`
`void loop() { voltage = analogRead(A0) * 0.004882813; //convert the analog reading, which varies from 0 to 1023, back to a voltage value from 0-5 volts degreesC = (voltage - 0.5) * 100.0; //convert the voltage to a temperature in degrees Celsius degreesF = degreesC * (9.0 / 5.0) + 32.0; //convert the voltage to a temperature in degrees Fahrenheit kelvins = degreesC + 273.15; //convert from Celsius to kelvins`
`//Decide what message to print if(degreesC <= 0){ message = " Freezing"; }else if(degreesC > 0 && degreesC <= 10){ message = " Cold "; }else if(degreesC > 10 && degreesC <= 20){ message = " Chilly "; }else if(degreesC > 20 && degreesC <= 30){ message = " Nice "; }else if(degreesC > 30 && degreesC <= 40){ message = " Warm "; }else if(degreesC > 40 && degreesC <= 50){ message = " Hot "; }else if(degreesC > 50 && degreesC < 100){ message = " Too hot "; }else if(degreesC >= 100){ message = " Boiling "; }`
`lcd.setCursor(0, 0); //set the cursor to the top left position lcd.print("C:"); //print a label for the data lcd.print(degreesC); //print the degrees Celsius`
`lcd.setCursor(0, 1); //set the cursor to the lower left position lcd.print("F:"); //Print a label for the data lcd.print(degreesF); //print the degrees Fahrenheit`
`lcd.setCursor(7, 0); //set the cursor to the position lcd.print(" K:"); //Print a label for the data lcd.print(kelvins); //print the kelvins`
`lcd.setCursor(7, 1); //set the cursor to the position lcd.print(message); //print the message`
`delay(1000); //delay for 1 second between each reading (this makes the display less noisy)}`

Most of my code is from the example program. I changed the way the temperatures are labelled to make more room on the display, so instead of “Celsius:” and “Fahrenheit:” it simply displays “C:” and “F:”. I also added “K:” for kelvins. I read in the Kelvin Wikipedia article that a temperature in degrees Celsius is equal to the temperature in kelvins minus 273.15, so to find the temperature in kelvins I added 273.15 to the temperature in Celsius. I also learned from the article that unlike the Celsius and Fahrenheit systems, the Kelvin system measures temperature in kelvins rather than degrees. In the loop() function there is also a series of if-else statements to determine which message to print on the display.

Here is a video of the program in action: