LM35 LED Temperature Bar

12,990

33

12

About: I am a young electronics hobbyist, interested in computers, rapid prototyping and electronics.

This is my first instructable, I have watched the website for a few years now and have recently done one of my first, worthy of record, project. Using an LM35 precision temperature sensor,I then display the temperature on a scale of 8 LEDS. The downside to this current set up is that you can only view 8 degrees of temperature.

Requirements:
Arduino, I used an uno
Breadboard
LEDs
Jumpers, M-M
Resistors for LED
LM35
Computer
Arduino IDE.

Notes:
In the code you can change the temperature triggers for the LEDs, to better suit your situation.

Step 1: Breadboard Setup LEDs

I will upload a circuit diagram/fritzing when I have the time.

It is a very basic setup, don't be confused by my excessive use of wires.

To begin with locate 8 LEDs of your own preferred colours and put them into your breadboard, positive leg into the main tracks, negative into the ground rail.
Next put your resistors from the track opposite your led, over the middle and into the same track as each individual LED.
Now plug jumpers Into the same tracks as your resistors, 8 in total and connect them to pins 2,3,4,5,7,8,9,10 on your arduino.
Finally link the ground rail of your breadboard to ground on your arduino.

Step 2: Breadboard Setup Sensor

I decided to use an LM35 simply because it worked for me but other sensor in a similar package should work.

Ben the sensors legs into 3 lanes on the breadboard, use the image above to wire out 5v to arduino 5v, analogue voltage out to arduino A0 and Ground to the ground rail on the breadboard.

Your breadboard should now be setup.

Step 3: The Code

The code itself is very beginner code as I am still working on a way to condense it using the array functionality.

Apologies, i thought the code was in already on text form.
float temp;
int tempPin = 0;
int pin2 = 2;
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin7 = 7;
int pin8 = 8;
int pin9 = 9;
int pin10 = 10;
void setup()
{
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin4, OUTPUT);
  pinMode(pin5, OUTPUT);
  pinMode(pin7, OUTPUT);
  pinMode(pin8, OUTPUT);
  pinMode(pin9, OUTPUT);
  pinMode(pin10, OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  temp = analogRead(tempPin);
  temp = (5.0 * temp * 100.0)/1024.0;
  Serial.print(temp);
  Serial.println();
  if(temp>=16.00){digitalWrite(pin10,HIGH);}
  if(temp>=17.00){digitalWrite(pin9,HIGH);}
  if(temp>=18.00){digitalWrite(pin8,HIGH);}
  if(temp>=19.00){digitalWrite(pin7,HIGH);}
  if(temp>=20.00){digitalWrite(pin5,HIGH);}
  if(temp>=21.00){digitalWrite(pin4,HIGH);}
  if(temp>=22.00){digitalWrite(pin3,HIGH);}
  if(temp>=23.00){digitalWrite(pin2,HIGH);}
  delay(99);
  digitalWrite(pin10,LOW);
  digitalWrite(pin9,LOW);
  digitalWrite(pin8,LOW);
  digitalWrite(pin7,LOW);
  digitalWrite(pin5,LOW);
  digitalWrite(pin4,LOW);
  digitalWrite(pin3,LOW);
  digitalWrite(pin2,LOW);
  delay(1);
}

Step 4: Done

Please give me feedback and opinions.

Share

Recommendations

  • Growing Beyond Earth Maker Contest

    Growing Beyond Earth Maker Contest
  • Backyard Contest

    Backyard Contest
  • Fandom Contest

    Fandom Contest

12 Discussions

0
None
xanderdk

5 years ago on Introduction

Nice instructable, just use screen shots instead off cam pictures. And people using the TMP36 sensor be aware that you need to do some changes in the "temp" part of the code otherwise you will get wrong readings and your led's will be on all the time.

2 replies
0
None
AlistairMxanderdk

Reply 5 years ago on Introduction

Thank you for the feedback, it was a slightly rushed first instructable. Instructables that followed have labeled and referred to screenshots.

0
None
xanderdkAlistairM

Reply 5 years ago on Introduction

Oh okay cool, haven't seen your others yet but i will follow your work. Keep up the good work.

0
None
AlistairM

5 years ago

I would be really interested to see the code, I have a pack of ten registers and I jus got some 7 segs. Be nice to see how you accounted for each temperature as I am fairly new to coding.

1 reply
0
None

if you click the reply under the comment it will let the author know you replied.

I don't know if there is something different between the TMP36 vs LM35. But I tweaked it a bit and it works now. The Serial is outputting 22.27C which is more realistic.


float temp;
int tempPin = 0;
int pin2 = 2;
int pin3 = 3;
int pin4 = 4;
int pin5 = 5;
int pin7 = 7;
int pin8 = 8;
int pin9 = 9;
int pin10 =10;
void setup()
{
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
pinMode(pin7, OUTPUT);
pinMode(pin8, OUTPUT);
pinMode(pin9, OUTPUT);
pinMode(pin10, OUTPUT);
Serial.begin(9600);
}

void loop()
{
temp = analogRead(tempPin)*.004882814;
temp =(temp - .5) * 100;
Serial.print("TEMPERATURE = ");
Serial.print(temp);
Serial.print("*C");
Serial.println();
if(temp>=18){digitalWrite(pin10,HIGH);}
if(temp>=19){digitalWrite(pin9,HIGH);}
if(temp>=20){digitalWrite(pin8,HIGH);}
if(temp>=21){digitalWrite(pin7,HIGH);}
if(temp>=22){digitalWrite(pin5,HIGH);}
if(temp>=23){digitalWrite(pin4,HIGH);}
if(temp>=24){digitalWrite(pin3,HIGH);}
if(temp>=25){digitalWrite(pin2,HIGH);}
delay(99);
digitalWrite(pin10, LOW);
digitalWrite(pin9, LOW);
digitalWrite(pin8, LOW);
digitalWrite(pin7, LOW);
digitalWrite(pin5, LOW);
digitalWrite(pin4, LOW);
digitalWrite(pin3, LOW);
digitalWrite(pin2, LOW);
delay(1);
}

0
None
KDLaun

5 years ago on Introduction

Enjoyed looking at your project. I did something very similar a while ago as my first "scratch" Arduino project. Mine utilized a TMP36 sensor and sixteen 10mm LEDs, for a very large display (barely fit on my breadboard). By using a couple of 74HC595 shift register ICs, I could drive all of them with just 3 Arduino pins. Something I did with mine that you could easily adapt to yours was to add provisions in the code for the range of temperatures I wanted to display.

I suppose I really should post it here on Instructables, someone might get an idea or two or tell me how I can improve on it.

DSC00589.JPG
0
None
AlistairM

5 years ago

I do apologise I thought I had entered the code. Check the data sheet, is the LM 36 by any a Fahrenheit orientated sensor?

0
None
AlistairM

5 years ago

Thank you for the feedback, in future I will use screen capture. I was just in a hurry. Let me know how your version works out.

2 replies

never mind i got it to work, its hard to read the brackets vs parentheses
You should paste the code as text in the instructable.

Im using a tmp 36, my serial output says its 72C. Any idea what im doing wrong?

0
None
AlistairM

5 years ago

Just an general question to the world, are my pictures of a suitable and legible quality?

0
None

this looks exciting, i got all the parts so im gonna build this, this evening.

One suggestion, use screen captures instead of taking a picture of your computer monitor. Its cleaner, better quality and its easier. (mash CTRL and PRT SC) then you can paste in your favorite image editing program.