Датчик температуры DS18B20 и LCD дисплей
В этой статье, доработаю показанный ранее пример с датчиком DS18B20+, вывод температуры через последовательный монитор порта, является полезным, но мало практичным. В примере будем выводить температуру на LCD-дисплей работающий по протоколу I2C.

Датчик температуры DS18B20 и LCD дисплей
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD-дисплей 1602A (2×16, 5V, Синий) x 1 шт.
► Интерфейсный модуль IIC, I2C, TWI для LCD x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
► Датчик температуры DS18b20+ x 1 шт.
► Резистор 4.7 кОм x 1 шт.
► Макетная плата MB-102 (Breadboard) x 1 шт.
Подключение:
Для вывода температуры на LCD дисплей с датчика DS18b20, будем использовать плату Arduino UNO. Собираем схему, которая показана ниже, для удобства дополнительно нарисовал таблицу подключения.

Таблица подключение
В примере используется три дополнительных библиотеки LiquidCrystal_I2C, DallasTempature и OneWire, необходимо скачать их и установить, без них скетч не заработает. Далее, скачиванием скетч и запускаем среду разработки IDE, если все правильно сделали, на дисплее отобразится температура.
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 |
/* Тестировалось на Arduino IDE 1.6.12 Дата тестирования 23.12.2016г. */ #include <Wire.h> // Подключаем библиотеку Wire #include <LiquidCrystal_I2C.h> // Подключаем библиотеку LiquidCrystal_I2C #include <DallasTemperature.h> // Подключаем библиотеку DallasTempature #define DS18B20 2 // Указываем, к какому выводу подключена DQ byte simvol[8] = {B11100,B10100,B11100,B00000,B00000,B00000,B00000,B00000,}; // Символ градуса LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размер дисплея OneWire oneWire(DS18B20); DallasTemperature sensors(&oneWire); void setup() { sensors.begin(); // Запуск библиотеки, по умолчанию 9 бит, то есть кратность 0.5 градуса lcd.init(); // Инициализация lcd lcd.backlight(); // Включаем подсветку lcd.setCursor(2,0); // Устанавливаем курсор на 1 строку, ячейка 2 lcd.print("TEMP"); // Выводим текст lcd.setCursor(0,1); // Устанавливаем курсор на 2 строку, ячейка 2 lcd.print("www.robotchip.ru"); // Выводим текст } void loop() { lcd.createChar(1, simvol); // Создаем символ под номером 1 sensors.requestTemperatures(); // Считываем показания температуры lcd.setCursor(7,0); // Устанавливаем курсор на 1 строку, ячейка 7 lcd.print(sensors.getTempCByIndex(0)); // Выводим показания температуры lcd.setCursor(12,0); // Устанавливаем курсор на 1 строку, ячейка 12 lcd.print("\1"); // Выводим символ градуса lcd.setCursor(13,0); // Устанавливаем курсор на 1 строку, ячейка 13 lcd.print("C"); // Выводим текст } |
Описание команд, можно посмотреть в комментариях, в скетч добавлен символ градуса.
Ссылки Скачать библиотеку DallasTemperature
Скачать библиотеку OneWire v.2.2
Скачать библиотеку LiquidCrystal_I2C
Документация к LCD1602A
Купить на Aliexpress Контроллер Arduino UNO R3
Комплект проводов DuPont, 2,54 мм, 20 см
Датчик температуры DS18b20+
LCD-дисплей 1602A
Купить в Самаре и области Купить контроллер Arduino UNO R3 в г. Самаре
Купить провода DuPont, 2,54 мм, 20 см в г. Самаре
Купить датчик температуры DS18b20+ в г. Самаре
Символ «градуса» можно не создавать. Он есть в синем дисплее.
Спасибо, да и правда есть такой символ.
подскажите пожалуйста в чём проблема? скетч загрузил, подключил. на экране информация:
TEMP -127. C
http://www.rchip.ru
температура не изменяется. датчик DS18B20 модуль
Братцы, если есть возможность, помогите плиз в такой проблеме.
Решил я тут недавно слегка автоматизировать процесс самогоноварения.))) чем давно и плодотворно занимаюсь. точнее, не то чтобы автоматизировать, а обезопасить процесс в случае всяко-разных нештатных ситуаций. а именно: 1. отключение подачи воды на холодильник самогонного аппарата , 2. заполнение готовым продуктом «до верха» емкости, в которую он льется. имеется: Arduino UNO, реле, датчик температуры ds18b20, датчик уровня жидкости, жк-дисплей, аналогичный рассмотренному в примере выше. вопрос в следующем. поскольку я кодить давно разучился, да и кодил исключительно на машинах типа Искра-1256 (прошу не ржать!), подскажите, как прикрутить к коду приведенного примера: а.)управление на отключение нагрева перегонного куда (индукционная плита) посредством управляющего реле, выдача звукового сигнала, когда емкость с самогоном (ням-ням) заполнена доверху, т.е. датчик уровня жидкости отсигналил об этом.
Буду очень признателен, если поможете, добрые люди.))
Тоже хочу сделать подобное чудо.
+ хочу сделать полную автономку. т.е. регулировку температуры атоматом.
Ктож скоро казенку пить будет? Тоже варю-гоню. Ни как у меня компиляция не проходит. Библиотеки DallasTemperature и LiquidCrystal_I2C не видит.
Добрый день, проверьте расположение библиотек DallasTemperature и LiquidCrystal_I2C в каталоге C:\Users\ваш профиль\Documents\Arduino\libraries
Спасибо. Все проверил. Помогла переустановка программы. Сейчас пишет ошибка кампиляции для платы WAWCAT. Плату я уже удачно спалил. Сейчас заказал рекомендованую в теме. Но при выборе любой платы в программе ошибка не проходит.
Всё проверил. Сначала не работало, а потом понял, что на схеме резистор не в питание вставлен, а в землю 🙂
Спасибо за статью, очень помог!
Добрый день, только начал изучать программирование, будьте добры, скажите в какой среде разработки вы работаете?
По дизайну программы сориентироваться не получается
Здравствуйте, среда разработки Arduino IDE, скачать можно бесплатно с официального сайта arduino.cc
Спасибо, очень вам признателен за столь быстрый ответ =)
Сергей, можно ли с вами как-то связаться?
Или, возможно, в обсуждении к данной статье удастся решить следующих вопрос — при загрузке программы в Arduino Nano высвечивается следующая ошибка:
«avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x3a»
И так до десяти попыток, потом загрузка прерывается, значение после «resp=0x» часто меняется
Возможно вы знаете как это исправить? Все параметры и порты указал в IDE правильно, пробовал выставлять разные программаторы в инструментах, но результат один
Хочу прошить ARDUINO NANO V3 AVR ATM328P-20AU CH340
Разумеется, буду безумно вам признателен, если поможете решить мою проблему
Добрый день, пищите на почту или в вайбер, телефон на странице контакты.
Нашёл решение проблемы, оказалось, что для записи программы в клон Нано необходимо установить следующий Драйвер — CH341SER, без него Arduino IDE работает только с оригинальными платами =)