Этот скетч позволяет измерять температуру с помощью цифрового датчика DS18B20 и выводить её на LCD-дисплей 1602 (I2C).
Необходимые компоненты:
Плата Arduino (Uno, Nano и др.)
Датчик температуры DS18B20 (водонепроницаемый или в TO-92 корпусе)
LCD-дисплей 1602 с интерфейсом I2C
Резистор 4.7 кОм (для датчика DS18B20)
Провода
Скетч
#include <OneWire.h> // Библиотека для работы с 1-Wire
#include <DallasTemperature.h> // Библиотека для DS18B20
#include <LiquidCrystal_I2C.h> // Библиотека для LCD 1602 (I2C)
// Настройка LCD (адрес I2C, размер дисплея)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Пин для датчика DS18B20
#define ONE_WIRE_BUS 2
// Настройка OneWire и DallasTemperature
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600); // Инициализация Serial-порта
lcd.init(); // Инициализация LCD
lcd.backlight(); // Включение подсветки
sensors.begin(); // Инициализация датчика температуры
}
void loop() {
sensors.requestTemperatures(); // Запрос температуры
float tempC = sensors.getTempCByIndex(0); // Получаем температуру в °C
// Вывод на LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature:");
lcd.setCursor(0, 1);
lcd.print(tempC);
lcd.print(" C");
// Вывод в Serial Monitor (опционально)
Serial.print("Temperature: ");
Serial.print(tempC);
Serial.println(" °C");
delay(1000); // Обновление раз в секунду
}
Как это работает?
Библиотеки:
OneWire
– для работы с интерфейсом 1-Wire (к которому подключён DS18B20).DallasTemperature
– упрощает работу с датчиком.LiquidCrystal_I2C
– управление LCD через I2C (экономит пины Arduino).
Настройка:
Датчик DS18B20 подключается к пину 2 (можно изменить).
LCD 1602 I2C обычно имеет адрес 0x27 (может быть 0x3F, проверьте сканером I2C).
Измерение температуры:
sensors.requestTemperatures()
– отправляет запрос датчику.sensors.getTempCByIndex(0)
– получает температуру в °C (если датчик один, индекс0
).
Вывод данных:
На LCD: первая строка – заголовок, вторая – температура.
В Serial Monitor (для отладки).
Подключение компонентов
DS18B20:
Красный (VDD) → 5V
Чёрный (GND) → GND
Жёлтый (DQ) → Пин 2 + 4.7 кОм к 5V (подтяжка)
LCD 1602 (I2C):
GND → GND
VCC → 5V
SDA → A4 (Uno) / SDA (Nano)
SCL → A5 (Uno) / SCL (Nano)
Улучшения скетча
Добавьте второй датчик (измените индекс в
getTempCByIndex(1)
).Графический вывод – можно использовать OLED-дисплей и библиотеку
U8g2
.
Этот скетч полезен для мониторинга температуры в теплицах, аквариумах или системах умного дома. ????????