Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Connect a temperature sensor to pin of your choice using the scheme given in Lab

ID: 3713997 • Letter: C

Question

Connect a temperature sensor to pin of your choice using the scheme given in Lab 5. You may also use the temperature sensor given in MSP430. Connect a 2-digit 7-segment display as in Lab 4. The display is used to display the temperature value measured by the temperature in 0C.  

Write a program in C which achieves the following tasks:

Initially the 7-segment display digits are all off.

Every second the program does an A/D conversion

After every 3 samples, the samples are averaged and the resulting digital value corresponding to the average measured temperature is displayed on the 7-segment display. To display values correctly, you need to calibrate the system.

Explanation / Answer

The code I wrote requires you to have the Arduino Seven Segment library installed. To do this, go here and download all the files by going to "File>Download" at the top of the page.
Then locate you Arduino sketchbook folder (should be located in "Documents>Arduino" on Windows) and create a folder called "hardware" if there isn't already one. Go in that folder, and paste the folder you downloaded before into the "hardware" folder.
It should not be in a .zip or .rar format, which it will most likely come as when you download it, you must extract the entire folder and place it in the hardware folder.

After you installed the library, upload the code below to the Arduino board, and proceed to the next step.

#include "SevSeg.h"
SevSeg sevseg;
int tempUnits = fahrenheit; //which unit of temperature do you prefer?
int refreshTime = 3000; //how many seconds should it wait before it checks and displays the temp again? 1000 = 1 second
unsigned long timer;
float celsius = 0, kelvin = 0, fahrenheit = 0;
void setup()
{
sevseg.Begin(0,2,3,4,5,6,7,8,9,10,11,12,13);
}
void loop()
{
sevseg.PrintOutput();
//Reads the input and converts it to Kelvin degrees
kelvin = analogRead(0) * 0.004882812 * 100;
//Converts Kelvin to Celsius minus 2.5 degrees error
celsius = kelvin - 2.5 - 273.15;
//Converts Celsius to Fahrenheit minus 2.5 degrees error
fahrenheit = ((kelvin - 2.5) * 9 / 5) - 459.67;

unsigned long mils=millis();
if (mils-timer>=refreshTime) {
timer=mils;
//Print teperature to the displays
sevseg.NewNum(tempUnits,(byte) 2);
}
}
Changing the code to work with a common anode display is simple. Change this line of code:
sevseg.Begin(0,2,3,4,5,6,7,8,9,10,11,12,13);
to:
sevseg.Begin(1,2,3,4,5,6,7,8,9,10,11,12,13);


To change the units of the temperature displayed to Celsius or back to Fahrenheit, change the line of code at the top that says:
int tempUnits = fahrenheit;
to:
int tempUnits = celsius;
if you prefer Celsius.
To change the rate at which the display updates the temperature, change the line of code at the top that says:
int refreshTime = 3000;
to:
int refreshTime = <however many seconds you want it to wait before updating * 1000>;
The code is set to refresh every 5 seconds by default. If you put a number that is too low, it will update so fast that you won't be able to read it
Than put it togeather
Done.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote