Sketch LM35 - ArduinoUNO - 7segmen (4 PCS)
Sketch LM35 - ArduinoUNO - 7segmen (4 PCS)
This topic shows how to make a simple temperature measurement station using Arduino UNO
board and LM35 analog temperature sensor where temperature value is displayed on 3-digit 7-
segment display.
The LM35 temperature sensor is a three pin device (VCC, OUT and GND) with an output voltage
linearly related to Centigrade temperature. Since the LM35 output varies with dependent to
the temperature, we need an ADC (Analog-to-Digital Converter) module to measure this
voltage.
To see how to interface Arduino with 7-segment display visit the following post:
Interfacing Arduino with 7-segment display | 4-Digit counter example
Also for more details about the LM35 sensor and how to interface it with Arduino, see this
project:
Arduino and LM35 temperature sensor interfacing
Hardware Required:
Arduino UNO board
3-Digit (or 4-digit) common anode 7-segment display
LM35 temperature sensor —-> datasheet
3 x PNP transistor (2SA1015, 2S9015, 2N3906 …)
8 x 100 ohm resistor
3 x 4.7k ohm resistor
Breadboard
Jumper wires
// variable declarations
byte current_digit;
int temp;
void setup()
{
pinMode(SegA, OUTPUT);
pinMode(SegB, OUTPUT);
pinMode(SegC, OUTPUT);
pinMode(SegD, OUTPUT);
pinMode(SegE, OUTPUT);
pinMode(SegF, OUTPUT);
pinMode(SegG, OUTPUT);
pinMode(SegDP, OUTPUT);
pinMode(Dig1, OUTPUT);
pinMode(Dig2, OUTPUT);
pinMode(Dig3, OUTPUT);
switch (current_digit)
{
case 1:
disp((temp / 100) % 10);
digitalWrite(Dig1, LOW); // turn on digit 1
break;
case 2:
disp( (temp / 10) % 10); // prepare to display digit 2
digitalWrite(SegDP, LOW); // print decimal point ( . )
digitalWrite(Dig2, LOW); // turn on digit 2
break;
case 3:
disp(temp % 10); // prepare to display digit 3
digitalWrite(Dig3, LOW); // turn on digit 3
}
current_digit = (current_digit % 3) + 1;
}
// main loop
void loop()
{
temp = 10 * analogRead(LM35_pin) / 9.3; // read analog voltage and convert it to °C ( 9.3 =
1023/(1.1*100) )
case 1: // print 1
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH);
digitalWrite(SegDP, HIGH);
break;
case 2: // print 2
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, HIGH);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, LOW);
digitalWrite(SegDP, HIGH);
break;
case 3: // print 3
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, LOW);
digitalWrite(SegDP, HIGH);
break;
case 4: // print 4
digitalWrite(SegA, HIGH);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
digitalWrite(SegDP, HIGH);
break;
case 5: // print 5
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
digitalWrite(SegDP, HIGH);
break;
case 6: // print 6
digitalWrite(SegA, LOW);
digitalWrite(SegB, HIGH);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
digitalWrite(SegDP, HIGH);
break;
case 7: // print 7
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, HIGH);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, HIGH);
digitalWrite(SegG, HIGH);
digitalWrite(SegDP, HIGH);
break;
case 8: // print 8
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, LOW);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
digitalWrite(SegDP, HIGH);
break;
case 9: // print 9
digitalWrite(SegA, LOW);
digitalWrite(SegB, LOW);
digitalWrite(SegC, LOW);
digitalWrite(SegD, LOW);
digitalWrite(SegE, HIGH);
digitalWrite(SegF, LOW);
digitalWrite(SegG, LOW);
digitalWrite(SegDP, HIGH);
}
}
void disp_off()
{
digitalWrite(Dig1, HIGH);
digitalWrite(Dig2, HIGH);
digitalWrite(Dig3, HIGH);
}
// end of code.