Arduino термометр на LCD с датчиком LM35/36 — простой проект для новичка
Компоненты и расходники
| Arduino UNO | × | 1 |
| Датчик температуры LM35 или LM36 | × | 1 |
| LCD 16×2 (белый на синем) | × | 1 |
| Перемычки | × | 1 |
| Макетная плата (breadboard) | × | 1 |
| Потенциометр 10 кОм (для контраста LCD) — можно 50 кОм | × | 1 |
О проекте

Привет! Покажу, как сделать LCD-термометр на Arduino UNO и аналоговом датчике LM35/36. Проект идеален для начинающих: не требует навыков инженерии или программирования, сборка < 10 минут (если детали есть).
Шаг 1: Подготовка деталей




Список:
- 1× Arduino UNO
- 1× Breadboard
- 1× LCD 16×2
- 1× LM35 или LM36
- 1× Потенциометр 10 кОм (для контраста)
- 19× Перемычки
Всё есть в официальном Arduino Starter Kit (arduino.cc) или отдельно: Adafruit, SparkFun, Aliexpress, Banggood.
Шаг 2: Сборка

По схеме Fritzing: вставьте LCD в бредборд, соедините с Arduino перемычками. Потенциометр: крайние ноги на GND и +5V, средняя на вывод контраста LCD (обычно pin 3 / VO). Датчик LM35: VCC → +5V, GND → GND, OUT → A0 Arduino. Внимание: не перепутайте питание датчика — он может нагреться до 280°C и сгореть.
Шаг 3: Программирование

Загрузите один из двух скетчей через Arduino IDE (скачать с arduino.cc). Если на LCD пусто или квадратики — покрутите потенциометр, пока символы не станут чёткими. Готово! Можете измерять температуру воздуха дома или на улице.
Скетч 1 (от Gaige Kerns, работает с LM35 и LM36)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // RS, E, D4, D5, D6, D7
int sensorPin = 0; // A0
int tempC, tempF;
void setup() {
lcd.begin(16, 2);
}
void loop() {
tempC = get_temperature(sensorPin);
tempF = celsius_to_fahrenheit(tempC);
lcd.setCursor(0, 0);
lcd.print(tempF);
lcd.print(" ");
lcd.print((char)223); // символ градуса
lcd.print("F");
delay(200);
}
int get_temperature(int pin) {
int reading = analogRead(pin);
float voltage = reading * 5.0 / 1024.0;
return (voltage - 0.5) * 100; // для LM35/LM36: 10 мВ/°C, смещение 0.5В
}
int celsius_to_fahrenheit(int temp) {
return (temp * 9 / 5) + 32;
}
Скетч 2 (прямой расчёт в мВ)
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int inPin = 0; // A0
void setup() {
lcd.begin(16, 2);
}
void loop() {
int value = analogRead(inPin);
float millivolts = (value / 1024.0) * 5000;
float celsius = millivolts / 10; // LM35: 10 мВ/°C
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(celsius);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print((celsius * 9) / 5 + 32);
lcd.print("F");
delay(1000);
}
Оба варианта работают. Первый показывает только °F, обновляется каждые 200 мс. Второй показывает °C и °F на двух строках, обновляется раз в секунду. Выбирайте по вкусу.
Производственный процесс
- Создание быстрой надежной системы обнаружения пожара с Samsung SAMI, Arduino UNO и Raspberry Pi
- Панель управления полётным симулятором 2020 на Arduino Nano: LCD и CDI-дисплеи
- Часы реального времени на Arduino с расчётом времени намаза
- Создание анимации и игр на LCD 16×2 с Arduino UNO
- Вывод изображений на 1.17-дюймовый TFT LCD с Arduino UNO
- Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)
- Модуль GPS u-blox LEA-6H 02: Интеграция с Arduino и Python
- Освоение распознавания и синтеза речи на Arduino Due
- Надёжные будильник на DS1302 RTC и Arduino UNO — сборка и код
- Управление 4-пиновым PWM-вентилятором 25 кГц на Arduino Uno — Сборка, код и тесты