Arduino with LM35 temperature sensor and ST7735 color display
- Calibrated Directly in ° Celsius (Centigrade)
- Linear + 10 mV/°C Scale Factor
- 0.5°C Ensured Accuracy (at +25°C)
- Rated for Full −55°C to +150°C Range
- Suitable for Remote Applications
- Low Cost Due to Wafer-Level Trimming
- Operates from 4 to 30 V
- Less than 60-μA Current Drain
- Low Self-Heating, 0.08°C in Still Air
- Nonlinearity Only ±¼°C Typical
- Low Impedance Output, 0.1 Ω for 1 mA Load
- Arduino board
- ST7735S (ST7735R) TFT screen
- LM35 temperature sensor —-> datasheet
- 5 x 1k ohm resistor
- Breadboard
- Jumper wires


1
2
|
#include <Adafruit_GFX.h> // include Adafruit graphics library
#include <Adafruit_ST7735.h> // include Adafruit ST7735 TFT library
|
1
2
3
|
#define TFT_RST 8 // TFT RST pin is connected to arduino pin 8
#define TFT_CS 9 // TFT CS pin is connected to arduino pin 9
#define TFT_DC 10 // TFT DC pin is connected to arduino pin 10
|
1
|
tCelsius = 10 * analogRead(LM35_pin) / 9.3;
|
1
|
sprintf(_buffer, "%03u.%1u K", tKelvin / 10, tKelvin % 10);
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/*
* Arduino with LM35 analog temperature sensor and ST7735 color TFT (128x160 pixel)
* This is a free software with NO WARRANTY.
* http://simple-circuit.com/
*/
#include <Adafruit_GFX.h> // include Adafruit graphics library
#include <Adafruit_ST7735.h> // include Adafruit ST7735 TFT library
#define TFT_RST 8 // TFT RST pin is connected to arduino pin 8
#define TFT_CS 9 // TFT CS pin is connected to arduino pin 9
#define TFT_DC 10 // TFT DC pin is connected to arduino pin 10
// initialize ST7735 TFT library
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
// define LM35 data pin connection
#define LM35_pin A0
void setup(void)
{
analogReference(INTERNAL); // set positive reference voltage to 1.1V
tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab
tft.fillScreen(ST7735_BLACK); // fill screen with black color
tft.drawFastHLine(0, 44, tft.width(), ST7735_BLUE); // draw horizontal blue line at position (0, 44)
tft.setTextColor(ST7735_WHITE, ST7735_BLACK); // set text color to white and black background
tft.setTextSize(1); // text size = 1
tft.setCursor(4, 10); // move cursor to position (4, 10) pixel
tft.print("ARDUINO + ST7735 TFT");
tft.setCursor(25, 27); // move cursor to position (25, 27) pixel
tft.print("+ LM35 SENSOR");
tft.setTextColor(ST7735_GREEN, ST7735_BLACK); // set text color to green and black background
tft.setCursor(15, 55); // move cursor to position (15, 55) pixel
tft.print("LM35 TEMPERATURE:");
tft.setTextSize(2); // text size = 2
}
// main loop
void loop()
{
char _buffer[8];
// read analog voltage ( = tenths degree Celsius)
// 9.3 = 1023/(1.1*100)
int tCelsius = 10 * analogRead(LM35_pin) / 9.3;
int tKelvin = tCelsius + 2732; // convert tenths °C to tenths Kelvin
int tFahrenheit = tCelsius * 9/5 + 320 ; // convert tenths °C to tenths °Fahrenheit
// print temperature in degree Celsius
if (tCelsius >= 1000) // if temperature >= 100.0 °C
sprintf(_buffer, "%03u.%1u", tCelsius / 10, tCelsius % 10);
else
sprintf(_buffer, " %02u.%1u", tCelsius / 10, tCelsius % 10);
tft.setCursor(23, 77);
tft.setTextColor(ST7735_RED, ST7735_BLACK); // set text color to red and black background
tft.print(_buffer);
tft.drawCircle(89, 79, 2, ST7735_RED); // print degree symbol ( ° )
tft.setCursor(95, 77);
tft.print("C");
// print temperature in degree Fahrenheit
if (tFahrenheit >= 1000) // if temperature >= 100.0 °F
sprintf(_buffer, "%03u.%1u", tFahrenheit / 10, tFahrenheit % 10);
else
sprintf(_buffer, " %02u.%1u", tFahrenheit / 10, tFahrenheit % 10);
tft.setCursor(23, 106);
tft.setTextColor(ST7735_YELLOW, ST7735_BLACK); // set text color to yellow and black background
tft.print(_buffer);
tft.drawCircle(90, 108, 2, ST7735_YELLOW); // print degree symbol ( ° )
tft.setCursor(95, 106);
tft.print("F");
// print temperature in Kelvin
char _buffer1[8];
sprintf(_buffer, "%03u.%1u K", tKelvin/10, tKelvin % 10);
tft.setCursor(23, 135);
tft.setTextColor(ST7735_CYAN, ST7735_BLACK); // set text color to cyan and black background
tft.print(_buffer);
delay(1000); // wait a second
}
// end of code.
|